From 006cc0c28a29280d3b7136525d33140128b86f04 Mon Sep 17 00:00:00 2001 From: ember <1279347317@qq.com> Date: Thu, 17 Apr 2025 13:32:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B3=A8=E5=86=8C/=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ dist/css/{app.e718c3df.css => app.f396ca5c.css} | 2 +- dist/index.html | 2 +- dist/js/{11.9b7f914d.js => 11.6ebf0bde.js} | 4 ++-- dist/js/{5.d13e79c5.js => 5.56366bd5.js} | 2 +- dist/js/{663.febdcac8.js => 663.5ba8d078.js} | 4 ++-- dist/js/app.3e603614.js | 2 -- dist/js/app.7fc1c65c.js | 2 ++ src/components/Login.vue | 4 ++-- 9 files changed, 13 insertions(+), 11 deletions(-) rename dist/css/{app.e718c3df.css => app.f396ca5c.css} (86%) rename dist/js/{11.9b7f914d.js => 11.6ebf0bde.js} (99%) rename dist/js/{5.d13e79c5.js => 5.56366bd5.js} (99%) rename dist/js/{663.febdcac8.js => 663.5ba8d078.js} (99%) delete mode 100644 dist/js/app.3e603614.js create mode 100644 dist/js/app.7fc1c65c.js diff --git a/.gitignore b/.gitignore index 47c1b49..66a58ef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ node_modules *.js.map server draft +docs +东北大学.com # local env files .env.local diff --git a/dist/css/app.e718c3df.css b/dist/css/app.f396ca5c.css similarity index 86% rename from dist/css/app.e718c3df.css rename to dist/css/app.f396ca5c.css index 2c2d932..1e8353a 100644 --- a/dist/css/app.e718c3df.css +++ b/dist/css/app.f396ca5c.css @@ -1 +1 @@ -*{margin:0;padding:0;box-sizing:border-box}body,html{font-family:Helvetica Neue,Helvetica,Arial,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5;color:#333;background-color:#f8f9fa}#app{min-height:100vh;display:flex;flex-direction:column}a{text-decoration:none;color:inherit}img{max-width:100%;height:auto}.beian-footer{background-color:#f8f9fa;padding:15px 0;text-align:center;font-size:12px;color:#777;border-top:1px solid #e9ecef;margin-top:auto}.beian-footer a{color:#666}.beian-footer a:hover{color:#3273dc}.copyright{margin-top:8px}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 15px}.message-overlay[data-v-076938bc]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.message-box[data-v-076938bc]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);width:400px;max-width:90%;overflow:hidden;animation:message-in-076938bc .3s ease}.message-header[data-v-076938bc]{padding:16px 20px;border-bottom:1px solid #f0f0f0}.message-header h3[data-v-076938bc]{margin:0;font-size:16px;font-weight:600;color:#333}.message-content[data-v-076938bc]{padding:20px;font-size:14px;color:#555;line-height:1.6}.message-content p[data-v-076938bc]{margin:0;margin-bottom:1rem}.message-content .input-wrapper[data-v-076938bc]{margin-top:1rem}.message-content .input-wrapper .message-input[data-v-076938bc]{width:100%;padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;line-height:1.5;color:#606266;transition:border-color .2s}.message-content .input-wrapper .message-input[data-v-076938bc]:focus{outline:none;border-color:#3273dc}.message-content .input-wrapper .message-input[data-v-076938bc]::-moz-placeholder{color:#c0c4cc}.message-content .input-wrapper .message-input[data-v-076938bc]::placeholder{color:#c0c4cc}.message-footer[data-v-076938bc]{padding:12px 20px;display:flex;justify-content:flex-end;gap:12px;border-top:1px solid #f0f0f0}.btn[data-v-076938bc]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s;border:none;outline:none}.btn-cancel[data-v-076938bc]{background-color:#f5f5f5;color:#666}.btn-cancel[data-v-076938bc]:hover{background-color:#e8e8e8}.btn-confirm[data-v-076938bc]{background-color:#3273dc;color:#fff}.btn-confirm[data-v-076938bc]:hover{background-color:#2366d1}.message-fade-enter-active[data-v-076938bc],.message-fade-leave-active[data-v-076938bc]{transition:opacity .3s}.message-fade-enter-from[data-v-076938bc],.message-fade-leave-to[data-v-076938bc]{opacity:0}@keyframes message-in-076938bc{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:768px){.message-box[data-v-076938bc]{width:320px}.message-content[data-v-076938bc]{padding:16px}.message-footer[data-v-076938bc]{padding:10px 16px}}.login-container[data-v-514354c8]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:9999}.login-overlay[data-v-514354c8]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.login-box[data-v-514354c8]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:2rem;width:100%;max-width:400px;position:relative;z-index:1}.login-header[data-v-514354c8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.login-title[data-v-514354c8]{text-align:center;color:#333;font-size:1.5rem;margin:0;flex:1}.login-form[data-v-514354c8]{display:flex;flex-direction:column}.form-group[data-v-514354c8]{margin-bottom:1rem}label[data-v-514354c8]{display:block;margin-bottom:.5rem;font-weight:500}.form-input[data-v-514354c8]{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-input[data-v-514354c8]:focus{outline:none;border-color:#3273dc;box-shadow:0 0 0 2px rgba(50,115,220,.2)}.message[data-v-514354c8]{margin:1rem 0;padding:.75rem;border-radius:4px;text-align:center}.message.error[data-v-514354c8]{background-color:rgba(255,56,96,.1);color:#ff3860}.message.success[data-v-514354c8]{background-color:rgba(35,209,96,.1);color:#23d160}.button-group[data-v-514354c8]{display:flex;gap:1rem;margin-top:1rem}.btn[data-v-514354c8]{flex:1;padding:.75rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s,transform .2s}.btn[data-v-514354c8]:hover{transform:translateY(-2px)}.btn[data-v-514354c8]:active{transform:translateY(0)}.btn-primary[data-v-514354c8]{background-color:#3273dc;color:#fff}.btn-primary[data-v-514354c8]:hover{background-color:#2366d1}.btn-secondary[data-v-514354c8]{background-color:#f5f5f5;color:#333}.btn-secondary[data-v-514354c8]:hover{background-color:#e8e8e8}.modal[data-v-514354c8]{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}.modal.show[data-v-514354c8]{display:flex}.modal-content[data-v-514354c8]{background-color:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);width:90%;max-width:400px;overflow:hidden}.modal-header[data-v-514354c8]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee}.modal-header h3[data-v-514354c8]{margin:0;font-size:1.25rem}.modal-body[data-v-514354c8]{padding:1.5rem}.modal-footer[data-v-514354c8]{padding:1rem;border-top:1px solid #eee;text-align:right}.close-btn[data-v-514354c8]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666}.close-btn[data-v-514354c8]:hover{color:#333}.captcha-instruction[data-v-514354c8]{margin-bottom:1rem}.captcha-message[data-v-514354c8]{margin-top:.5rem;font-size:.9rem}.captcha-message.error[data-v-514354c8]{color:#ff3860}.captcha-message.success[data-v-514354c8]{color:#23d160}.loading-overlay[data-v-514354c8]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:2000}.spinner[data-v-514354c8]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3273dc;border-radius:50%;animation:spin-514354c8 1s linear infinite;margin-bottom:1rem}@keyframes spin-514354c8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media(max-width:480px){.login-box[data-v-514354c8]{padding:1.5rem}.button-group[data-v-514354c8]{flex-direction:column}.btn[data-v-514354c8]{margin-bottom:.5rem}}.navbar[data-v-43e84ec3]{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1);position:fixed;top:0;left:0;right:0;padding:.5rem 1rem;z-index:1000}.navbar .container[data-v-43e84ec3]{display:flex;align-items:center;max-width:1200px;margin:0 auto;position:relative;width:100%}.navbar .navbar-brand[data-v-43e84ec3]{display:flex;align-items:center;justify-content:space-between;flex:1}.navbar .navbar-logo[data-v-43e84ec3]{font-size:1.5rem;font-weight:700;color:#333;text-decoration:none;display:flex;align-items:center}.navbar .navbar-logo-img[data-v-43e84ec3]{width:30px;height:30px;margin-right:8px;-o-object-fit:contain;object-fit:contain}.navbar .burger-container[data-v-43e84ec3]{position:relative;display:inline-block}.navbar .navbar-burger[data-v-43e84ec3]{display:none;width:2rem;height:1.2rem;cursor:pointer;margin-left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-43e84ec3]{display:block;height:2px;width:74%;background-color:#333;transition:all .3s ease-in-out;position:absolute;left:0}.navbar .navbar-burger span[data-v-43e84ec3]:first-child{top:0}.navbar .navbar-burger span[data-v-43e84ec3]:nth-child(2){top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-43e84ec3]:nth-child(3){bottom:0}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:nth-child(2){opacity:0}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:first-child{top:50%;transform:translateY(-50%) rotate(45deg)}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:nth-child(3){bottom:50%;transform:translateY(50%) rotate(-45deg)}.navbar .navbar-menu[data-v-43e84ec3]{display:flex;align-items:center;transition:transform .3s ease,opacity .3s ease}.navbar .navbar-end[data-v-43e84ec3]{display:flex;align-items:center}.navbar .navbar-item[data-v-43e84ec3]{padding:.5rem 1rem;color:#333;text-decoration:none;transition:color .3s;white-space:nowrap}.navbar .navbar-item[data-v-43e84ec3]:hover{color:#3273dc}.navbar .user-dropdown[data-v-43e84ec3]{position:relative}.navbar .user-dropdown .user-info[data-v-43e84ec3]{display:flex;align-items:center;cursor:pointer;padding:.5rem}.navbar .user-dropdown .user-info[data-v-43e84ec3]:hover{background-color:#f5f5f5;border-radius:4px}.navbar .user-dropdown .user-avatar[data-v-43e84ec3]{width:30px;height:30px;border-radius:50%;margin-right:8px;-o-object-fit:cover;object-fit:cover}.navbar .user-dropdown .user-nickname[data-v-43e84ec3]{margin-right:4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar .user-dropdown .dropdown-arrow[data-v-43e84ec3]{font-size:12px;transition:transform .3s}.navbar .user-dropdown .dropdown-arrow.is-active[data-v-43e84ec3]{transform:rotate(180deg)}.navbar .user-dropdown .dropdown-menu[data-v-43e84ec3]{position:absolute;top:100%;right:0;background-color:#fff;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:120px;z-index:1001}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3]{padding:.75rem 1rem;cursor:pointer}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3]:hover{background-color:#f5f5f5}@media(max-width:768px){.navbar[data-v-43e84ec3]{padding:0}.navbar .navbar-brand[data-v-43e84ec3]{width:auto;padding:.5rem 1rem}.navbar .navbar-burger[data-v-43e84ec3]{display:flex;margin-left:1rem}.navbar .navbar-menu[data-v-43e84ec3]{display:block;position:absolute;top:100%;left:0;right:0;background-color:#fff;box-shadow:0 4px 6px rgba(0,0,0,.1);padding:.5rem 0;z-index:1000;opacity:0;transform:translateY(-20px);pointer-events:none}.navbar .navbar-menu.is-active[data-v-43e84ec3]{opacity:1;transform:translateY(0);pointer-events:auto}.navbar .navbar-end[data-v-43e84ec3]{flex-direction:column;align-items:stretch}.navbar .navbar-item[data-v-43e84ec3]{padding:.75rem 1.5rem;text-align:left;border-bottom:1px solid #f5f5f5}.navbar .navbar-item[data-v-43e84ec3]:last-child{border-bottom:none}.navbar .user-dropdown .dropdown-menu[data-v-43e84ec3]{position:static;box-shadow:none;border-top:1px solid #f5f5f5}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3],.navbar .user-dropdown .user-info[data-v-43e84ec3]{padding:.75rem 1.5rem}}.login-btn[data-v-43e84ec3]{color:#333;cursor:pointer;text-decoration:none;transition:color .3s}.login-btn[data-v-43e84ec3]:hover{color:#3273dc}.activation-dialog[data-v-43e84ec3]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.activation-dialog .activation-dialog-content[data-v-43e84ec3]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.activation-dialog .activation-dialog-content h3[data-v-43e84ec3]{font-size:1.5rem;margin-bottom:1rem;color:#333;text-align:center}.activation-dialog .activation-dialog-content p[data-v-43e84ec3]{margin-bottom:1.5rem;color:#666}.activation-dialog .activation-dialog-content .activation-methods[data-v-43e84ec3]{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.activation-dialog .activation-dialog-content .activation-method[data-v-43e84ec3]{background-color:#f9f9f9;padding:1rem;border-radius:6px;border:1px solid #eee}.activation-dialog .activation-dialog-content .activation-method h4[data-v-43e84ec3]{font-size:1.1rem;margin-bottom:.5rem;color:#444}.activation-dialog .activation-dialog-content .activation-method p[data-v-43e84ec3]{margin-bottom:1rem;color:#666;font-size:.9rem}.activation-dialog .activation-dialog-content .verify-btn[data-v-43e84ec3]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:500;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .verify-btn[data-v-43e84ec3]:hover{background-color:#2366d1}.activation-dialog .activation-dialog-content .close-btn[data-v-43e84ec3]{width:100%;background-color:#f0f0f0;color:#333;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .close-btn[data-v-43e84ec3]:hover{background-color:#e0e0e0}.unread-dot[data-v-43e84ec3]{display:inline-block;width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin-left:5px}.message-modal[data-v-43e84ec3]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.message-modal .message-modal-content[data-v-43e84ec3]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.message-modal .message-modal-content .message-modal-header[data-v-43e84ec3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-header h3[data-v-43e84ec3]{font-size:1.5rem;color:#333}.message-modal .message-modal-content .message-modal-header .close-icon[data-v-43e84ec3]{font-size:1.5rem;cursor:pointer}.message-modal .message-modal-content .message-modal-body .loading-spinner[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .no-messages[data-v-43e84ec3]{text-align:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-body .message-list[data-v-43e84ec3]{max-height:60vh;overflow-y:auto;padding-right:5px;margin-right:-5px}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-43e84ec3]{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-43e84ec3]:last-child{border-bottom:none}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header[data-v-43e84ec3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .message-time[data-v-43e84ec3]{font-size:.9rem;color:#666}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .unread-tag[data-v-43e84ec3]{background-color:#ff4d4f;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3]{font-size:1rem;color:#333}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:link,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:visited,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3] a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-43e84ec3]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:link:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:visited:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3] a:hover{text-decoration:underline!important;color:#2366d1!important}.message-modal .message-modal-content .message-modal-body .pagination[data-v-43e84ec3]{display:flex;justify-content:center;align-items:center;margin-top:1rem}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]:hover{background-color:#2366d1}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]:disabled{background-color:#f0f0f0;cursor:not-allowed}.message-modal .message-modal-content .message-modal-body .pagination .page-info[data-v-43e84ec3]{margin:0 1rem;font-size:.9rem;color:#666;display:flex;align-items:center}[data-v-43e84ec3] .message-modal-body a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}[data-v-43e84ec3] .message-modal-body a:hover{text-decoration:underline!important;color:#2366d1!important}.avatar-wrapper[data-v-43e84ec3]{position:relative;display:inline-block}.avatar-badge[data-v-43e84ec3]{position:absolute;top:0;right:0;width:8px;height:8px}.burger-badge[data-v-43e84ec3]{position:absolute;top:-13px;right:0;transform:translate(0);width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin:0;padding:0;display:none}@media(max-width:768px){.burger-badge[data-v-43e84ec3]{display:block}}.home[data-v-1c64fc58]{min-height:100vh;background-color:#f8f9fa;padding-top:60px}.container[data-v-1c64fc58]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.welcome-section[data-v-1c64fc58]{text-align:center;padding:3rem 1rem}.welcome-section img[data-v-1c64fc58]{width:150px;margin-bottom:2rem}.welcome-section h1[data-v-1c64fc58]{font-size:2.5rem;margin-bottom:1rem;color:#333}.welcome-section p[data-v-1c64fc58]{font-size:1.2rem;margin-bottom:2rem;color:#555}.welcome-section .intro-text[data-v-1c64fc58]{background-color:#fff;border-radius:10px;padding:2rem;margin-top:2rem;box-shadow:0 4px 15px rgba(0,0,0,.08);text-align:left;border-left:4px solid #f6be05;position:relative;overflow:hidden;max-width:800px;margin-left:auto;margin-right:auto}.welcome-section .intro-text[data-v-1c64fc58]:before{content:"";position:absolute;top:0;right:0;width:200px;height:200px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.welcome-section .intro-text p[data-v-1c64fc58]{position:relative;z-index:1;margin-bottom:1rem;font-size:1.1rem;line-height:1.6;color:#555}.welcome-section .intro-text p[data-v-1c64fc58]:last-child{margin-bottom:0}.welcome-section .cta-buttons[data-v-1c64fc58]{display:flex;justify-content:center;gap:1rem;margin-top:2rem}.welcome-section .cta-buttons .btn[data-v-1c64fc58]{padding:.75rem 1.5rem;border-radius:4px;font-weight:600;transition:all .3s;text-decoration:none}.welcome-section .cta-buttons .btn.btn-primary[data-v-1c64fc58]{background-color:#3273dc;color:#fff}.welcome-section .cta-buttons .btn.btn-primary[data-v-1c64fc58]:hover{background-color:#2366c9}.welcome-section .cta-buttons .btn.btn-secondary[data-v-1c64fc58]{background-color:#f5f5f5;color:#333}.welcome-section .cta-buttons .btn.btn-secondary[data-v-1c64fc58]:hover{background-color:#e8e8e8}@media(max-width:768px){.welcome-section[data-v-1c64fc58]{padding:2rem 1rem}.welcome-section h1[data-v-1c64fc58]{font-size:2rem}.welcome-section p[data-v-1c64fc58]{font-size:1rem}.welcome-section .intro-text[data-v-1c64fc58]{padding:1.5rem}.welcome-section .intro-text p[data-v-1c64fc58]{font-size:1rem}.welcome-section .cta-buttons[data-v-1c64fc58]{flex-direction:column;align-items:center}.welcome-section .cta-buttons .btn[data-v-1c64fc58]{width:100%;max-width:300px;margin-bottom:.5rem}} \ No newline at end of file +*{margin:0;padding:0;box-sizing:border-box}body,html{font-family:Helvetica Neue,Helvetica,Arial,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5;color:#333;background-color:#f8f9fa}#app{min-height:100vh;display:flex;flex-direction:column}a{text-decoration:none;color:inherit}img{max-width:100%;height:auto}.beian-footer{background-color:#f8f9fa;padding:15px 0;text-align:center;font-size:12px;color:#777;border-top:1px solid #e9ecef;margin-top:auto}.beian-footer a{color:#666}.beian-footer a:hover{color:#3273dc}.copyright{margin-top:8px}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 15px}.message-overlay[data-v-076938bc]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:9999}.message-box[data-v-076938bc]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);width:400px;max-width:90%;overflow:hidden;animation:message-in-076938bc .3s ease}.message-header[data-v-076938bc]{padding:16px 20px;border-bottom:1px solid #f0f0f0}.message-header h3[data-v-076938bc]{margin:0;font-size:16px;font-weight:600;color:#333}.message-content[data-v-076938bc]{padding:20px;font-size:14px;color:#555;line-height:1.6}.message-content p[data-v-076938bc]{margin:0;margin-bottom:1rem}.message-content .input-wrapper[data-v-076938bc]{margin-top:1rem}.message-content .input-wrapper .message-input[data-v-076938bc]{width:100%;padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;line-height:1.5;color:#606266;transition:border-color .2s}.message-content .input-wrapper .message-input[data-v-076938bc]:focus{outline:none;border-color:#3273dc}.message-content .input-wrapper .message-input[data-v-076938bc]::-moz-placeholder{color:#c0c4cc}.message-content .input-wrapper .message-input[data-v-076938bc]::placeholder{color:#c0c4cc}.message-footer[data-v-076938bc]{padding:12px 20px;display:flex;justify-content:flex-end;gap:12px;border-top:1px solid #f0f0f0}.btn[data-v-076938bc]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s;border:none;outline:none}.btn-cancel[data-v-076938bc]{background-color:#f5f5f5;color:#666}.btn-cancel[data-v-076938bc]:hover{background-color:#e8e8e8}.btn-confirm[data-v-076938bc]{background-color:#3273dc;color:#fff}.btn-confirm[data-v-076938bc]:hover{background-color:#2366d1}.message-fade-enter-active[data-v-076938bc],.message-fade-leave-active[data-v-076938bc]{transition:opacity .3s}.message-fade-enter-from[data-v-076938bc],.message-fade-leave-to[data-v-076938bc]{opacity:0}@keyframes message-in-076938bc{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:768px){.message-box[data-v-076938bc]{width:320px}.message-content[data-v-076938bc]{padding:16px}.message-footer[data-v-076938bc]{padding:10px 16px}}.login-container[data-v-086dd4a0]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:9999}.login-overlay[data-v-086dd4a0]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5)}.login-box[data-v-086dd4a0]{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:2rem;width:100%;max-width:400px;position:relative;z-index:1}.login-header[data-v-086dd4a0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.login-title[data-v-086dd4a0]{text-align:center;color:#333;font-size:1.5rem;margin:0;flex:1}.login-form[data-v-086dd4a0]{display:flex;flex-direction:column}.form-group[data-v-086dd4a0]{margin-bottom:1rem}label[data-v-086dd4a0]{display:block;margin-bottom:.5rem;font-weight:500}.form-input[data-v-086dd4a0]{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-input[data-v-086dd4a0]:focus{outline:none;border-color:#3273dc;box-shadow:0 0 0 2px rgba(50,115,220,.2)}.message[data-v-086dd4a0]{margin:1rem 0;padding:.75rem;border-radius:4px;text-align:center}.message.error[data-v-086dd4a0]{background-color:rgba(255,56,96,.1);color:#ff3860}.message.success[data-v-086dd4a0]{background-color:rgba(35,209,96,.1);color:#23d160}.button-group[data-v-086dd4a0]{display:flex;gap:1rem;margin-top:1rem}.btn[data-v-086dd4a0]{flex:1;padding:.75rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .3s,transform .2s}.btn[data-v-086dd4a0]:hover{transform:translateY(-2px)}.btn[data-v-086dd4a0]:active{transform:translateY(0)}.btn-primary[data-v-086dd4a0]{background-color:#3273dc;color:#fff}.btn-primary[data-v-086dd4a0]:hover{background-color:#2366d1}.btn-secondary[data-v-086dd4a0]{background-color:#f5f5f5;color:#333}.btn-secondary[data-v-086dd4a0]:hover{background-color:#e8e8e8}.modal[data-v-086dd4a0]{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}.modal.show[data-v-086dd4a0]{display:flex}.modal-content[data-v-086dd4a0]{background-color:#fff;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.2);width:90%;max-width:400px;overflow:hidden}.modal-header[data-v-086dd4a0]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #eee}.modal-header h3[data-v-086dd4a0]{margin:0;font-size:1.25rem}.modal-body[data-v-086dd4a0]{padding:1.5rem}.modal-footer[data-v-086dd4a0]{padding:1rem;border-top:1px solid #eee;text-align:right}.close-btn[data-v-086dd4a0]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666}.close-btn[data-v-086dd4a0]:hover{color:#333}.captcha-instruction[data-v-086dd4a0]{margin-bottom:1rem}.captcha-message[data-v-086dd4a0]{margin-top:.5rem;font-size:.9rem}.captcha-message.error[data-v-086dd4a0]{color:#ff3860}.captcha-message.success[data-v-086dd4a0]{color:#23d160}.loading-overlay[data-v-086dd4a0]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:2000}.spinner[data-v-086dd4a0]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3273dc;border-radius:50%;animation:spin-086dd4a0 1s linear infinite;margin-bottom:1rem}@keyframes spin-086dd4a0{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media(max-width:480px){.login-box[data-v-086dd4a0]{padding:1.5rem}.button-group[data-v-086dd4a0]{flex-direction:column}.btn[data-v-086dd4a0]{margin-bottom:.5rem}}.navbar[data-v-43e84ec3]{background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1);position:fixed;top:0;left:0;right:0;padding:.5rem 1rem;z-index:1000}.navbar .container[data-v-43e84ec3]{display:flex;align-items:center;max-width:1200px;margin:0 auto;position:relative;width:100%}.navbar .navbar-brand[data-v-43e84ec3]{display:flex;align-items:center;justify-content:space-between;flex:1}.navbar .navbar-logo[data-v-43e84ec3]{font-size:1.5rem;font-weight:700;color:#333;text-decoration:none;display:flex;align-items:center}.navbar .navbar-logo-img[data-v-43e84ec3]{width:30px;height:30px;margin-right:8px;-o-object-fit:contain;object-fit:contain}.navbar .burger-container[data-v-43e84ec3]{position:relative;display:inline-block}.navbar .navbar-burger[data-v-43e84ec3]{display:none;width:2rem;height:1.2rem;cursor:pointer;margin-left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-43e84ec3]{display:block;height:2px;width:74%;background-color:#333;transition:all .3s ease-in-out;position:absolute;left:0}.navbar .navbar-burger span[data-v-43e84ec3]:first-child{top:0}.navbar .navbar-burger span[data-v-43e84ec3]:nth-child(2){top:50%;transform:translateY(-50%)}.navbar .navbar-burger span[data-v-43e84ec3]:nth-child(3){bottom:0}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:nth-child(2){opacity:0}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:first-child{top:50%;transform:translateY(-50%) rotate(45deg)}.navbar .navbar-burger.is-active span[data-v-43e84ec3]:nth-child(3){bottom:50%;transform:translateY(50%) rotate(-45deg)}.navbar .navbar-menu[data-v-43e84ec3]{display:flex;align-items:center;transition:transform .3s ease,opacity .3s ease}.navbar .navbar-end[data-v-43e84ec3]{display:flex;align-items:center}.navbar .navbar-item[data-v-43e84ec3]{padding:.5rem 1rem;color:#333;text-decoration:none;transition:color .3s;white-space:nowrap}.navbar .navbar-item[data-v-43e84ec3]:hover{color:#3273dc}.navbar .user-dropdown[data-v-43e84ec3]{position:relative}.navbar .user-dropdown .user-info[data-v-43e84ec3]{display:flex;align-items:center;cursor:pointer;padding:.5rem}.navbar .user-dropdown .user-info[data-v-43e84ec3]:hover{background-color:#f5f5f5;border-radius:4px}.navbar .user-dropdown .user-avatar[data-v-43e84ec3]{width:30px;height:30px;border-radius:50%;margin-right:8px;-o-object-fit:cover;object-fit:cover}.navbar .user-dropdown .user-nickname[data-v-43e84ec3]{margin-right:4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar .user-dropdown .dropdown-arrow[data-v-43e84ec3]{font-size:12px;transition:transform .3s}.navbar .user-dropdown .dropdown-arrow.is-active[data-v-43e84ec3]{transform:rotate(180deg)}.navbar .user-dropdown .dropdown-menu[data-v-43e84ec3]{position:absolute;top:100%;right:0;background-color:#fff;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:120px;z-index:1001}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3]{padding:.75rem 1rem;cursor:pointer}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3]:hover{background-color:#f5f5f5}@media(max-width:768px){.navbar[data-v-43e84ec3]{padding:0}.navbar .navbar-brand[data-v-43e84ec3]{width:auto;padding:.5rem 1rem}.navbar .navbar-burger[data-v-43e84ec3]{display:flex;margin-left:1rem}.navbar .navbar-menu[data-v-43e84ec3]{display:block;position:absolute;top:100%;left:0;right:0;background-color:#fff;box-shadow:0 4px 6px rgba(0,0,0,.1);padding:.5rem 0;z-index:1000;opacity:0;transform:translateY(-20px);pointer-events:none}.navbar .navbar-menu.is-active[data-v-43e84ec3]{opacity:1;transform:translateY(0);pointer-events:auto}.navbar .navbar-end[data-v-43e84ec3]{flex-direction:column;align-items:stretch}.navbar .navbar-item[data-v-43e84ec3]{padding:.75rem 1.5rem;text-align:left;border-bottom:1px solid #f5f5f5}.navbar .navbar-item[data-v-43e84ec3]:last-child{border-bottom:none}.navbar .user-dropdown .dropdown-menu[data-v-43e84ec3]{position:static;box-shadow:none;border-top:1px solid #f5f5f5}.navbar .user-dropdown .dropdown-item[data-v-43e84ec3],.navbar .user-dropdown .user-info[data-v-43e84ec3]{padding:.75rem 1.5rem}}.login-btn[data-v-43e84ec3]{color:#333;cursor:pointer;text-decoration:none;transition:color .3s}.login-btn[data-v-43e84ec3]:hover{color:#3273dc}.activation-dialog[data-v-43e84ec3]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.activation-dialog .activation-dialog-content[data-v-43e84ec3]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.activation-dialog .activation-dialog-content h3[data-v-43e84ec3]{font-size:1.5rem;margin-bottom:1rem;color:#333;text-align:center}.activation-dialog .activation-dialog-content p[data-v-43e84ec3]{margin-bottom:1.5rem;color:#666}.activation-dialog .activation-dialog-content .activation-methods[data-v-43e84ec3]{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.5rem}.activation-dialog .activation-dialog-content .activation-method[data-v-43e84ec3]{background-color:#f9f9f9;padding:1rem;border-radius:6px;border:1px solid #eee}.activation-dialog .activation-dialog-content .activation-method h4[data-v-43e84ec3]{font-size:1.1rem;margin-bottom:.5rem;color:#444}.activation-dialog .activation-dialog-content .activation-method p[data-v-43e84ec3]{margin-bottom:1rem;color:#666;font-size:.9rem}.activation-dialog .activation-dialog-content .verify-btn[data-v-43e84ec3]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:500;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .verify-btn[data-v-43e84ec3]:hover{background-color:#2366d1}.activation-dialog .activation-dialog-content .close-btn[data-v-43e84ec3]{width:100%;background-color:#f0f0f0;color:#333;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.activation-dialog .activation-dialog-content .close-btn[data-v-43e84ec3]:hover{background-color:#e0e0e0}.unread-dot[data-v-43e84ec3]{display:inline-block;width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin-left:5px}.message-modal[data-v-43e84ec3]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:2000}.message-modal .message-modal-content[data-v-43e84ec3]{background-color:#fff;border-radius:8px;padding:2rem;max-width:90%;width:500px;box-shadow:0 4px 20px rgba(0,0,0,.15)}.message-modal .message-modal-content .message-modal-header[data-v-43e84ec3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-header h3[data-v-43e84ec3]{font-size:1.5rem;color:#333}.message-modal .message-modal-content .message-modal-header .close-icon[data-v-43e84ec3]{font-size:1.5rem;cursor:pointer}.message-modal .message-modal-content .message-modal-body .loading-spinner[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .no-messages[data-v-43e84ec3]{text-align:center;margin-bottom:1rem}.message-modal .message-modal-content .message-modal-body .message-list[data-v-43e84ec3]{max-height:60vh;overflow-y:auto;padding-right:5px;margin-right:-5px}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-43e84ec3]{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #f0f0f0}.message-modal .message-modal-content .message-modal-body .message-list .message-item[data-v-43e84ec3]:last-child{border-bottom:none}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header[data-v-43e84ec3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .message-time[data-v-43e84ec3]{font-size:.9rem;color:#666}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-header .unread-tag[data-v-43e84ec3]{background-color:#ff4d4f;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.8rem}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3]{font-size:1rem;color:#333}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3],.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:link,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:visited,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3] a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content .router-link-active[data-v-43e84ec3]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:link:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content a[data-v-43e84ec3]:visited:hover,.message-modal .message-modal-content .message-modal-body .message-list .message-item .message-content[data-v-43e84ec3] a:hover{text-decoration:underline!important;color:#2366d1!important}.message-modal .message-modal-content .message-modal-body .pagination[data-v-43e84ec3]{display:flex;justify-content:center;align-items:center;margin-top:1rem}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]{background-color:#3273dc;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer;transition:background-color .3s}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]:hover{background-color:#2366d1}.message-modal .message-modal-content .message-modal-body .pagination .page-btn[data-v-43e84ec3]:disabled{background-color:#f0f0f0;cursor:not-allowed}.message-modal .message-modal-content .message-modal-body .pagination .page-info[data-v-43e84ec3]{margin:0 1rem;font-size:.9rem;color:#666;display:flex;align-items:center}[data-v-43e84ec3] .message-modal-body a{color:#3273dc!important;text-decoration:none!important;font-weight:500!important}[data-v-43e84ec3] .message-modal-body a:hover{text-decoration:underline!important;color:#2366d1!important}.avatar-wrapper[data-v-43e84ec3]{position:relative;display:inline-block}.avatar-badge[data-v-43e84ec3]{position:absolute;top:0;right:0;width:8px;height:8px}.burger-badge[data-v-43e84ec3]{position:absolute;top:-13px;right:0;transform:translate(0);width:8px;height:8px;background-color:#ff4d4f!important;border-radius:50%;margin:0;padding:0;display:none}@media(max-width:768px){.burger-badge[data-v-43e84ec3]{display:block}}.home[data-v-1c64fc58]{min-height:100vh;background-color:#f8f9fa;padding-top:60px}.container[data-v-1c64fc58]{max-width:1200px;margin:0 auto;padding:2rem 1rem}.welcome-section[data-v-1c64fc58]{text-align:center;padding:3rem 1rem}.welcome-section img[data-v-1c64fc58]{width:150px;margin-bottom:2rem}.welcome-section h1[data-v-1c64fc58]{font-size:2.5rem;margin-bottom:1rem;color:#333}.welcome-section p[data-v-1c64fc58]{font-size:1.2rem;margin-bottom:2rem;color:#555}.welcome-section .intro-text[data-v-1c64fc58]{background-color:#fff;border-radius:10px;padding:2rem;margin-top:2rem;box-shadow:0 4px 15px rgba(0,0,0,.08);text-align:left;border-left:4px solid #f6be05;position:relative;overflow:hidden;max-width:800px;margin-left:auto;margin-right:auto}.welcome-section .intro-text[data-v-1c64fc58]:before{content:"";position:absolute;top:0;right:0;width:200px;height:200px;background:radial-gradient(circle at top right,rgba(50,115,220,.08),transparent 70%);z-index:0}.welcome-section .intro-text p[data-v-1c64fc58]{position:relative;z-index:1;margin-bottom:1rem;font-size:1.1rem;line-height:1.6;color:#555}.welcome-section .intro-text p[data-v-1c64fc58]:last-child{margin-bottom:0}.welcome-section .cta-buttons[data-v-1c64fc58]{display:flex;justify-content:center;gap:1rem;margin-top:2rem}.welcome-section .cta-buttons .btn[data-v-1c64fc58]{padding:.75rem 1.5rem;border-radius:4px;font-weight:600;transition:all .3s;text-decoration:none}.welcome-section .cta-buttons .btn.btn-primary[data-v-1c64fc58]{background-color:#3273dc;color:#fff}.welcome-section .cta-buttons .btn.btn-primary[data-v-1c64fc58]:hover{background-color:#2366c9}.welcome-section .cta-buttons .btn.btn-secondary[data-v-1c64fc58]{background-color:#f5f5f5;color:#333}.welcome-section .cta-buttons .btn.btn-secondary[data-v-1c64fc58]:hover{background-color:#e8e8e8}@media(max-width:768px){.welcome-section[data-v-1c64fc58]{padding:2rem 1rem}.welcome-section h1[data-v-1c64fc58]{font-size:2rem}.welcome-section p[data-v-1c64fc58]{font-size:1rem}.welcome-section .intro-text[data-v-1c64fc58]{padding:1.5rem}.welcome-section .intro-text p[data-v-1c64fc58]{font-size:1rem}.welcome-section .cta-buttons[data-v-1c64fc58]{flex-direction:column;align-items:center}.welcome-section .cta-buttons .btn[data-v-1c64fc58]{width:100%;max-width:300px;margin-bottom:.5rem}} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index a50c8de..cc1378a 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -NEU小站
\ No newline at end of file +NEU小站
\ No newline at end of file diff --git a/dist/js/11.9b7f914d.js b/dist/js/11.6ebf0bde.js similarity index 99% rename from dist/js/11.9b7f914d.js rename to dist/js/11.6ebf0bde.js index a1dde50..8666cd2 100644 --- a/dist/js/11.9b7f914d.js +++ b/dist/js/11.6ebf0bde.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[11],{9011:function(e,t,s){s.r(t),s.d(t,{default:function(){return Ye}});var a=s(6768);const n={class:"user-center"},i={key:0,class:"loading-container"},o={key:1,class:"container"},r={class:"upper-section"},l={class:"user-info-container"},c={class:"coin-container"},d={class:"lower-section"},u={key:2,class:"login-required-container"};function h(e,t,s,h,g,k){const v=(0,a.g2)("Navbar"),m=(0,a.g2)("UserInfo"),p=(0,a.g2)("Coin"),L=(0,a.g2)("SubmissionList");return(0,a.uX)(),(0,a.CE)("div",n,[(0,a.bF)(v),g.isLoading?((0,a.uX)(),(0,a.CE)("div",i,t[0]||(t[0]=[(0,a.Lk)("div",{class:"loading-spinner"},"加载中...",-1)]))):g.isAuthenticated?((0,a.uX)(),(0,a.CE)("div",o,[(0,a.Lk)("div",r,[(0,a.Lk)("div",l,[(0,a.bF)(m,{ref:"userInfo"},null,512)]),(0,a.Lk)("div",c,[(0,a.bF)(p,{ref:"coin"},null,512)])]),(0,a.Lk)("div",d,[(0,a.bF)(L,{onManageWorks:k.handleManageWorks},null,8,["onManageWorks"])])])):((0,a.uX)(),(0,a.CE)("div",u,t[1]||(t[1]=[(0,a.Lk)("div",{class:"login-required-message"},[(0,a.Lk)("h2",null,"请先登录!"),(0,a.Lk)("p",null,"您需要登录后才能访问个人中心")],-1)])))])}s(4114);var g=s(6737),k=s(4232);const v={class:"user-info-card"},m={class:"card-container"},p={class:"detail-header"},L={class:"avatar-wrapper"},y=["src"],f={class:"detail-right"},b={class:"detail-name-container"},w={class:"detail-name"},C={class:"user-badges"},_=["title"],x=["title"],A={key:2,class:"badge medal"},E={class:"user-sign-container"},I={class:"user-sign"},M={class:"sign-text"},P={class:"user-email"},S={class:"email-text"},$={class:"user-stats"},K={class:"stat-item"},X={class:"stat-value"},T={class:"stat-item"},j={class:"stat-value"},F={class:"stat-item"},z={class:"stat-value"},D={key:0,class:"message-box"};function O(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",v,[(0,a.Lk)("div",m,[(0,a.Lk)("div",p,[t[6]||(t[6]=(0,a.Lk)("div",{class:"header-bg"},null,-1)),(0,a.Lk)("div",L,[(0,a.Lk)("img",{src:i.userInfo.avatar_path,alt:"用户头像",class:"detail-avatar"},null,8,y),(0,a.Lk)("div",{class:"avatar-edit-overlay",onClick:t[0]||(t[0]=(...e)=>o.triggerFileInput&&o.triggerFileInput(...e))},t[4]||(t[4]=[(0,a.Lk)("i",{class:"edit-icon"},"📷",-1)])),(0,a.Lk)("input",{type:"file",ref:"fileInput",style:{display:"none"},accept:"image/jpeg, image/png, image/gif",onChange:t[1]||(t[1]=(...e)=>o.uploadAvatar&&o.uploadAvatar(...e))},null,544)]),(0,a.Lk)("div",f,[(0,a.Lk)("div",b,[(0,a.Lk)("div",w,(0,k.v_)(i.userInfo.nickname),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[2]||(t[2]=(...e)=>o.editNickname&&o.editNickname(...e)),title:"修改昵称"},t[5]||(t[5]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))]),(0,a.Lk)("div",C,[i.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:i.userInfo.verified},"认证",8,_)):(0,a.Q3)("",!0),i.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:i.userInfo.invited},"特邀",8,x)):(0,a.Q3)("",!0),i.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",A,"小站奖章")):(0,a.Q3)("",!0)])])]),(0,a.Lk)("div",E,[(0,a.Lk)("div",I,[t[8]||(t[8]=(0,a.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,a.Lk)("div",M,(0,k.v_)(i.userInfo.sign||"这个人很懒,还没有写个性签名~"),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[3]||(t[3]=(...e)=>o.editSign&&o.editSign(...e)),title:"修改签名"},t[7]||(t[7]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))])]),(0,a.Lk)("div",P,[t[9]||(t[9]=(0,a.Lk)("div",{class:"email-icon"},"📧",-1)),(0,a.Lk)("div",S,(0,k.v_)(i.userInfo.email),1)]),(0,a.Lk)("div",$,[(0,a.Lk)("div",K,[(0,a.Lk)("div",X,(0,k.v_)(i.userInfo.follower||0),1),t[10]||(t[10]=(0,a.Lk)("div",{class:"stat-label"},"粉丝",-1))]),t[13]||(t[13]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",T,[(0,a.Lk)("div",j,(0,k.v_)(i.userInfo.following||0),1),t[11]||(t[11]=(0,a.Lk)("div",{class:"stat-label"},"关注",-1))]),t[14]||(t[14]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",F,[(0,a.Lk)("div",z,(0,k.v_)(i.userInfo.coin||"未激活"),1),t[12]||(t[12]=(0,a.Lk)("div",{class:"stat-label"},"东币",-1))])]),i.message.show?((0,a.uX)(),(0,a.CE)("div",D,[(0,a.Lk)("div",{class:(0,k.C4)(["message-content",i.message.type])},(0,k.v_)(i.message.text),3)])):(0,a.Q3)("",!0)])])}var N=s(8704),U=s(6253),q={name:"UserInfo",data(){return{userInfo:{id:"",nickname:"加载中...",verified:null,invited:null,medal:!1,avatar_path:"",email:"",sign:"",follower:0,following:0,coin:0},message:{show:!1,text:"",type:"success",timer:null}}},created(){this.fetchUserInfo()},methods:{async fetchUserInfo(){try{const e=N.A.get("token");if(!e)return void this.showMessage("未登录或登录已过期","error");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/info",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("获取用户信息失败");const s=await t.json();this.userInfo=s}catch(e){console.error("获取用户信息出错:",e),this.showMessage("获取用户信息失败","error")}},triggerFileInput(){this.$refs.fileInput.click()},async uploadAvatar(e){const t=e.target.files[0];if(!t)return void this.showMessage("请选择一个文件","error");if(t.size>1048576)return void this.showMessage("头像必须小于1MB","error");const s=N.A.get("token");if(s)try{const e=new FormData;e.append("avatar",t);const a=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/upload",{method:"POST",headers:{Authorization:s},body:e});if(a.ok){const e=await a.json();this.userInfo.avatar_path=e.avatarUrl,this.showMessage("头像上传成功","success")}else 401===a.status||403===a.status?this.showMessage("权限错误,请重新登录后再试","error"):this.showMessage("上传失败,请稍后再试","error")}catch(a){console.error("头像上传错误:",a),this.showMessage("上传过程中发生错误","error")}else this.showMessage("请先登录,再上传头像","error")},async editNickname(){const e=N.A.get("token");e?(0,U.A)({title:"修改昵称",message:"请输入新的昵称:",showInput:!0,inputPlaceholder:"请输入新昵称",inputValue:this.userInfo.nickname,confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t&&""!==t.trim())try{const s=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/edit-nickname",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({nickname:t.trim()})});if(s.ok){await s.json();this.userInfo.nickname=t.trim(),this.showMessage("昵称修改成功","success")}else{const e=await s.json();this.showMessage(`修改昵称失败:${e.message}`,"error")}}catch(s){console.error("修改昵称错误:",s),this.showMessage("发生错误,请稍后再试","error")}else this.showMessage("昵称不能为空","error")})).catch((()=>{})):this.showMessage("您尚未登录,请登录后再尝试修改昵称","error")},async editSign(){const e=N.A.get("token");if(!e)return void this.showMessage("您尚未登录,请登录后再尝试修改签名","error");const t=this.userInfo.sign||"";(0,U.A)({title:"修改个性签名",message:"请输入新的个性签名 (最多20个汉字,留空表示删除个性签名):",showInput:!0,inputValue:t,inputPlaceholder:"请输入个性签名",confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t)try{const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/sign",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({sign:t.trim()})});if(s.ok)this.userInfo.sign=t.trim(),this.showMessage("个性签名修改成功","success");else{const e=await s.json();this.showMessage(`修改签名失败:${e.message}`,"error")}}catch(s){console.error("修改签名错误:",s),this.showMessage("发生错误,请稍后再试","error")}})).catch((()=>{}))},showMessage(e,t="success"){this.message.timer&&clearTimeout(this.message.timer),this.message.show=!0,this.message.text=e,this.message.type=t,this.message.timer=setTimeout((()=>{this.message.show=!1}),3e3)}}},Q=s(1241);const W=(0,Q.A)(q,[["render",O],["__scopeId","data-v-7c40ae87"]]);var B=W;const J={class:"coin-container"},V={key:0,class:"not-activated"},G={class:"alert alert-warning policy-notification"},H={key:1,class:"activated"},Y={class:"alert alert-warning policy-notification"},R={class:"coin-info"},Z={class:"coin-amount"},ee={class:"transactions"},te={key:0,class:"no-records"},se={key:1,class:"transaction-table"},ae={key:2,class:"pagination"},ne=["disabled"],ie={class:"page-info"},oe=["disabled"];function re(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",J,[i.isActivated?((0,a.uX)(),(0,a.CE)("div",H,[(0,a.Lk)("div",Y,(0,k.v_)(i.policyNotification),1),(0,a.Lk)("div",R,[(0,a.Lk)("h3",null,[t[3]||(t[3]=(0,a.eW)("您当前拥有 ")),(0,a.Lk)("span",Z,(0,k.v_)(i.coinAmount),1),t[4]||(t[4]=(0,a.eW)(" 枚东币"))])]),(0,a.Lk)("div",ee,[0===i.transactions.length?((0,a.uX)(),(0,a.CE)("div",te," 暂无交易记录 ")):((0,a.uX)(),(0,a.CE)("table",se,[t[5]||(t[5]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"时间"),(0,a.Lk)("th",null,"金额"),(0,a.Lk)("th",null,"备注")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.transactions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id},[(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",{class:(0,k.C4)({credit:"credit"===e.type,debit:"debit"===e.type})},(0,k.v_)("credit"===e.type?"+":"-")+(0,k.v_)(e.amount),3),(0,a.Lk)("td",null,(0,k.v_)(e.note),1)])))),128))])])),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",ae,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[0]||(t[0]=e=>o.loadTransactions(i.currentPage-1)),class:"btn btn-sm btn-outline-primary"}," 上一页 ",8,ne),(0,a.Lk)("span",ie,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[1]||(t[1]=e=>o.loadTransactions(i.currentPage+1)),class:"btn btn-sm btn-outline-primary"}," 下一页 ",8,oe)])):(0,a.Q3)("",!0)])])):((0,a.uX)(),(0,a.CE)("div",V,[(0,a.Lk)("div",G,(0,k.v_)(i.policyNotification),1),t[2]||(t[2]=(0,a.Lk)("div",{class:"alert alert-info"},[(0,a.Lk)("p",null,"东币系统在账号完成校园验证后自动激活。")],-1))]))])}var le={name:"CoinComponent",data(){return{isActivated:!1,coinAmount:0,transactions:[],currentPage:1,totalPages:1,policyNotification:"由于政策原因,短信验证码服务已于2025.4.13下线,后续东币系统将在校园验证通过后自动激活。之前已完成校园验证但未手动激活东币系统的用户,系统已为您自动激活东币系统。"}},created(){this.loadTransactions(1)},methods:{async loadTransactions(e){try{const t=N.A.get("token");if(!t)return console.error("未找到登录token"),void(this.isActivated=!1);const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/coin/transactions",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})}),a=await s.json();if(s.ok)this.isActivated=!0,this.coinAmount=a.coinAmount,this.transactions=a.transactions,this.currentPage=a.current_page,this.totalPages=a.total_pages;else{if(403!==s.status||"用户未激活东币系统"!==a.message)throw new Error(a.message||"获取交易记录失败");this.isActivated=!1,this.coinAmount=0,this.transactions=[]}}catch(t){console.error("获取交易记录出错:",t),this.isActivated=!1}},formatDate(e){const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}}};const ce=(0,Q.A)(le,[["render",re],["__scopeId","data-v-6b086920"]]);var de=ce,ue=s(5130);const he={class:"submission-container"},ge={class:"header"},ke={class:"header-buttons"},ve={class:"modal-content key-management-modal"},me={class:"modal-header"},pe={class:"modal-body"},Le={key:0,class:"key-table-wrapper"},ye={class:"key-table"},fe={class:"key-cell"},be={class:"key-content"},we=["onClick"],Ce={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},_e={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},xe={key:1,class:"loading-keys"},Ae={key:2,class:"empty-keys"},Ee={class:"modal-content exchange-key-modal"},Ie={class:"modal-header"},Me={class:"modal-body"},Pe={class:"form-group"},Se={class:"form-group"},$e={class:"form-actions"},Ke=["disabled"],Xe={class:"submission-table-wrapper"},Te={key:0,class:"submission-table"},je=["onClick"],Fe={class:"title-cell"},ze=["onClick"],De={key:1,class:"empty-state"},Oe={key:2,class:"pagination"},Ne=["disabled"],Ue={class:"page-info"},qe=["disabled"];function Qe(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",he,[(0,a.Lk)("div",ge,[t[12]||(t[12]=(0,a.Lk)("h3",{class:"title"},"我的投稿记录",-1)),(0,a.Lk)("div",ke,[(0,a.Lk)("button",{class:"key-manage-btn",onClick:t[0]||(t[0]=e=>i.showKeyManagement=!0)},"密钥管理"),(0,a.Lk)("button",{class:"manage-btn",onClick:t[1]||(t[1]=(...e)=>o.handleManage&&o.handleManage(...e))},"我要投稿")])]),i.showKeyManagement?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"modal-overlay",onClick:t[4]||(t[4]=(0,ue.D$)((e=>i.showKeyManagement=!1),["self"]))},[(0,a.Lk)("div",ve,[(0,a.Lk)("div",me,[t[13]||(t[13]=(0,a.Lk)("h3",null,"密钥管理",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[2]||(t[2]=e=>i.showKeyManagement=!1)},"×")]),(0,a.Lk)("div",pe,[(0,a.Lk)("button",{class:"exchange-key-btn",onClick:t[3]||(t[3]=e=>i.showExchangeKey=!0)},"兑换密钥"),i.keyList.length>0?((0,a.uX)(),(0,a.CE)("div",Le,[(0,a.Lk)("table",ye,[t[16]||(t[16]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"密钥"),(0,a.Lk)("th",null,"状态"),(0,a.Lk)("th",null,"创建时间"),(0,a.Lk)("th",null,"最后使用时间")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.keyList,((e,s)=>((0,a.uX)(),(0,a.CE)("tr",{key:s},[(0,a.Lk)("td",fe,[(0,a.Lk)("div",be,[(0,a.Lk)("span",null,(0,k.v_)(i.visibleKeyIndex===s?e.key_plaintext:"******"),1),(0,a.Lk)("button",{class:"toggle-visibility",onClick:e=>o.toggleKeyVisibility(s)},[i.visibleKeyIndex!==s?((0,a.uX)(),(0,a.CE)("svg",Ce,t[14]||(t[14]=[(0,a.Lk)("path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},null,-1),(0,a.Lk)("path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"},null,-1)]))):((0,a.uX)(),(0,a.CE)("svg",_e,t[15]||(t[15]=[(0,a.Lk)("path",{d:"M10.585 10.587a2 2 0 0 0 2.829 2.828"},null,-1),(0,a.Lk)("path",{d:"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"},null,-1),(0,a.Lk)("path",{d:"M3 3l18 18"},null,-1)])))],8,we)])]),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(e.is_valid?"status-valid":"status-invalid")},(0,k.v_)(e.is_valid?"有效":"无效"),3)]),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(e.last_used_at?o.formatDate(e.last_used_at):"未使用"),1)])))),128))])])])):i.loadingKeyList?((0,a.uX)(),(0,a.CE)("div",xe," 加载中... ")):((0,a.uX)(),(0,a.CE)("div",Ae,t[17]||(t[17]=[(0,a.Lk)("p",null,"暂无密钥记录",-1)])))])])])):(0,a.Q3)("",!0),i.showExchangeKey?((0,a.uX)(),(0,a.CE)("div",{key:1,class:"modal-overlay",onClick:t[9]||(t[9]=(0,ue.D$)((e=>i.showExchangeKey=!1),["self"]))},[(0,a.Lk)("div",Ee,[(0,a.Lk)("div",Ie,[t[18]||(t[18]=(0,a.Lk)("h3",null,"兑换密钥",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[5]||(t[5]=e=>i.showExchangeKey=!1)},"×")]),(0,a.Lk)("div",Me,[(0,a.Lk)("div",Pe,[t[19]||(t[19]=(0,a.Lk)("label",{for:"invite-code"},"邀请码",-1)),(0,a.bo)((0,a.Lk)("input",{id:"invite-code","onUpdate:modelValue":t[6]||(t[6]=e=>i.exchangeForm.invite_code=e),type:"text",placeholder:"输入邀请码"},null,512),[[ue.Jo,i.exchangeForm.invite_code]])]),(0,a.Lk)("div",Se,[t[20]||(t[20]=(0,a.Lk)("label",{for:"custom-key"},"自定义密钥",-1)),(0,a.bo)((0,a.Lk)("input",{id:"custom-key","onUpdate:modelValue":t[7]||(t[7]=e=>i.exchangeForm.key=e),type:"text",placeholder:"输入您的自定义密钥"},null,512),[[ue.Jo,i.exchangeForm.key]])]),(0,a.Lk)("div",$e,[(0,a.Lk)("button",{class:"submit-btn",disabled:!i.exchangeForm.invite_code||!i.exchangeForm.key||i.submitting,onClick:t[8]||(t[8]=(...e)=>o.exchangeKey&&o.exchangeKey(...e))},(0,k.v_)(i.submitting?"处理中...":"确认兑换"),9,Ke)])])])])):(0,a.Q3)("",!0),(0,a.Lk)("div",Xe,[i.submissions.length>0?((0,a.uX)(),(0,a.CE)("table",Te,[t[21]||(t[21]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"标题"),(0,a.Lk)("th",null,"板块"),(0,a.Lk)("th",null,"审核状态"),(0,a.Lk)("th",null,"审核备注"),(0,a.Lk)("th",null,"投稿时间"),(0,a.Lk)("th",null,"状态更新时间"),(0,a.Lk)("th",null,"操作")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.submissions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id,class:(0,k.C4)({clickable:e.article_id}),onClick:t=>e.article_id&&o.navigateToArticle(e.article_id)},[(0,a.Lk)("td",Fe,(0,k.v_)(e.title),1),(0,a.Lk)("td",null,(0,k.v_)(e.section),1),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(o.getStatusClass(e.status))},(0,k.v_)(e.status),3)]),(0,a.Lk)("td",null,(0,k.v_)(e.note||"无"),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.updated_at)),1),(0,a.Lk)("td",null,["已通过"===e.status&&e.article_id?((0,a.uX)(),(0,a.CE)("button",{key:0,class:"edit-btn",onClick:(0,ue.D$)((t=>o.navigateToEdit(e.article_id)),["stop"])}," 编辑 ",8,ze)):(0,a.Q3)("",!0)])],10,je)))),128))])])):((0,a.uX)(),(0,a.CE)("div",De,t[22]||(t[22]=[(0,a.Lk)("p",null,"暂无投稿记录",-1)]))),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",Oe,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[10]||(t[10]=e=>o.loadSubmissions(i.currentPage-1)),class:"page-btn"}," 上一页 ",8,Ne),(0,a.Lk)("span",Ue,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[11]||(t[11]=e=>o.loadSubmissions(i.currentPage+1)),class:"page-btn"}," 下一页 ",8,qe)])):(0,a.Q3)("",!0)])])}var We={name:"SubmissionList",data(){return{submissions:[],currentPage:1,totalPages:1,totalSubmissions:0,loading:!1,loadingKeyList:!1,showKeyManagement:!1,showExchangeKey:!1,keyList:[],visibleKeyIndex:-1,exchangeForm:{invite_code:"",key:""},submitting:!1}},created(){this.loadSubmissions(1)},methods:{async loadSubmissions(e){this.loading=!0;try{const t=N.A.get("token");if(!t)return void console.error("未找到登录token");const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/submission",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})});if(!s.ok)throw new Error("获取投稿记录失败");const a=await s.json();this.submissions=a.submissions,this.currentPage=a.current_page,this.totalPages=a.total_pages,this.totalSubmissions=a.total_submissions}catch(t){console.error("获取投稿记录出错:",t)}finally{this.loading=!1}},handleManage(){console.log("点击了作品管理按钮"),this.$emit("manage-works")},navigateToArticle(e){this.$router.push(`/article/${e}`)},navigateToEdit(e){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;t?U.A.confirm("建议在电脑端进行编辑以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push(`/edit?article=${e}`)})).catch((()=>{console.log("用户取消了在移动端编辑")})):this.$router.push(`/edit?article=${e}`)},formatDate(e){if(!e)return"未知";const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`},getStatusClass(e){switch(e){case"已通过":return"status-approved";case"审核中":return"status-pending";case"未通过":return"status-rejected";default:return""}},async loadKeyList(){this.loadingKeyList=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/getcode",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(!t.ok)throw new Error("获取密钥列表失败");const s=await t.json();if(!s.success)throw new Error(s.message||"获取密钥列表失败");this.keyList=s.data||[]}catch(e){console.error("获取密钥列表出错:",e),U.A.alert(e.message||"获取密钥列表失败,请稍后再试","错误")}finally{this.loadingKeyList=!1}},toggleKeyVisibility(e){this.visibleKeyIndex===e?this.visibleKeyIndex=-1:this.visibleKeyIndex=e},async exchangeKey(){if(this.exchangeForm.invite_code&&this.exchangeForm.key){this.submitting=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/setcode",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify(this.exchangeForm)}),s=await t.json();if(!s.success)throw new Error(s.message||"密钥兑换失败");U.A.alert("密钥兑换成功","提示"),this.showExchangeKey=!1,this.exchangeForm.invite_code="",this.exchangeForm.key="",this.loadKeyList()}catch(e){console.error("密钥兑换出错:",e),U.A.alert(e.message||"密钥兑换失败,请稍后再试","错误")}finally{this.submitting=!1}}else U.A.alert("请输入邀请码和密钥","提示")}},watch:{showKeyManagement(e){e?this.loadKeyList():this.visibleKeyIndex=-1}}};const Be=(0,Q.A)(We,[["render",Qe],["__scopeId","data-v-03a6fef0"]]);var Je=Be,Ve=s(6965),Ge={name:"UserCenter",components:{Navbar:g.A,UserInfo:B,Coin:de,SubmissionList:Je},data(){return{isAuthenticated:!1,isLoading:!0}},created(){document.title="个人中心 - NEU小站"},mounted(){this.checkAuthAndFetchUserInfo()},methods:{async checkAuthAndFetchUserInfo(){const e=N.A.get("token");if(!e)return this.isLoading=!1,"/user-center"===this.$route.path?void this.$router.replace("/login"):void("/login"===this.$route.path&&this.showLoginDialog());try{const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/islogin",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("Token 验证失败");const s=await t.json();if(!s||!s.isLoggedIn)throw new Error("Token 验证成功但返回状态不正确");this.isAuthenticated=!0,this.isLoading=!1,"/login"===this.$route.path&&this.$router.replace("/user-center")}catch(t){if(console.error("获取用户信息出错:",t),this.isLoading=!1,N.A.remove("token"),"/user-center"===this.$route.path)return void this.$router.replace("/login");"/login"===this.$route.path&&this.showLoginDialog()}},showLoginDialog(){(0,Ve.A)().then((e=>{console.log("登录成功:",e),this.isAuthenticated=!0,this.$router.replace("/user-center")})).catch((e=>{console.log("登录取消:",e)}))},handleManageWorks(){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?U.A.confirm("建议在电脑端进行投稿以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push("/submit")})).catch((()=>{console.log("用户取消了在移动端投稿")})):this.$router.push("/submit")}}};const He=(0,Q.A)(Ge,[["render",h],["__scopeId","data-v-c5320252"]]);var Ye=He}}]); -//# sourceMappingURL=11.9b7f914d.js.map \ No newline at end of file +"use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[11],{9011:function(e,t,s){s.r(t),s.d(t,{default:function(){return Ye}});var a=s(6768);const n={class:"user-center"},i={key:0,class:"loading-container"},o={key:1,class:"container"},r={class:"upper-section"},l={class:"user-info-container"},c={class:"coin-container"},d={class:"lower-section"},u={key:2,class:"login-required-container"};function h(e,t,s,h,g,k){const v=(0,a.g2)("Navbar"),m=(0,a.g2)("UserInfo"),p=(0,a.g2)("Coin"),L=(0,a.g2)("SubmissionList");return(0,a.uX)(),(0,a.CE)("div",n,[(0,a.bF)(v),g.isLoading?((0,a.uX)(),(0,a.CE)("div",i,t[0]||(t[0]=[(0,a.Lk)("div",{class:"loading-spinner"},"加载中...",-1)]))):g.isAuthenticated?((0,a.uX)(),(0,a.CE)("div",o,[(0,a.Lk)("div",r,[(0,a.Lk)("div",l,[(0,a.bF)(m,{ref:"userInfo"},null,512)]),(0,a.Lk)("div",c,[(0,a.bF)(p,{ref:"coin"},null,512)])]),(0,a.Lk)("div",d,[(0,a.bF)(L,{onManageWorks:k.handleManageWorks},null,8,["onManageWorks"])])])):((0,a.uX)(),(0,a.CE)("div",u,t[1]||(t[1]=[(0,a.Lk)("div",{class:"login-required-message"},[(0,a.Lk)("h2",null,"请先登录!"),(0,a.Lk)("p",null,"您需要登录后才能访问个人中心")],-1)])))])}s(4114);var g=s(6737),k=s(4232);const v={class:"user-info-card"},m={class:"card-container"},p={class:"detail-header"},L={class:"avatar-wrapper"},y=["src"],f={class:"detail-right"},b={class:"detail-name-container"},w={class:"detail-name"},C={class:"user-badges"},_=["title"],x=["title"],A={key:2,class:"badge medal"},E={class:"user-sign-container"},I={class:"user-sign"},M={class:"sign-text"},P={class:"user-email"},S={class:"email-text"},$={class:"user-stats"},K={class:"stat-item"},X={class:"stat-value"},T={class:"stat-item"},j={class:"stat-value"},F={class:"stat-item"},z={class:"stat-value"},D={key:0,class:"message-box"};function O(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",v,[(0,a.Lk)("div",m,[(0,a.Lk)("div",p,[t[6]||(t[6]=(0,a.Lk)("div",{class:"header-bg"},null,-1)),(0,a.Lk)("div",L,[(0,a.Lk)("img",{src:i.userInfo.avatar_path,alt:"用户头像",class:"detail-avatar"},null,8,y),(0,a.Lk)("div",{class:"avatar-edit-overlay",onClick:t[0]||(t[0]=(...e)=>o.triggerFileInput&&o.triggerFileInput(...e))},t[4]||(t[4]=[(0,a.Lk)("i",{class:"edit-icon"},"📷",-1)])),(0,a.Lk)("input",{type:"file",ref:"fileInput",style:{display:"none"},accept:"image/jpeg, image/png, image/gif",onChange:t[1]||(t[1]=(...e)=>o.uploadAvatar&&o.uploadAvatar(...e))},null,544)]),(0,a.Lk)("div",f,[(0,a.Lk)("div",b,[(0,a.Lk)("div",w,(0,k.v_)(i.userInfo.nickname),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[2]||(t[2]=(...e)=>o.editNickname&&o.editNickname(...e)),title:"修改昵称"},t[5]||(t[5]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))]),(0,a.Lk)("div",C,[i.userInfo.verified?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"badge verified",title:i.userInfo.verified},"认证",8,_)):(0,a.Q3)("",!0),i.userInfo.invited?((0,a.uX)(),(0,a.CE)("span",{key:1,class:"badge invited",title:i.userInfo.invited},"特邀",8,x)):(0,a.Q3)("",!0),i.userInfo.medal?((0,a.uX)(),(0,a.CE)("span",A,"小站奖章")):(0,a.Q3)("",!0)])])]),(0,a.Lk)("div",E,[(0,a.Lk)("div",I,[t[8]||(t[8]=(0,a.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,a.Lk)("div",M,(0,k.v_)(i.userInfo.sign||"这个人很懒,还没有写个性签名~"),1),(0,a.Lk)("button",{class:"edit-btn",onClick:t[3]||(t[3]=(...e)=>o.editSign&&o.editSign(...e)),title:"修改签名"},t[7]||(t[7]=[(0,a.Lk)("i",{class:"edit-icon"},"✏️",-1)]))])]),(0,a.Lk)("div",P,[t[9]||(t[9]=(0,a.Lk)("div",{class:"email-icon"},"📧",-1)),(0,a.Lk)("div",S,(0,k.v_)(i.userInfo.email),1)]),(0,a.Lk)("div",$,[(0,a.Lk)("div",K,[(0,a.Lk)("div",X,(0,k.v_)(i.userInfo.follower||0),1),t[10]||(t[10]=(0,a.Lk)("div",{class:"stat-label"},"粉丝",-1))]),t[13]||(t[13]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",T,[(0,a.Lk)("div",j,(0,k.v_)(i.userInfo.following||0),1),t[11]||(t[11]=(0,a.Lk)("div",{class:"stat-label"},"关注",-1))]),t[14]||(t[14]=(0,a.Lk)("div",{class:"stat-separator"},null,-1)),(0,a.Lk)("div",F,[(0,a.Lk)("div",z,(0,k.v_)(i.userInfo.coin||"未激活"),1),t[12]||(t[12]=(0,a.Lk)("div",{class:"stat-label"},"东币",-1))])]),i.message.show?((0,a.uX)(),(0,a.CE)("div",D,[(0,a.Lk)("div",{class:(0,k.C4)(["message-content",i.message.type])},(0,k.v_)(i.message.text),3)])):(0,a.Q3)("",!0)])])}var N=s(8704),U=s(6253),q={name:"UserInfo",data(){return{userInfo:{id:"",nickname:"加载中...",verified:null,invited:null,medal:!1,avatar_path:"",email:"",sign:"",follower:0,following:0,coin:0},message:{show:!1,text:"",type:"success",timer:null}}},created(){this.fetchUserInfo()},methods:{async fetchUserInfo(){try{const e=N.A.get("token");if(!e)return void this.showMessage("未登录或登录已过期","error");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/info",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("获取用户信息失败");const s=await t.json();this.userInfo=s}catch(e){console.error("获取用户信息出错:",e),this.showMessage("获取用户信息失败","error")}},triggerFileInput(){this.$refs.fileInput.click()},async uploadAvatar(e){const t=e.target.files[0];if(!t)return void this.showMessage("请选择一个文件","error");if(t.size>1048576)return void this.showMessage("头像必须小于1MB","error");const s=N.A.get("token");if(s)try{const e=new FormData;e.append("avatar",t);const a=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/upload",{method:"POST",headers:{Authorization:s},body:e});if(a.ok){const e=await a.json();this.userInfo.avatar_path=e.avatarUrl,this.showMessage("头像上传成功","success")}else 401===a.status||403===a.status?this.showMessage("权限错误,请重新登录后再试","error"):this.showMessage("上传失败,请稍后再试","error")}catch(a){console.error("头像上传错误:",a),this.showMessage("上传过程中发生错误","error")}else this.showMessage("请先登录,再上传头像","error")},async editNickname(){const e=N.A.get("token");e?(0,U.A)({title:"修改昵称",message:"请输入新的昵称:",showInput:!0,inputPlaceholder:"请输入新昵称",inputValue:this.userInfo.nickname,confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t&&""!==t.trim())try{const s=await fetch("https://userlogin.xn--xhq44jb2fzpc.com/avatar/edit-nickname",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({nickname:t.trim()})});if(s.ok){await s.json();this.userInfo.nickname=t.trim(),this.showMessage("昵称修改成功","success")}else{const e=await s.json();this.showMessage(`修改昵称失败:${e.message}`,"error")}}catch(s){console.error("修改昵称错误:",s),this.showMessage("发生错误,请稍后再试","error")}else this.showMessage("昵称不能为空","error")})).catch((()=>{})):this.showMessage("您尚未登录,请登录后再尝试修改昵称","error")},async editSign(){const e=N.A.get("token");if(!e)return void this.showMessage("您尚未登录,请登录后再尝试修改签名","error");const t=this.userInfo.sign||"";(0,U.A)({title:"修改个性签名",message:"请输入新的个性签名 (最多20个汉字,留空表示删除个性签名):",showInput:!0,inputValue:t,inputPlaceholder:"请输入个性签名",confirmText:"确认",cancelText:"取消",cancel:!0}).then((async({value:t})=>{if(null!==t)try{const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/sign",{method:"POST",headers:{"Content-Type":"application/json",Authorization:e},body:JSON.stringify({sign:t.trim()})});if(s.ok)this.userInfo.sign=t.trim(),this.showMessage("个性签名修改成功","success");else{const e=await s.json();this.showMessage(`修改签名失败:${e.message}`,"error")}}catch(s){console.error("修改签名错误:",s),this.showMessage("发生错误,请稍后再试","error")}})).catch((()=>{}))},showMessage(e,t="success"){this.message.timer&&clearTimeout(this.message.timer),this.message.show=!0,this.message.text=e,this.message.type=t,this.message.timer=setTimeout((()=>{this.message.show=!1}),3e3)}}},Q=s(1241);const W=(0,Q.A)(q,[["render",O],["__scopeId","data-v-7c40ae87"]]);var B=W;const J={class:"coin-container"},V={key:0,class:"not-activated"},G={class:"alert alert-warning policy-notification"},H={key:1,class:"activated"},Y={class:"alert alert-warning policy-notification"},R={class:"coin-info"},Z={class:"coin-amount"},ee={class:"transactions"},te={key:0,class:"no-records"},se={key:1,class:"transaction-table"},ae={key:2,class:"pagination"},ne=["disabled"],ie={class:"page-info"},oe=["disabled"];function re(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",J,[i.isActivated?((0,a.uX)(),(0,a.CE)("div",H,[(0,a.Lk)("div",Y,(0,k.v_)(i.policyNotification),1),(0,a.Lk)("div",R,[(0,a.Lk)("h3",null,[t[3]||(t[3]=(0,a.eW)("您当前拥有 ")),(0,a.Lk)("span",Z,(0,k.v_)(i.coinAmount),1),t[4]||(t[4]=(0,a.eW)(" 枚东币"))])]),(0,a.Lk)("div",ee,[0===i.transactions.length?((0,a.uX)(),(0,a.CE)("div",te," 暂无交易记录 ")):((0,a.uX)(),(0,a.CE)("table",se,[t[5]||(t[5]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"时间"),(0,a.Lk)("th",null,"金额"),(0,a.Lk)("th",null,"备注")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.transactions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id},[(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",{class:(0,k.C4)({credit:"credit"===e.type,debit:"debit"===e.type})},(0,k.v_)("credit"===e.type?"+":"-")+(0,k.v_)(e.amount),3),(0,a.Lk)("td",null,(0,k.v_)(e.note),1)])))),128))])])),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",ae,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[0]||(t[0]=e=>o.loadTransactions(i.currentPage-1)),class:"btn btn-sm btn-outline-primary"}," 上一页 ",8,ne),(0,a.Lk)("span",ie,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[1]||(t[1]=e=>o.loadTransactions(i.currentPage+1)),class:"btn btn-sm btn-outline-primary"}," 下一页 ",8,oe)])):(0,a.Q3)("",!0)])])):((0,a.uX)(),(0,a.CE)("div",V,[(0,a.Lk)("div",G,(0,k.v_)(i.policyNotification),1),t[2]||(t[2]=(0,a.Lk)("div",{class:"alert alert-info"},[(0,a.Lk)("p",null,"东币系统在账号完成校园验证后自动激活。")],-1))]))])}var le={name:"CoinComponent",data(){return{isActivated:!1,coinAmount:0,transactions:[],currentPage:1,totalPages:1,policyNotification:"由于政策原因,短信验证码服务已于2025.4.13下线,后续东币系统将在校园验证通过后自动激活。之前已完成校园验证但未手动激活东币系统的用户,系统已为您自动激活东币系统。"}},created(){this.loadTransactions(1)},methods:{async loadTransactions(e){try{const t=N.A.get("token");if(!t)return console.error("未找到登录token"),void(this.isActivated=!1);const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/coin/transactions",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})}),a=await s.json();if(s.ok)this.isActivated=!0,this.coinAmount=a.coinAmount,this.transactions=a.transactions,this.currentPage=a.current_page,this.totalPages=a.total_pages;else{if(403!==s.status||"用户未激活东币系统"!==a.message)throw new Error(a.message||"获取交易记录失败");this.isActivated=!1,this.coinAmount=0,this.transactions=[]}}catch(t){console.error("获取交易记录出错:",t),this.isActivated=!1}},formatDate(e){const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}}};const ce=(0,Q.A)(le,[["render",re],["__scopeId","data-v-6b086920"]]);var de=ce,ue=s(5130);const he={class:"submission-container"},ge={class:"header"},ke={class:"header-buttons"},ve={class:"modal-content key-management-modal"},me={class:"modal-header"},pe={class:"modal-body"},Le={key:0,class:"key-table-wrapper"},ye={class:"key-table"},fe={class:"key-cell"},be={class:"key-content"},we=["onClick"],Ce={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},_e={key:1,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"black","stroke-linecap":"round","stroke-linejoin":"round",width:"24",height:"24","stroke-width":"1.1"},xe={key:1,class:"loading-keys"},Ae={key:2,class:"empty-keys"},Ee={class:"modal-content exchange-key-modal"},Ie={class:"modal-header"},Me={class:"modal-body"},Pe={class:"form-group"},Se={class:"form-group"},$e={class:"form-actions"},Ke=["disabled"],Xe={class:"submission-table-wrapper"},Te={key:0,class:"submission-table"},je=["onClick"],Fe={class:"title-cell"},ze=["onClick"],De={key:1,class:"empty-state"},Oe={key:2,class:"pagination"},Ne=["disabled"],Ue={class:"page-info"},qe=["disabled"];function Qe(e,t,s,n,i,o){return(0,a.uX)(),(0,a.CE)("div",he,[(0,a.Lk)("div",ge,[t[12]||(t[12]=(0,a.Lk)("h3",{class:"title"},"我的投稿记录",-1)),(0,a.Lk)("div",ke,[(0,a.Lk)("button",{class:"key-manage-btn",onClick:t[0]||(t[0]=e=>i.showKeyManagement=!0)},"密钥管理"),(0,a.Lk)("button",{class:"manage-btn",onClick:t[1]||(t[1]=(...e)=>o.handleManage&&o.handleManage(...e))},"我要投稿")])]),i.showKeyManagement?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"modal-overlay",onClick:t[4]||(t[4]=(0,ue.D$)((e=>i.showKeyManagement=!1),["self"]))},[(0,a.Lk)("div",ve,[(0,a.Lk)("div",me,[t[13]||(t[13]=(0,a.Lk)("h3",null,"密钥管理",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[2]||(t[2]=e=>i.showKeyManagement=!1)},"×")]),(0,a.Lk)("div",pe,[(0,a.Lk)("button",{class:"exchange-key-btn",onClick:t[3]||(t[3]=e=>i.showExchangeKey=!0)},"兑换密钥"),i.keyList.length>0?((0,a.uX)(),(0,a.CE)("div",Le,[(0,a.Lk)("table",ye,[t[16]||(t[16]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"密钥"),(0,a.Lk)("th",null,"状态"),(0,a.Lk)("th",null,"创建时间"),(0,a.Lk)("th",null,"最后使用时间")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.keyList,((e,s)=>((0,a.uX)(),(0,a.CE)("tr",{key:s},[(0,a.Lk)("td",fe,[(0,a.Lk)("div",be,[(0,a.Lk)("span",null,(0,k.v_)(i.visibleKeyIndex===s?e.key_plaintext:"******"),1),(0,a.Lk)("button",{class:"toggle-visibility",onClick:e=>o.toggleKeyVisibility(s)},[i.visibleKeyIndex!==s?((0,a.uX)(),(0,a.CE)("svg",Ce,t[14]||(t[14]=[(0,a.Lk)("path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},null,-1),(0,a.Lk)("path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6"},null,-1)]))):((0,a.uX)(),(0,a.CE)("svg",_e,t[15]||(t[15]=[(0,a.Lk)("path",{d:"M10.585 10.587a2 2 0 0 0 2.829 2.828"},null,-1),(0,a.Lk)("path",{d:"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"},null,-1),(0,a.Lk)("path",{d:"M3 3l18 18"},null,-1)])))],8,we)])]),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(e.is_valid?"status-valid":"status-invalid")},(0,k.v_)(e.is_valid?"有效":"无效"),3)]),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(e.last_used_at?o.formatDate(e.last_used_at):"未使用"),1)])))),128))])])])):i.loadingKeyList?((0,a.uX)(),(0,a.CE)("div",xe," 加载中... ")):((0,a.uX)(),(0,a.CE)("div",Ae,t[17]||(t[17]=[(0,a.Lk)("p",null,"暂无密钥记录",-1)])))])])])):(0,a.Q3)("",!0),i.showExchangeKey?((0,a.uX)(),(0,a.CE)("div",{key:1,class:"modal-overlay",onClick:t[9]||(t[9]=(0,ue.D$)((e=>i.showExchangeKey=!1),["self"]))},[(0,a.Lk)("div",Ee,[(0,a.Lk)("div",Ie,[t[18]||(t[18]=(0,a.Lk)("h3",null,"兑换密钥",-1)),(0,a.Lk)("button",{class:"close-btn",onClick:t[5]||(t[5]=e=>i.showExchangeKey=!1)},"×")]),(0,a.Lk)("div",Me,[(0,a.Lk)("div",Pe,[t[19]||(t[19]=(0,a.Lk)("label",{for:"invite-code"},"邀请码",-1)),(0,a.bo)((0,a.Lk)("input",{id:"invite-code","onUpdate:modelValue":t[6]||(t[6]=e=>i.exchangeForm.invite_code=e),type:"text",placeholder:"输入邀请码"},null,512),[[ue.Jo,i.exchangeForm.invite_code]])]),(0,a.Lk)("div",Se,[t[20]||(t[20]=(0,a.Lk)("label",{for:"custom-key"},"自定义密钥",-1)),(0,a.bo)((0,a.Lk)("input",{id:"custom-key","onUpdate:modelValue":t[7]||(t[7]=e=>i.exchangeForm.key=e),type:"text",placeholder:"输入您的自定义密钥"},null,512),[[ue.Jo,i.exchangeForm.key]])]),(0,a.Lk)("div",$e,[(0,a.Lk)("button",{class:"submit-btn",disabled:!i.exchangeForm.invite_code||!i.exchangeForm.key||i.submitting,onClick:t[8]||(t[8]=(...e)=>o.exchangeKey&&o.exchangeKey(...e))},(0,k.v_)(i.submitting?"处理中...":"确认兑换"),9,Ke)])])])])):(0,a.Q3)("",!0),(0,a.Lk)("div",Xe,[i.submissions.length>0?((0,a.uX)(),(0,a.CE)("table",Te,[t[21]||(t[21]=(0,a.Lk)("thead",null,[(0,a.Lk)("tr",null,[(0,a.Lk)("th",null,"标题"),(0,a.Lk)("th",null,"板块"),(0,a.Lk)("th",null,"审核状态"),(0,a.Lk)("th",null,"审核备注"),(0,a.Lk)("th",null,"投稿时间"),(0,a.Lk)("th",null,"状态更新时间"),(0,a.Lk)("th",null,"操作")])],-1)),(0,a.Lk)("tbody",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.submissions,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id,class:(0,k.C4)({clickable:e.article_id}),onClick:t=>e.article_id&&o.navigateToArticle(e.article_id)},[(0,a.Lk)("td",Fe,(0,k.v_)(e.title),1),(0,a.Lk)("td",null,(0,k.v_)(e.section),1),(0,a.Lk)("td",null,[(0,a.Lk)("span",{class:(0,k.C4)(o.getStatusClass(e.status))},(0,k.v_)(e.status),3)]),(0,a.Lk)("td",null,(0,k.v_)(e.note||"无"),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.created_at)),1),(0,a.Lk)("td",null,(0,k.v_)(o.formatDate(e.updated_at)),1),(0,a.Lk)("td",null,["已通过"===e.status&&e.article_id?((0,a.uX)(),(0,a.CE)("button",{key:0,class:"edit-btn",onClick:(0,ue.D$)((t=>o.navigateToEdit(e.article_id)),["stop"])}," 编辑 ",8,ze)):(0,a.Q3)("",!0)])],10,je)))),128))])])):((0,a.uX)(),(0,a.CE)("div",De,t[22]||(t[22]=[(0,a.Lk)("p",null,"暂无投稿记录",-1)]))),i.totalPages>1?((0,a.uX)(),(0,a.CE)("div",Oe,[(0,a.Lk)("button",{disabled:1===i.currentPage,onClick:t[10]||(t[10]=e=>o.loadSubmissions(i.currentPage-1)),class:"page-btn"}," 上一页 ",8,Ne),(0,a.Lk)("span",Ue,(0,k.v_)(i.currentPage)+" / "+(0,k.v_)(i.totalPages),1),(0,a.Lk)("button",{disabled:i.currentPage===i.totalPages,onClick:t[11]||(t[11]=e=>o.loadSubmissions(i.currentPage+1)),class:"page-btn"}," 下一页 ",8,qe)])):(0,a.Q3)("",!0)])])}var We={name:"SubmissionList",data(){return{submissions:[],currentPage:1,totalPages:1,totalSubmissions:0,loading:!1,loadingKeyList:!1,showKeyManagement:!1,showExchangeKey:!1,keyList:[],visibleKeyIndex:-1,exchangeForm:{invite_code:"",key:""},submitting:!1}},created(){this.loadSubmissions(1)},methods:{async loadSubmissions(e){this.loading=!0;try{const t=N.A.get("token");if(!t)return void console.error("未找到登录token");const s=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/submission",{method:"POST",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({page_num:e})});if(!s.ok)throw new Error("获取投稿记录失败");const a=await s.json();this.submissions=a.submissions,this.currentPage=a.current_page,this.totalPages=a.total_pages,this.totalSubmissions=a.total_submissions}catch(t){console.error("获取投稿记录出错:",t)}finally{this.loading=!1}},handleManage(){console.log("点击了作品管理按钮"),this.$emit("manage-works")},navigateToArticle(e){this.$router.push(`/article/${e}`)},navigateToEdit(e){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;t?U.A.confirm("建议在电脑端进行编辑以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push(`/edit?article=${e}`)})).catch((()=>{console.log("用户取消了在移动端编辑")})):this.$router.push(`/edit?article=${e}`)},formatDate(e){if(!e)return"未知";const t=new Date(e);return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${t.getHours()}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`},getStatusClass(e){switch(e){case"已通过":return"status-approved";case"审核中":return"status-pending";case"未通过":return"status-rejected";default:return""}},async loadKeyList(){this.loadingKeyList=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/getcode",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(!t.ok)throw new Error("获取密钥列表失败");const s=await t.json();if(!s.success)throw new Error(s.message||"获取密钥列表失败");this.keyList=s.data||[]}catch(e){console.error("获取密钥列表出错:",e),U.A.alert(e.message||"获取密钥列表失败,请稍后再试","错误")}finally{this.loadingKeyList=!1}},toggleKeyVisibility(e){this.visibleKeyIndex===e?this.visibleKeyIndex=-1:this.visibleKeyIndex=e},async exchangeKey(){if(this.exchangeForm.invite_code&&this.exchangeForm.key){this.submitting=!0;try{const e=N.A.get("token");if(!e)return void console.error("未找到登录token");const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/encrypt/setcode",{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify(this.exchangeForm)}),s=await t.json();if(!s.success)throw new Error(s.message||"密钥兑换失败");U.A.alert("密钥兑换成功","提示"),this.showExchangeKey=!1,this.exchangeForm.invite_code="",this.exchangeForm.key="",this.loadKeyList()}catch(e){console.error("密钥兑换出错:",e),U.A.alert(e.message||"密钥兑换失败,请稍后再试","错误")}finally{this.submitting=!1}}else U.A.alert("请输入邀请码和密钥","提示")}},watch:{showKeyManagement(e){e?this.loadKeyList():this.visibleKeyIndex=-1}}};const Be=(0,Q.A)(We,[["render",Qe],["__scopeId","data-v-03a6fef0"]]);var Je=Be,Ve=s(4699),Ge={name:"UserCenter",components:{Navbar:g.A,UserInfo:B,Coin:de,SubmissionList:Je},data(){return{isAuthenticated:!1,isLoading:!0}},created(){document.title="个人中心 - NEU小站"},mounted(){this.checkAuthAndFetchUserInfo()},methods:{async checkAuthAndFetchUserInfo(){const e=N.A.get("token");if(!e)return this.isLoading=!1,"/user-center"===this.$route.path?void this.$router.replace("/login"):void("/login"===this.$route.path&&this.showLoginDialog());try{const t=await fetch("https://newfront.xn--xhq44jb2fzpc.com/user/islogin",{method:"GET",headers:{Authorization:e}});if(!t.ok)throw new Error("Token 验证失败");const s=await t.json();if(!s||!s.isLoggedIn)throw new Error("Token 验证成功但返回状态不正确");this.isAuthenticated=!0,this.isLoading=!1,"/login"===this.$route.path&&this.$router.replace("/user-center")}catch(t){if(console.error("获取用户信息出错:",t),this.isLoading=!1,N.A.remove("token"),"/user-center"===this.$route.path)return void this.$router.replace("/login");"/login"===this.$route.path&&this.showLoginDialog()}},showLoginDialog(){(0,Ve.A)().then((e=>{console.log("登录成功:",e),this.isAuthenticated=!0,this.$router.replace("/user-center")})).catch((e=>{console.log("登录取消:",e)}))},handleManageWorks(){const e=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;e?U.A.confirm("建议在电脑端进行投稿以获得最佳体验。仍要继续吗?","提示").then((()=>{this.$router.push("/submit")})).catch((()=>{console.log("用户取消了在移动端投稿")})):this.$router.push("/submit")}}};const He=(0,Q.A)(Ge,[["render",h],["__scopeId","data-v-c5320252"]]);var Ye=He}}]); +//# sourceMappingURL=11.6ebf0bde.js.map \ No newline at end of file diff --git a/dist/js/5.d13e79c5.js b/dist/js/5.56366bd5.js similarity index 99% rename from dist/js/5.d13e79c5.js rename to dist/js/5.56366bd5.js index 39f1710..8eba9cd 100644 --- a/dist/js/5.d13e79c5.js +++ b/dist/js/5.56366bd5.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[5],{2005:function(e,s,a){a.r(s),a.d(s,{default:function(){return g}});var l=a(6768),t=a(4232);const i={class:"user-demo"},n={class:"section"},r={class:"example"},d={class:"section"},o={class:"users-grid"},c={class:"card-content"};function u(e,s,a,u,v,f){const k=(0,l.g2)("UserMeta");return(0,l.uX)(),(0,l.CE)("div",i,[s[3]||(s[3]=(0,l.Lk)("h1",null,"用户信息组件示例",-1)),(0,l.Lk)("div",n,[s[0]||(s[0]=(0,l.Lk)("h2",null,"基本使用",-1)),(0,l.Lk)("div",r,[(0,l.bF)(k,{id:1})])]),(0,l.Lk)("div",d,[s[2]||(s[2]=(0,l.Lk)("h2",null,"多个用户展示",-1)),(0,l.Lk)("div",o,[((0,l.uX)(),(0,l.CE)(l.FK,null,(0,l.pI)([1,2,3,11],(e=>(0,l.Lk)("div",{key:e,class:"user-card"},[(0,l.bF)(k,{id:e},null,8,["id"]),(0,l.Lk)("div",c,[(0,l.Lk)("p",null,"这是用户ID为 "+(0,t.v_)(e)+" 的内容区域",1),s[1]||(s[1]=(0,l.Lk)("p",{class:"hint"},"将鼠标悬停在用户信息上查看详情",-1))])]))),64))])])])}var v=a(8701),f={name:"UserDemo",components:{UserMeta:v.A}},k=a(1241);const h=(0,k.A)(f,[["render",u],["__scopeId","data-v-0801b4ba"]]);var g=h},8701:function(e,s,a){a.d(s,{A:function(){return W}});var l=a(6768),t=a(4232),i=a(5130);const n={class:"user-meta"},r={class:"avatar-wrapper"},d=["src"],o={key:0,class:"avatar-loading"},c={class:"user-name"},u={class:"user-badges"},v=["title"],f=["title"],k={key:2,class:"badge medal"},h={class:"card-container"},g={class:"detail-header"},L=["src"],m={class:"detail-right"},p={class:"detail-name"},w={class:"user-badges"},I=["title"],b=["title"],C={key:2,class:"badge medal"},y={key:0,class:"user-sign"},E={class:"sign-text"},X={class:"user-stats"},U={class:"stat-item"},_={class:"stat-value"},D={class:"stat-item"},Q={class:"stat-value"},F={class:"card-footer"};function A(e,s,a,A,M,x){return(0,l.uX)(),(0,l.CE)("div",n,[(0,l.Lk)("div",{class:"user-basic",onMouseenter:s[0]||(s[0]=e=>M.showDetail=!0)},[(0,l.Lk)("div",r,[(0,l.Lk)("img",{src:M.userInfo.avatarUrl,alt:"用户头像",class:"avatar"},null,8,d),M.loading?((0,l.uX)(),(0,l.CE)("div",o,s[4]||(s[4]=[(0,l.Lk)("div",{class:"loading-spinner"},null,-1)]))):(0,l.Q3)("",!0)]),(0,l.Lk)("div",c,(0,t.v_)(M.userInfo.nickname),1),(0,l.Lk)("div",u,[M.userInfo.verified?((0,l.uX)(),(0,l.CE)("span",{key:0,class:"badge verified",title:M.userInfo.verified},"认证",8,v)):(0,l.Q3)("",!0),M.userInfo.invited?((0,l.uX)(),(0,l.CE)("span",{key:1,class:"badge invited",title:M.userInfo.invited},"特邀",8,f)):(0,l.Q3)("",!0),1===M.userInfo.medal?((0,l.uX)(),(0,l.CE)("span",k,"小站奖章")):(0,l.Q3)("",!0)])],32),(0,l.bF)(i.eB,{name:"detail-fade"},{default:(0,l.k6)((()=>[M.showDetail?((0,l.uX)(),(0,l.CE)("div",{key:0,class:"user-detail",onMouseenter:s[2]||(s[2]=e=>M.showDetail=!0),onMouseleave:s[3]||(s[3]=e=>M.showDetail=!1)},[(0,l.Lk)("div",h,[(0,l.Lk)("div",g,[s[5]||(s[5]=(0,l.Lk)("div",{class:"header-bg"},null,-1)),(0,l.Lk)("img",{src:M.userInfo.avatarUrl,alt:"用户头像",class:"detail-avatar"},null,8,L),(0,l.Lk)("div",m,[(0,l.Lk)("div",p,(0,t.v_)(M.userInfo.nickname),1),(0,l.Lk)("div",w,[M.userInfo.verified?((0,l.uX)(),(0,l.CE)("span",{key:0,class:"badge verified",title:M.userInfo.verified},"认证",8,I)):(0,l.Q3)("",!0),M.userInfo.invited?((0,l.uX)(),(0,l.CE)("span",{key:1,class:"badge invited",title:M.userInfo.invited},"特邀",8,b)):(0,l.Q3)("",!0),1===M.userInfo.medal?((0,l.uX)(),(0,l.CE)("span",C,"小站奖章")):(0,l.Q3)("",!0)])])]),M.userInfo.sign?((0,l.uX)(),(0,l.CE)("div",y,[s[6]||(s[6]=(0,l.Lk)("div",{class:"sign-icon"},"✍️",-1)),(0,l.Lk)("div",E,(0,t.v_)(M.userInfo.sign),1)])):(0,l.Q3)("",!0),(0,l.Lk)("div",X,[(0,l.Lk)("div",U,[(0,l.Lk)("div",_,(0,t.v_)(M.userInfo.follower),1),s[7]||(s[7]=(0,l.Lk)("div",{class:"stat-label"},"粉丝",-1))]),s[9]||(s[9]=(0,l.Lk)("div",{class:"stat-separator"},null,-1)),(0,l.Lk)("div",D,[(0,l.Lk)("div",Q,(0,t.v_)(M.userInfo.following),1),s[8]||(s[8]=(0,l.Lk)("div",{class:"stat-label"},"关注",-1))])]),(0,l.Lk)("div",F,[(0,l.Lk)("button",{class:"follow-btn",onClick:s[1]||(s[1]=(...e)=>x.handleFollow&&x.handleFollow(...e))},"+ 关注")])])],32)):(0,l.Q3)("",!0)])),_:1})])}var M=a(4373),x=a(6253),O={name:"UserMeta",props:{id:{type:[String,Number],required:!0}},data(){return{userInfo:{nickname:"默认用户",verified:null,invited:null,medal:0,avatarUrl:"https://download.东北大学.com/avatar/default.png",follower:0,following:0,sign:"Hello World!"},showDetail:!1,loading:!1,error:null}},created(){this.fetchUserInfo()},mounted(){document.addEventListener("click",this.handleClickOutside)},beforeUnmount(){document.removeEventListener("click",this.handleClickOutside)},watch:{id(){this.fetchUserInfo()}},methods:{async fetchUserInfo(){this.loading=!0;try{const e=await M.A.get(`https://userlogin.xn--xhq44jb2fzpc.com/submission/get-author-info?id=${this.id}`);e.data={...e.data,follower:e.data.follower||0,following:e.data.following||0,sign:e.data.sign||"Hello World!"},this.userInfo=e.data}catch(e){this.error="获取用户信息失败",console.error("获取用户信息失败:",e)}finally{this.loading=!1}},handleClickOutside(e){const s=this.$el;this.showDetail&&!s.contains(e.target)&&(this.showDetail=!1)},handleFollow(){x.A.alert("关注功能暂未开放,敬请期待","提示").then((()=>{})).catch((()=>{}))}}},q=a(1241);const H=(0,q.A)(O,[["render",A],["__scopeId","data-v-9156a04c"]]);var W=H}}]); -//# sourceMappingURL=5.d13e79c5.js.map \ No newline at end of file +//# sourceMappingURL=5.56366bd5.js.map \ No newline at end of file diff --git a/dist/js/663.febdcac8.js b/dist/js/663.5ba8d078.js similarity index 99% rename from dist/js/663.febdcac8.js rename to dist/js/663.5ba8d078.js index 3a6dc24..9d76b43 100644 --- a/dist/js/663.febdcac8.js +++ b/dist/js/663.5ba8d078.js @@ -1,2 +1,2 @@ -(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[663],{32:function(t,e,n){n(4114),n(8111),n(116),n(1701);const l="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],r=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],o=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],d=[].concat(o,c,s,r);function u(t){return t?"string"===typeof t?t:t.source:null}function h(t){return m("(?=",t,")")}function m(...t){const e=t.map((t=>u(t))).join("");return e}function U(t){const e=(t,{after:e})=>{const n="",end:""},r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(t,n)=>{const l=t[0].length+t.index,i=t.input[l];"<"!==i?">"===i&&(e(t,{after:l})||n.ignoreMatch()):n.ignoreMatch()}},o={$pattern:l,keyword:i,literal:a,built_in:d},c="[0-9](_?[0-9])*",u=`\\.(${c})`,U="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${U})((${u})|\\.)?|(${u}))[eE][+-]?(${c})\\b`},{begin:`\\b(${U})\\b((${u})\\b|\\.)?|(${u})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},F={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},b={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,F],subLanguage:"xml"}},Z={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,F],subLanguage:"css"}},N={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,F]},R=t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[R,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},W=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,b,Z,N,p,t.REGEXP_MODE];F.contains=W.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(W)});const V=[].concat(S,F.contains),Q=V.concat([{begin:/\(/,end:/\)/,keywords:o,contains:["self"].concat(V)}]),y={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:Q};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:Q},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,b,Z,N,S,p,{begin:m(/[{,\n]\s*/,h(m(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,n+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:n+h("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[S,t.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:Q}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:s.begin,end:s.end},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:o,contains:["self",t.inherit(t.TITLE_MODE,{begin:n}),y],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[y,t.inherit(t.TITLE_MODE,{begin:n})]},{variants:[{begin:"\\."+n},{begin:"\\$"+n}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:n}),"self",y]},{begin:"(get|set)\\s+(?="+n+"\\()",end:/\{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:n}),{begin:/\(\)/},y]},{begin:/\$[(.]/}]}}function p(t){const e=l,n={beginKeywords:"namespace",end:/\{/,excludeEnd:!0},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},r={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},o=["any","void","number","boolean","string","object","never","enum"],c=["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"],u={$pattern:l,keyword:i.concat(c),literal:a,built_in:d.concat(o)},h={className:"meta",begin:"@"+e},m=(t,e,n)=>{const l=t.contains.findIndex((t=>t.label===e));if(-1===l)throw new Error("can not find mode to replace");t.contains.splice(l,1,n)},p=U(t);Object.assign(p.keywords,u),p.exports.PARAMS_CONTAINS.push(h),p.contains=p.contains.concat([h,n,s]),m(p,"shebang",t.SHEBANG()),m(p,"use_strict",r);const F=p.contains.find((t=>"function"===t.className));return F.relevance=0,Object.assign(p,{name:"TypeScript",aliases:["ts","tsx"]}),p}t.exports=p},134:function(t){function e(t){const e={className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},n={className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},l={className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},i={className:"symbol",begin:/\\./};return{name:"Tagger Script",contains:[e,n,l,i]}}t.exports=e},155:function(t){function e(t){const e="module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",n="item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",l="eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN",i={className:"built_in",variants:[{begin:/\barray:/,end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap:/,end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0},{begin:/[^/,end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/,subLanguage:"xquery"},"self"]},m=[s,i,o,r,d,c,a,u,h];return{name:"XQuery",aliases:["xpath","xq"],case_insensitive:!1,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/,keyword:e,type:n,literal:l},contains:m}}t.exports=e},171:function(t){function e(t){const e=t.COMMENT(/\{/,/\}/,{contains:["self"]});return{name:"Parser3",subLanguage:"xml",relevance:0,contains:[t.COMMENT("^#","$"),t.COMMENT(/\^rem\{/,/\}/,{relevance:10,contains:[e]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:/\$\{?[\w\-.:]+\}?/},{className:"keyword",begin:/\^[\w\-.:]+/},{className:"number",begin:"\\^#[0-9a-fA-F]+"},t.C_NUMBER_MODE]}}t.exports=e},236:function(t){function e(t){const e="foreach do while for if from to step else on-error and or not in",n="global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime",l="add remove enable disable set get print export edit find run debug error info warning",i="true false yes no nothing nil null",a="traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw",s={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,s,{className:"variable",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]}]},o={className:"string",begin:/'/,end:/'/};return{name:"Microtik RouterOS script",aliases:["mikrotik"],case_insensitive:!0,keywords:{$pattern:/:?[\w-]+/,literal:i,keyword:e+" :"+e.split(" ").join(" :")+" :"+n.split(" ").join(" :")},contains:[{variants:[{begin:/\/\*/,end:/\*\//},{begin:/\/\//,end:/$/},{begin:/<\//,end:/>/}],illegal:/./},t.COMMENT("^#","$"),r,o,s,{begin:/[\w-]+=([^\s{}[\]()>]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[r,o,s,{className:"literal",begin:"\\b("+i.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s{}[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+l.split(" ").join("|")+")([\\s[(\\]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+a.split(" ").join("|")+");?\\s)+"},{begin:/\.\./,relevance:0}]}]}}t.exports=e},237:function(t){function e(t){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}t.exports=e},355:function(t){function e(t){const e=["functions","model","data","parameters","quantities","transformed","generated"],n=["for","in","if","else","while","break","continue","return"],l=["print","reject","increment_log_prob|10","integrate_ode|10","integrate_ode_rk45|10","integrate_ode_bdf|10","algebra_solver"],i=["int","real","vector","ordered","positive_ordered","simplex","unit_vector","row_vector","matrix","cholesky_factor_corr|10","cholesky_factor_cov|10","corr_matrix|10","cov_matrix|10","void"],a=["Phi","Phi_approx","abs","acos","acosh","algebra_solver","append_array","append_col","append_row","asin","asinh","atan","atan2","atanh","bernoulli_cdf","bernoulli_lccdf","bernoulli_lcdf","bernoulli_logit_lpmf","bernoulli_logit_rng","bernoulli_lpmf","bernoulli_rng","bessel_first_kind","bessel_second_kind","beta_binomial_cdf","beta_binomial_lccdf","beta_binomial_lcdf","beta_binomial_lpmf","beta_binomial_rng","beta_cdf","beta_lccdf","beta_lcdf","beta_lpdf","beta_rng","binary_log_loss","binomial_cdf","binomial_coefficient_log","binomial_lccdf","binomial_lcdf","binomial_logit_lpmf","binomial_lpmf","binomial_rng","block","categorical_logit_lpmf","categorical_logit_rng","categorical_lpmf","categorical_rng","cauchy_cdf","cauchy_lccdf","cauchy_lcdf","cauchy_lpdf","cauchy_rng","cbrt","ceil","chi_square_cdf","chi_square_lccdf","chi_square_lcdf","chi_square_lpdf","chi_square_rng","cholesky_decompose","choose","col","cols","columns_dot_product","columns_dot_self","cos","cosh","cov_exp_quad","crossprod","csr_extract_u","csr_extract_v","csr_extract_w","csr_matrix_times_vector","csr_to_dense_matrix","cumulative_sum","determinant","diag_matrix","diag_post_multiply","diag_pre_multiply","diagonal","digamma","dims","dirichlet_lpdf","dirichlet_rng","distance","dot_product","dot_self","double_exponential_cdf","double_exponential_lccdf","double_exponential_lcdf","double_exponential_lpdf","double_exponential_rng","e","eigenvalues_sym","eigenvectors_sym","erf","erfc","exp","exp2","exp_mod_normal_cdf","exp_mod_normal_lccdf","exp_mod_normal_lcdf","exp_mod_normal_lpdf","exp_mod_normal_rng","expm1","exponential_cdf","exponential_lccdf","exponential_lcdf","exponential_lpdf","exponential_rng","fabs","falling_factorial","fdim","floor","fma","fmax","fmin","fmod","frechet_cdf","frechet_lccdf","frechet_lcdf","frechet_lpdf","frechet_rng","gamma_cdf","gamma_lccdf","gamma_lcdf","gamma_lpdf","gamma_p","gamma_q","gamma_rng","gaussian_dlm_obs_lpdf","get_lp","gumbel_cdf","gumbel_lccdf","gumbel_lcdf","gumbel_lpdf","gumbel_rng","head","hypergeometric_lpmf","hypergeometric_rng","hypot","inc_beta","int_step","integrate_ode","integrate_ode_bdf","integrate_ode_rk45","inv","inv_Phi","inv_chi_square_cdf","inv_chi_square_lccdf","inv_chi_square_lcdf","inv_chi_square_lpdf","inv_chi_square_rng","inv_cloglog","inv_gamma_cdf","inv_gamma_lccdf","inv_gamma_lcdf","inv_gamma_lpdf","inv_gamma_rng","inv_logit","inv_sqrt","inv_square","inv_wishart_lpdf","inv_wishart_rng","inverse","inverse_spd","is_inf","is_nan","lbeta","lchoose","lgamma","lkj_corr_cholesky_lpdf","lkj_corr_cholesky_rng","lkj_corr_lpdf","lkj_corr_rng","lmgamma","lmultiply","log","log10","log1m","log1m_exp","log1m_inv_logit","log1p","log1p_exp","log2","log_determinant","log_diff_exp","log_falling_factorial","log_inv_logit","log_mix","log_rising_factorial","log_softmax","log_sum_exp","logistic_cdf","logistic_lccdf","logistic_lcdf","logistic_lpdf","logistic_rng","logit","lognormal_cdf","lognormal_lccdf","lognormal_lcdf","lognormal_lpdf","lognormal_rng","machine_precision","matrix_exp","max","mdivide_left_spd","mdivide_left_tri_low","mdivide_right_spd","mdivide_right_tri_low","mean","min","modified_bessel_first_kind","modified_bessel_second_kind","multi_gp_cholesky_lpdf","multi_gp_lpdf","multi_normal_cholesky_lpdf","multi_normal_cholesky_rng","multi_normal_lpdf","multi_normal_prec_lpdf","multi_normal_rng","multi_student_t_lpdf","multi_student_t_rng","multinomial_lpmf","multinomial_rng","multiply_log","multiply_lower_tri_self_transpose","neg_binomial_2_cdf","neg_binomial_2_lccdf","neg_binomial_2_lcdf","neg_binomial_2_log_lpmf","neg_binomial_2_log_rng","neg_binomial_2_lpmf","neg_binomial_2_rng","neg_binomial_cdf","neg_binomial_lccdf","neg_binomial_lcdf","neg_binomial_lpmf","neg_binomial_rng","negative_infinity","normal_cdf","normal_lccdf","normal_lcdf","normal_lpdf","normal_rng","not_a_number","num_elements","ordered_logistic_lpmf","ordered_logistic_rng","owens_t","pareto_cdf","pareto_lccdf","pareto_lcdf","pareto_lpdf","pareto_rng","pareto_type_2_cdf","pareto_type_2_lccdf","pareto_type_2_lcdf","pareto_type_2_lpdf","pareto_type_2_rng","pi","poisson_cdf","poisson_lccdf","poisson_lcdf","poisson_log_lpmf","poisson_log_rng","poisson_lpmf","poisson_rng","positive_infinity","pow","print","prod","qr_Q","qr_R","quad_form","quad_form_diag","quad_form_sym","rank","rayleigh_cdf","rayleigh_lccdf","rayleigh_lcdf","rayleigh_lpdf","rayleigh_rng","reject","rep_array","rep_matrix","rep_row_vector","rep_vector","rising_factorial","round","row","rows","rows_dot_product","rows_dot_self","scaled_inv_chi_square_cdf","scaled_inv_chi_square_lccdf","scaled_inv_chi_square_lcdf","scaled_inv_chi_square_lpdf","scaled_inv_chi_square_rng","sd","segment","sin","singular_values","sinh","size","skew_normal_cdf","skew_normal_lccdf","skew_normal_lcdf","skew_normal_lpdf","skew_normal_rng","softmax","sort_asc","sort_desc","sort_indices_asc","sort_indices_desc","sqrt","sqrt2","square","squared_distance","step","student_t_cdf","student_t_lccdf","student_t_lcdf","student_t_lpdf","student_t_rng","sub_col","sub_row","sum","tail","tan","tanh","target","tcrossprod","tgamma","to_array_1d","to_array_2d","to_matrix","to_row_vector","to_vector","trace","trace_gen_quad_form","trace_quad_form","trigamma","trunc","uniform_cdf","uniform_lccdf","uniform_lcdf","uniform_lpdf","uniform_rng","variance","von_mises_lpdf","von_mises_rng","weibull_cdf","weibull_lccdf","weibull_lcdf","weibull_lpdf","weibull_rng","wiener_lpdf","wishart_lpdf","wishart_rng"],s=["bernoulli","bernoulli_logit","beta","beta_binomial","binomial","binomial_logit","categorical","categorical_logit","cauchy","chi_square","dirichlet","double_exponential","exp_mod_normal","exponential","frechet","gamma","gaussian_dlm_obs","gumbel","hypergeometric","inv_chi_square","inv_gamma","inv_wishart","lkj_corr","lkj_corr_cholesky","logistic","lognormal","multi_gp","multi_gp_cholesky","multi_normal","multi_normal_cholesky","multi_normal_prec","multi_student_t","multinomial","neg_binomial","neg_binomial_2","neg_binomial_2_log","normal","ordered_logistic","pareto","pareto_type_2","poisson","poisson_log","rayleigh","scaled_inv_chi_square","skew_normal","student_t","uniform","von_mises","weibull","wiener","wishart"];return{name:"Stan",aliases:["stanfuncs"],keywords:{$pattern:t.IDENT_RE,title:e,keyword:n.concat(i).concat(l),built_in:a},contains:[t.C_LINE_COMMENT_MODE,t.COMMENT(/#/,/$/,{relevance:0,keywords:{"meta-keyword":"include"}}),t.COMMENT(/\/\*/,/\*\//,{relevance:0,contains:[{className:"doctag",begin:/@(return|param)/}]}),{begin:/<\s*lower\s*=/,keywords:"lower"},{begin:/[<,]\s*upper\s*=/,keywords:"upper"},{className:"keyword",begin:/\btarget\s*\+=/,relevance:10},{begin:"~\\s*("+t.IDENT_RE+")\\s*\\(",keywords:s},{className:"number",variants:[{begin:/\b\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/},{begin:/\.\d+(?:[eE][+-]?\d+)?\b/}],relevance:0},{className:"string",begin:'"',end:'"',relevance:0}]}}t.exports=e},427:function(t){const e=t=>({IMPORTANT:{className:"meta",begin:"!important"},HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}}),n=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],l=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],a=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],s=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse();function r(t){const r=e(t),o=a,c=i,d="@[a-z-]+",u="and or not only",h="[a-zA-Z-][a-zA-Z0-9_-]*",m={className:"variable",begin:"(\\$"+h+")\\b"};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},r.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+n.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+c.join("|")+")"},{className:"selector-pseudo",begin:"::("+o.join("|")+")"},m,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},{className:"attribute",begin:"\\b("+s.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[m,r.HEXCOLOR,t.CSS_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,r.IMPORTANT]},{begin:"@(page|font-face)",lexemes:d,keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:u,attribute:l.join(" ")},contains:[{begin:d,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},m,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,r.HEXCOLOR,t.CSS_NUMBER_MODE]}]}}t.exports=r},531:function(t,e,n){"use strict";var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(8646),c=n(9462),d=n(9539),u=n(6395),h=c((function(){var t,e,n=this.iterator,l=this.mapper;while(1){if(e=this.inner)try{if(t=s(i(e.next,e.iterator)),!t.done)return t.value;this.inner=null}catch(a){d(n,"throw",a)}if(t=s(i(this.next,n)),this.done=!!t.done)return;try{this.inner=o(l(t.value,this.counter++),!1)}catch(a){d(n,"throw",a)}}}));l({target:"Iterator",proto:!0,real:!0,forced:u},{flatMap:function(t){return s(this),a(t),new h(r(this),{mapper:t,inner:null})}})},571:function(t){function e(t){const e={$pattern:t.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},n="(0|[1-9][\\d_]*)",l="(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)",i="0[bB][01_]+",a="([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)",s="0[xX]"+a,r="([eE][+-]?"+l+")",o="("+l+"(\\.\\d*|"+r+")|\\d+\\."+l+"|\\."+n+r+"?)",c="(0[xX]("+a+"\\."+a+"|\\.?"+a+")[pP][+-]?"+l+")",d="("+n+"|"+i+"|"+s+")",u="("+c+"|"+o+")",h="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",m={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},U={className:"number",begin:"\\b("+u+"([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},p={className:"string",begin:"'("+h+"|.)",end:"'",illegal:"."},F={begin:h,relevance:0},b={className:"string",begin:'"',contains:[F],end:'"[cwd]?'},Z={className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},N={className:"string",begin:"`",end:"`[cwd]?"},R={className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},S={className:"string",begin:'q"\\{',end:'\\}"'},W={className:"meta",begin:"^#!",end:"$",relevance:5},V={className:"meta",begin:"#(line)",end:"$",relevance:5},Q={className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"},y=t.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:e,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,y,R,b,Z,N,S,U,m,p,W,V,Q]}}t.exports=e},592:function(t){function e(t){return{name:"Processing",keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE]}}t.exports=e},618:function(t){function e(t){return{name:"Oracle Rules Language",keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+",relevance:0},{begin:"#[a-zA-Z .]+"}]}]}}t.exports=e},633:function(t){function e(t){const e={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",l={className:"subst",begin:/#\{/,end:/\}/,keywords:e},i=[t.inherit(t.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[t.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,l]}]},{className:"built_in",begin:"@__"+t.IDENT_RE},{begin:"@"+t.IDENT_RE},{begin:t.IDENT_RE+"\\\\"+t.IDENT_RE}];l.contains=i;const a=t.inherit(t.TITLE_MODE,{begin:n}),s="(\\(.*\\)\\s*)?\\B[-=]>",r={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:e,contains:["self"].concat(i)}]};return{name:"MoonScript",aliases:["moon"],keywords:e,illegal:/\/\*/,contains:i.concat([t.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*"+s,end:"[-=]>",returnBegin:!0,contains:[a,r]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:s,end:"[-=]>",returnBegin:!0,contains:[r]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[a]},a]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}t.exports=e},663:function(t){function e(t){return{name:"Cap’n Proto",aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[t.QUOTE_STRING_MODE,t.NUMBER_MODE,t.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[t.inherit(t.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[t.inherit(t.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}t.exports=e},789:function(t){function e(t){const e={className:"variable",begin:/\b_+[a-zA-Z]\w*/},n={className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},l={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},i={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(l,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]};return{name:"SQF",case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.NUMBER_MODE,e,n,l,i],illegal:/#|^\$ /}}t.exports=e},829:function(t){function e(t){const e="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{name:"Roboconf",aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+e,end:/\}/,keywords:"facet",contains:[n,t.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+e,end:/\}/,keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,t.HASH_COMMENT_MODE]},{begin:"^"+e,end:/\}/,contains:[n,t.HASH_COMMENT_MODE]},t.HASH_COMMENT_MODE]}}t.exports=e},834:function(t){function e(t,n,l){var i="KaTeX parse error: "+t;if(void 0!==n&&void 0!==l){i+=" at position "+l+": ";var a=n._input;a=a.slice(0,l)+"̲"+a.slice(l);var s=Math.max(0,l-15),r=l+15;i+=a.slice(s,r)}var o=new Error(i);return o.name="ParseError",o.__proto__=e.prototype,o.position=l,o}e.prototype.__proto__=Error.prototype,t.exports=e},840:function(t){function e(e,n,l,i,a){t.exports[e][a]={font:n,group:l,replace:i}}t.exports={math:{},text:{}};var n,l,i="math",a="text",s="main",r="ams",o="accent",c="bin",d="close",u="inner",h="mathord",m="op",U="open",p="punct",F="rel",b="spacing",Z="textord";e(i,s,F,"≡","\\equiv"),e(i,s,F,"≺","\\prec"),e(i,s,F,"≻","\\succ"),e(i,s,F,"∼","\\sim"),e(i,s,F,"⊥","\\perp"),e(i,s,F,"⪯","\\preceq"),e(i,s,F,"⪰","\\succeq"),e(i,s,F,"≃","\\simeq"),e(i,s,F,"∣","\\mid"),e(i,s,F,"≪","\\ll"),e(i,s,F,"≫","\\gg"),e(i,s,F,"≍","\\asymp"),e(i,s,F,"∥","\\parallel"),e(i,s,F,"⋈","\\bowtie"),e(i,s,F,"⌣","\\smile"),e(i,s,F,"⊑","\\sqsubseteq"),e(i,s,F,"⊒","\\sqsupseteq"),e(i,s,F,"≐","\\doteq"),e(i,s,F,"⌢","\\frown"),e(i,s,F,"∋","\\ni"),e(i,s,F,"∝","\\propto"),e(i,s,F,"⊢","\\vdash"),e(i,s,F,"⊣","\\dashv"),e(i,s,F,"∋","\\owns"),e(i,s,p,".","\\ldotp"),e(i,s,p,"⋅","\\cdotp"),e(i,s,Z,"#","\\#"),e(i,s,Z,"&","\\&"),e(i,s,Z,"ℵ","\\aleph"),e(i,s,Z,"∀","\\forall"),e(i,s,Z,"ℏ","\\hbar"),e(i,s,Z,"∃","\\exists"),e(i,s,Z,"∇","\\nabla"),e(i,s,Z,"♭","\\flat"),e(i,s,Z,"ℓ","\\ell"),e(i,s,Z,"♮","\\natural"),e(i,s,Z,"♣","\\clubsuit"),e(i,s,Z,"℘","\\wp"),e(i,s,Z,"♯","\\sharp"),e(i,s,Z,"♢","\\diamondsuit"),e(i,s,Z,"ℜ","\\Re"),e(i,s,Z,"♡","\\heartsuit"),e(i,s,Z,"ℑ","\\Im"),e(i,s,Z,"♠","\\spadesuit"),e(i,s,Z,"†","\\dag"),e(i,s,Z,"‡","\\ddag"),e(i,s,d,"⎱","\\rmoustache"),e(i,s,U,"⎰","\\lmoustache"),e(i,s,d,"⟯","\\rgroup"),e(i,s,U,"⟮","\\lgroup"),e(i,s,c,"∓","\\mp"),e(i,s,c,"⊖","\\ominus"),e(i,s,c,"⊎","\\uplus"),e(i,s,c,"⊓","\\sqcap"),e(i,s,c,"∗","\\ast"),e(i,s,c,"⊔","\\sqcup"),e(i,s,c,"◯","\\bigcirc"),e(i,s,c,"∙","\\bullet"),e(i,s,c,"‡","\\ddagger"),e(i,s,c,"≀","\\wr"),e(i,s,c,"⨿","\\amalg"),e(i,s,F,"⟵","\\longleftarrow"),e(i,s,F,"⇐","\\Leftarrow"),e(i,s,F,"⟸","\\Longleftarrow"),e(i,s,F,"⟶","\\longrightarrow"),e(i,s,F,"⇒","\\Rightarrow"),e(i,s,F,"⟹","\\Longrightarrow"),e(i,s,F,"↔","\\leftrightarrow"),e(i,s,F,"⟷","\\longleftrightarrow"),e(i,s,F,"⇔","\\Leftrightarrow"),e(i,s,F,"⟺","\\Longleftrightarrow"),e(i,s,F,"↦","\\mapsto"),e(i,s,F,"⟼","\\longmapsto"),e(i,s,F,"↗","\\nearrow"),e(i,s,F,"↩","\\hookleftarrow"),e(i,s,F,"↪","\\hookrightarrow"),e(i,s,F,"↘","\\searrow"),e(i,s,F,"↼","\\leftharpoonup"),e(i,s,F,"⇀","\\rightharpoonup"),e(i,s,F,"↙","\\swarrow"),e(i,s,F,"↽","\\leftharpoondown"),e(i,s,F,"⇁","\\rightharpoondown"),e(i,s,F,"↖","\\nwarrow"),e(i,s,F,"⇌","\\rightleftharpoons"),e(i,r,F,"≮","\\nless"),e(i,r,F,"","\\nleqslant"),e(i,r,F,"","\\nleqq"),e(i,r,F,"⪇","\\lneq"),e(i,r,F,"≨","\\lneqq"),e(i,r,F,"","\\lvertneqq"),e(i,r,F,"⋦","\\lnsim"),e(i,r,F,"⪉","\\lnapprox"),e(i,r,F,"⊀","\\nprec"),e(i,r,F,"⋠","\\npreceq"),e(i,r,F,"⋨","\\precnsim"),e(i,r,F,"⪹","\\precnapprox"),e(i,r,F,"≁","\\nsim"),e(i,r,F,"","\\nshortmid"),e(i,r,F,"∤","\\nmid"),e(i,r,F,"⊬","\\nvdash"),e(i,r,F,"⊭","\\nvDash"),e(i,r,F,"⋪","\\ntriangleleft"),e(i,r,F,"⋬","\\ntrianglelefteq"),e(i,r,F,"⊊","\\subsetneq"),e(i,r,F,"","\\varsubsetneq"),e(i,r,F,"⫋","\\subsetneqq"),e(i,r,F,"","\\varsubsetneqq"),e(i,r,F,"≯","\\ngtr"),e(i,r,F,"","\\ngeqslant"),e(i,r,F,"","\\ngeqq"),e(i,r,F,"⪈","\\gneq"),e(i,r,F,"≩","\\gneqq"),e(i,r,F,"","\\gvertneqq"),e(i,r,F,"⋧","\\gnsim"),e(i,r,F,"⪊","\\gnapprox"),e(i,r,F,"⊁","\\nsucc"),e(i,r,F,"⋡","\\nsucceq"),e(i,r,F,"⋩","\\succnsim"),e(i,r,F,"⪺","\\succnapprox"),e(i,r,F,"≆","\\ncong"),e(i,r,F,"","\\nshortparallel"),e(i,r,F,"∦","\\nparallel"),e(i,r,F,"⊯","\\nVDash"),e(i,r,F,"⋫","\\ntriangleright"),e(i,r,F,"⋭","\\ntrianglerighteq"),e(i,r,F,"","\\nsupseteqq"),e(i,r,F,"⊋","\\supsetneq"),e(i,r,F,"","\\varsupsetneq"),e(i,r,F,"⫌","\\supsetneqq"),e(i,r,F,"","\\varsupsetneqq"),e(i,r,F,"⊮","\\nVdash"),e(i,r,F,"⪵","\\precneqq"),e(i,r,F,"⪶","\\succneqq"),e(i,r,F,"","\\nsubseteqq"),e(i,r,c,"⊴","\\unlhd"),e(i,r,c,"⊵","\\unrhd"),e(i,r,F,"↚","\\nleftarrow"),e(i,r,F,"↛","\\nrightarrow"),e(i,r,F,"⇍","\\nLeftarrow"),e(i,r,F,"⇏","\\nRightarrow"),e(i,r,F,"↮","\\nleftrightarrow"),e(i,r,F,"⇎","\\nLeftrightarrow"),e(i,r,F,"△","\\vartriangle"),e(i,r,Z,"ℏ","\\hslash"),e(i,r,Z,"▽","\\triangledown"),e(i,r,Z,"◊","\\lozenge"),e(i,r,Z,"Ⓢ","\\circledS"),e(i,r,Z,"®","\\circledR"),e(i,r,Z,"∡","\\measuredangle"),e(i,r,Z,"∄","\\nexists"),e(i,r,Z,"℧","\\mho"),e(i,r,Z,"Ⅎ","\\Finv"),e(i,r,Z,"⅁","\\Game"),e(i,r,Z,"k","\\Bbbk"),e(i,r,Z,"‵","\\backprime"),e(i,r,Z,"▲","\\blacktriangle"),e(i,r,Z,"▼","\\blacktriangledown"),e(i,r,Z,"■","\\blacksquare"),e(i,r,Z,"⧫","\\blacklozenge"),e(i,r,Z,"★","\\bigstar"),e(i,r,Z,"∢","\\sphericalangle"),e(i,r,Z,"∁","\\complement"),e(i,r,Z,"ð","\\eth"),e(i,r,Z,"╱","\\diagup"),e(i,r,Z,"╲","\\diagdown"),e(i,r,Z,"□","\\square"),e(i,r,Z,"□","\\Box"),e(i,r,Z,"◊","\\Diamond"),e(i,r,Z,"¥","\\yen"),e(i,r,Z,"✓","\\checkmark"),e(i,r,Z,"ℶ","\\beth"),e(i,r,Z,"ℸ","\\daleth"),e(i,r,Z,"ℷ","\\gimel"),e(i,r,Z,"ϝ","\\digamma"),e(i,r,Z,"ϰ","\\varkappa"),e(i,r,U,"┌","\\ulcorner"),e(i,r,d,"┐","\\urcorner"),e(i,r,U,"└","\\llcorner"),e(i,r,d,"┘","\\lrcorner"),e(i,r,F,"≦","\\leqq"),e(i,r,F,"⩽","\\leqslant"),e(i,r,F,"⪕","\\eqslantless"),e(i,r,F,"≲","\\lesssim"),e(i,r,F,"⪅","\\lessapprox"),e(i,r,F,"≊","\\approxeq"),e(i,r,c,"⋖","\\lessdot"),e(i,r,F,"⋘","\\lll"),e(i,r,F,"≶","\\lessgtr"),e(i,r,F,"⋚","\\lesseqgtr"),e(i,r,F,"⪋","\\lesseqqgtr"),e(i,r,F,"≑","\\doteqdot"),e(i,r,F,"≓","\\risingdotseq"),e(i,r,F,"≒","\\fallingdotseq"),e(i,r,F,"∽","\\backsim"),e(i,r,F,"⋍","\\backsimeq"),e(i,r,F,"⫅","\\subseteqq"),e(i,r,F,"⋐","\\Subset"),e(i,r,F,"⊏","\\sqsubset"),e(i,r,F,"≼","\\preccurlyeq"),e(i,r,F,"⋞","\\curlyeqprec"),e(i,r,F,"≾","\\precsim"),e(i,r,F,"⪷","\\precapprox"),e(i,r,F,"⊲","\\vartriangleleft"),e(i,r,F,"⊴","\\trianglelefteq"),e(i,r,F,"⊨","\\vDash"),e(i,r,F,"⊪","\\Vvdash"),e(i,r,F,"⌣","\\smallsmile"),e(i,r,F,"⌢","\\smallfrown"),e(i,r,F,"≏","\\bumpeq"),e(i,r,F,"≎","\\Bumpeq"),e(i,r,F,"≧","\\geqq"),e(i,r,F,"⩾","\\geqslant"),e(i,r,F,"⪖","\\eqslantgtr"),e(i,r,F,"≳","\\gtrsim"),e(i,r,F,"⪆","\\gtrapprox"),e(i,r,c,"⋗","\\gtrdot"),e(i,r,F,"⋙","\\ggg"),e(i,r,F,"≷","\\gtrless"),e(i,r,F,"⋛","\\gtreqless"),e(i,r,F,"⪌","\\gtreqqless"),e(i,r,F,"≖","\\eqcirc"),e(i,r,F,"≗","\\circeq"),e(i,r,F,"≜","\\triangleq"),e(i,r,F,"∼","\\thicksim"),e(i,r,F,"≈","\\thickapprox"),e(i,r,F,"⫆","\\supseteqq"),e(i,r,F,"⋑","\\Supset"),e(i,r,F,"⊐","\\sqsupset"),e(i,r,F,"≽","\\succcurlyeq"),e(i,r,F,"⋟","\\curlyeqsucc"),e(i,r,F,"≿","\\succsim"),e(i,r,F,"⪸","\\succapprox"),e(i,r,F,"⊳","\\vartriangleright"),e(i,r,F,"⊵","\\trianglerighteq"),e(i,r,F,"⊩","\\Vdash"),e(i,r,F,"∣","\\shortmid"),e(i,r,F,"∥","\\shortparallel"),e(i,r,F,"≬","\\between"),e(i,r,F,"⋔","\\pitchfork"),e(i,r,F,"∝","\\varpropto"),e(i,r,F,"◀","\\blacktriangleleft"),e(i,r,F,"∴","\\therefore"),e(i,r,F,"∍","\\backepsilon"),e(i,r,F,"▶","\\blacktriangleright"),e(i,r,F,"∵","\\because"),e(i,r,F,"⋘","\\llless"),e(i,r,F,"⋙","\\gggtr"),e(i,r,c,"⊲","\\lhd"),e(i,r,c,"⊳","\\rhd"),e(i,r,F,"≂","\\eqsim"),e(i,s,F,"⋈","\\Join"),e(i,r,F,"≑","\\Doteq"),e(i,r,c,"∔","\\dotplus"),e(i,r,c,"∖","\\smallsetminus"),e(i,r,c,"⋒","\\Cap"),e(i,r,c,"⋓","\\Cup"),e(i,r,c,"⩞","\\doublebarwedge"),e(i,r,c,"⊟","\\boxminus"),e(i,r,c,"⊞","\\boxplus"),e(i,r,c,"⋇","\\divideontimes"),e(i,r,c,"⋉","\\ltimes"),e(i,r,c,"⋊","\\rtimes"),e(i,r,c,"⋋","\\leftthreetimes"),e(i,r,c,"⋌","\\rightthreetimes"),e(i,r,c,"⋏","\\curlywedge"),e(i,r,c,"⋎","\\curlyvee"),e(i,r,c,"⊝","\\circleddash"),e(i,r,c,"⊛","\\circledast"),e(i,r,c,"⋅","\\centerdot"),e(i,r,c,"⊺","\\intercal"),e(i,r,c,"⋒","\\doublecap"),e(i,r,c,"⋓","\\doublecup"),e(i,r,c,"⊠","\\boxtimes"),e(i,r,F,"⇢","\\dashrightarrow"),e(i,r,F,"⇠","\\dashleftarrow"),e(i,r,F,"⇇","\\leftleftarrows"),e(i,r,F,"⇆","\\leftrightarrows"),e(i,r,F,"⇚","\\Lleftarrow"),e(i,r,F,"↞","\\twoheadleftarrow"),e(i,r,F,"↢","\\leftarrowtail"),e(i,r,F,"↫","\\looparrowleft"),e(i,r,F,"⇋","\\leftrightharpoons"),e(i,r,F,"↶","\\curvearrowleft"),e(i,r,F,"↺","\\circlearrowleft"),e(i,r,F,"↰","\\Lsh"),e(i,r,F,"⇈","\\upuparrows"),e(i,r,F,"↿","\\upharpoonleft"),e(i,r,F,"⇃","\\downharpoonleft"),e(i,r,F,"⊸","\\multimap"),e(i,r,F,"↭","\\leftrightsquigarrow"),e(i,r,F,"⇉","\\rightrightarrows"),e(i,r,F,"⇄","\\rightleftarrows"),e(i,r,F,"↠","\\twoheadrightarrow"),e(i,r,F,"↣","\\rightarrowtail"),e(i,r,F,"↬","\\looparrowright"),e(i,r,F,"↷","\\curvearrowright"),e(i,r,F,"↻","\\circlearrowright"),e(i,r,F,"↱","\\Rsh"),e(i,r,F,"⇊","\\downdownarrows"),e(i,r,F,"↾","\\upharpoonright"),e(i,r,F,"⇂","\\downharpoonright"),e(i,r,F,"⇝","\\rightsquigarrow"),e(i,r,F,"⇝","\\leadsto"),e(i,r,F,"⇛","\\Rrightarrow"),e(i,r,F,"↾","\\restriction"),e(i,s,Z,"‘","`"),e(i,s,Z,"$","\\$"),e(i,s,Z,"%","\\%"),e(i,s,Z,"_","\\_"),e(i,s,Z,"∠","\\angle"),e(i,s,Z,"∞","\\infty"),e(i,s,Z,"′","\\prime"),e(i,s,Z,"△","\\triangle"),e(i,s,Z,"Γ","\\Gamma"),e(i,s,Z,"Δ","\\Delta"),e(i,s,Z,"Θ","\\Theta"),e(i,s,Z,"Λ","\\Lambda"),e(i,s,Z,"Ξ","\\Xi"),e(i,s,Z,"Π","\\Pi"),e(i,s,Z,"Σ","\\Sigma"),e(i,s,Z,"Υ","\\Upsilon"),e(i,s,Z,"Φ","\\Phi"),e(i,s,Z,"Ψ","\\Psi"),e(i,s,Z,"Ω","\\Omega"),e(i,s,Z,"¬","\\neg"),e(i,s,Z,"¬","\\lnot"),e(i,s,Z,"⊤","\\top"),e(i,s,Z,"⊥","\\bot"),e(i,s,Z,"∅","\\emptyset"),e(i,r,Z,"∅","\\varnothing"),e(i,s,h,"α","\\alpha"),e(i,s,h,"β","\\beta"),e(i,s,h,"γ","\\gamma"),e(i,s,h,"δ","\\delta"),e(i,s,h,"ϵ","\\epsilon"),e(i,s,h,"ζ","\\zeta"),e(i,s,h,"η","\\eta"),e(i,s,h,"θ","\\theta"),e(i,s,h,"ι","\\iota"),e(i,s,h,"κ","\\kappa"),e(i,s,h,"λ","\\lambda"),e(i,s,h,"μ","\\mu"),e(i,s,h,"ν","\\nu"),e(i,s,h,"ξ","\\xi"),e(i,s,h,"o","\\omicron"),e(i,s,h,"π","\\pi"),e(i,s,h,"ρ","\\rho"),e(i,s,h,"σ","\\sigma"),e(i,s,h,"τ","\\tau"),e(i,s,h,"υ","\\upsilon"),e(i,s,h,"ϕ","\\phi"),e(i,s,h,"χ","\\chi"),e(i,s,h,"ψ","\\psi"),e(i,s,h,"ω","\\omega"),e(i,s,h,"ε","\\varepsilon"),e(i,s,h,"ϑ","\\vartheta"),e(i,s,h,"ϖ","\\varpi"),e(i,s,h,"ϱ","\\varrho"),e(i,s,h,"ς","\\varsigma"),e(i,s,h,"φ","\\varphi"),e(i,s,c,"∗","*"),e(i,s,c,"+","+"),e(i,s,c,"−","-"),e(i,s,c,"⋅","\\cdot"),e(i,s,c,"∘","\\circ"),e(i,s,c,"÷","\\div"),e(i,s,c,"±","\\pm"),e(i,s,c,"×","\\times"),e(i,s,c,"∩","\\cap"),e(i,s,c,"∪","\\cup"),e(i,s,c,"∖","\\setminus"),e(i,s,c,"∧","\\land"),e(i,s,c,"∨","\\lor"),e(i,s,c,"∧","\\wedge"),e(i,s,c,"∨","\\vee"),e(i,s,Z,"√","\\surd"),e(i,s,U,"(","("),e(i,s,U,"[","["),e(i,s,U,"⟨","\\langle"),e(i,s,U,"∣","\\lvert"),e(i,s,U,"∥","\\lVert"),e(i,s,d,")",")"),e(i,s,d,"]","]"),e(i,s,d,"?","?"),e(i,s,d,"!","!"),e(i,s,d,"⟩","\\rangle"),e(i,s,d,"∣","\\rvert"),e(i,s,d,"∥","\\rVert"),e(i,s,F,"=","="),e(i,s,F,"<","<"),e(i,s,F,">",">"),e(i,s,F,":",":"),e(i,s,F,"≈","\\approx"),e(i,s,F,"≅","\\cong"),e(i,s,F,"≥","\\ge"),e(i,s,F,"≥","\\geq"),e(i,s,F,"←","\\gets"),e(i,s,F,">","\\gt"),e(i,s,F,"∈","\\in"),e(i,s,F,"∉","\\notin"),e(i,s,F,"⊂","\\subset"),e(i,s,F,"⊃","\\supset"),e(i,s,F,"⊆","\\subseteq"),e(i,s,F,"⊇","\\supseteq"),e(i,r,F,"⊈","\\nsubseteq"),e(i,r,F,"⊉","\\nsupseteq"),e(i,s,F,"⊨","\\models"),e(i,s,F,"←","\\leftarrow"),e(i,s,F,"≤","\\le"),e(i,s,F,"≤","\\leq"),e(i,s,F,"<","\\lt"),e(i,s,F,"≠","\\ne"),e(i,s,F,"≠","\\neq"),e(i,s,F,"→","\\rightarrow"),e(i,s,F,"→","\\to"),e(i,r,F,"≱","\\ngeq"),e(i,r,F,"≰","\\nleq"),e(i,s,b,null,"\\!"),e(i,s,b," ","\\ "),e(i,s,b," ","~"),e(i,s,b,null,"\\,"),e(i,s,b,null,"\\:"),e(i,s,b,null,"\\;"),e(i,s,b,null,"\\enspace"),e(i,s,b,null,"\\qquad"),e(i,s,b,null,"\\quad"),e(i,s,b," ","\\space"),e(i,s,p,",",","),e(i,s,p,";",";"),e(i,s,p,":","\\colon"),e(i,r,c,"⊼","\\barwedge"),e(i,r,c,"⊻","\\veebar"),e(i,s,c,"⊙","\\odot"),e(i,s,c,"⊕","\\oplus"),e(i,s,c,"⊗","\\otimes"),e(i,s,Z,"∂","\\partial"),e(i,s,c,"⊘","\\oslash"),e(i,r,c,"⊚","\\circledcirc"),e(i,r,c,"⊡","\\boxdot"),e(i,s,c,"△","\\bigtriangleup"),e(i,s,c,"▽","\\bigtriangledown"),e(i,s,c,"†","\\dagger"),e(i,s,c,"⋄","\\diamond"),e(i,s,c,"⋆","\\star"),e(i,s,c,"◃","\\triangleleft"),e(i,s,c,"▹","\\triangleright"),e(i,s,U,"{","\\{"),e(i,s,d,"}","\\}"),e(i,s,U,"{","\\lbrace"),e(i,s,d,"}","\\rbrace"),e(i,s,U,"[","\\lbrack"),e(i,s,d,"]","\\rbrack"),e(i,s,U,"⌊","\\lfloor"),e(i,s,d,"⌋","\\rfloor"),e(i,s,U,"⌈","\\lceil"),e(i,s,d,"⌉","\\rceil"),e(i,s,Z,"\\","\\backslash"),e(i,s,Z,"∣","|"),e(i,s,Z,"∣","\\vert"),e(i,s,Z,"∥","\\|"),e(i,s,Z,"∥","\\Vert"),e(i,s,F,"↑","\\uparrow"),e(i,s,F,"⇑","\\Uparrow"),e(i,s,F,"↓","\\downarrow"),e(i,s,F,"⇓","\\Downarrow"),e(i,s,F,"↕","\\updownarrow"),e(i,s,F,"⇕","\\Updownarrow"),e(i,i,m,"∐","\\coprod"),e(i,i,m,"⋁","\\bigvee"),e(i,i,m,"⋀","\\bigwedge"),e(i,i,m,"⨄","\\biguplus"),e(i,i,m,"⋂","\\bigcap"),e(i,i,m,"⋃","\\bigcup"),e(i,i,m,"∫","\\int"),e(i,i,m,"∫","\\intop"),e(i,i,m,"∬","\\iint"),e(i,i,m,"∭","\\iiint"),e(i,i,m,"∏","\\prod"),e(i,i,m,"∑","\\sum"),e(i,i,m,"⨂","\\bigotimes"),e(i,i,m,"⨁","\\bigoplus"),e(i,i,m,"⨀","\\bigodot"),e(i,i,m,"∮","\\oint"),e(i,i,m,"⨆","\\bigsqcup"),e(i,i,m,"∫","\\smallint"),e(i,s,u,"…","\\ldots"),e(i,s,u,"⋯","\\cdots"),e(i,s,u,"⋱","\\ddots"),e(i,s,Z,"⋮","\\vdots"),e(i,s,o,"´","\\acute"),e(i,s,o,"`","\\grave"),e(i,s,o,"¨","\\ddot"),e(i,s,o,"~","\\tilde"),e(i,s,o,"¯","\\bar"),e(i,s,o,"˘","\\breve"),e(i,s,o,"ˇ","\\check"),e(i,s,o,"^","\\hat"),e(i,s,o,"⃗","\\vec"),e(i,s,o,"˙","\\dot"),e(i,s,h,"ı","\\imath"),e(i,s,h,"ȷ","\\jmath"),e(a,s,b," ","\\ "),e(a,s,b," "," "),e(a,s,b," ","~");var N='0123456789/@."';for(n=0;nl(t))).join("");return e}function a(t){const e="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance",n="get set args call";return{name:"AspectJ",keywords:e,illegal:/<\/|#/,contains:[t.COMMENT(/\/\*\*/,/\*\//,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:/@[A-Za-z]+/}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},t.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:e+" "+n,excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,contains:[t.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:e,illegal:/["\[\]]/,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),keywords:e+" "+n,relevance:0},t.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:e,excludeEnd:!0,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:e,contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},t.C_NUMBER_MODE,{className:"meta",begin:/@[A-Za-z]+/}]}}n(8111),n(1701),t.exports=a},1034:function(t,e,n){"use strict";var l=n(9565),i=n(9297),a=n(1625),s=n(7979),r=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in r||i(t,"flags")||!a(r,t)?e:l(s,t)}},1035:function(t){function e(t){const e="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n="false true",l=[t.C_LINE_COMMENT_MODE,t.COMMENT(/\{/,/\}/,{relevance:0}),t.COMMENT(/\(\*/,/\*\)/,{relevance:10})],i={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},s={className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},r={className:"string",begin:'"',end:'"'},o={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:e,contains:[i,a]}].concat(l)},c={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[t.TITLE_MODE,o]};return{name:"C/AL",case_insensitive:!0,keywords:{keyword:e,literal:n},illegal:/\/\*/,contains:[i,a,s,r,t.NUMBER_MODE,c,o]}}t.exports=e},1090:function(t){function e(t){const e={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:/\$\{/,end:/\}/}],keywords:"true false null this is new super"},l={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:'"""',end:'"""',contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,e,n]}]};n.contains=[t.C_NUMBER_MODE,l];const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],a=i.map((t=>`${t}?`)),s={keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is late library mixin new null on operator part required rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:i.concat(a).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]),$pattern:/[A-Za-z][A-Za-z0-9_]*\??/};return{name:"Dart",keywords:s,contains:[l,t.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0}),t.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".",end:"$",relevance:0}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},t.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}t.exports=e},1102:function(t){function e(t){const e="[a-z][a-zA-Z0-9_]*",n={className:"string",begin:"\\$.{1}"},l={className:"symbol",begin:"#"+t.UNDERSCORE_IDENT_RE};return{name:"Smalltalk",aliases:["st"],keywords:"self super nil true false thisContext",contains:[t.COMMENT('"','"'),t.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:e+":",relevance:0},t.C_NUMBER_MODE,l,n,{begin:"\\|[ ]*"+e+"([ ]+"+e+")*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+e}]},{begin:"#\\(",end:"\\)",contains:[t.APOS_STRING_MODE,n,t.C_NUMBER_MODE,l]}]}}t.exports=e},1103:function(t){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},1114:function(t){function e(t){return{name:"RenderMan RSL",keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],R=[0,1.2,1.8,2.4,3],S=function(t,e,n,i){if("<"===t||"\\lt"===t?t="\\langle":">"!==t&&"\\gt"!==t||(t="\\rangle"),o.contains(b,t)||o.contains(N,t))return U(t,e,!1,n,i);if(o.contains(Z,t))return F(t,R[e],!1,n,i);throw new l("Illegal delimiter: '"+t+"'")},W=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],V=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}],Q=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],y=function(t){return"small"===t.type?"Main-Regular":"large"===t.type?"Size"+t.size+"-Regular":"stack"===t.type?"Size4-Regular":void 0},T=function(t,e,n,l){for(var i=Math.min(2,3-l.style.size),a=i;ae)return n[a]}return n[n.length-1]},M=function(t,e,n,l,i){var a;"<"===t||"\\lt"===t?t="\\langle":">"!==t&&"\\gt"!==t||(t="\\rangle"),a=o.contains(N,t)?W:o.contains(b,t)?Q:V;var s=T(t,e,a,l);return"small"===s.type?m(t,s.style,n,l,i):"large"===s.type?U(t,s.size,n,l,i):"stack"===s.type?F(t,e,n,l,i):void 0},g=function(t,e,n,l,i){var a=s.metrics.axisHeight*l.style.sizeMultiplier,r=901,o=5/s.metrics.ptPerEm,c=Math.max(e-a,n+a),d=Math.max(c/500*r,2*c-o);return M(t,d,!0,l,i)};t.exports={sizedDelim:S,customSizedDelim:M,leftRightDelim:g}},1185:function(t){function e(t){const e="\\d(_|\\d)*",n="[eE][-+]?"+e,l=e+"(\\."+e+")?("+n+")?",i="\\w+",a=e+"#"+i+"(\\."+i+")?#("+n+")?",s="\\b("+a+"|"+l+")";return{name:"VHDL",case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:/\{/,contains:[t.C_BLOCK_COMMENT_MODE,t.COMMENT("--","$"),t.QUOTE_STRING_MODE,{className:"number",begin:s,relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[t.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[t.BACKSLASH_ESCAPE]}]}}t.exports=e},1225:function(t){function e(t){const e={className:"meta",begin:"@[A-Za-z]+"},n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}]},l={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},i={className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},a={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},s={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},r={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},s]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[s]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,l,i,a,o,r,t.C_NUMBER_MODE,e]}}t.exports=e},1259:function(t){function e(t){const e="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n="shared abstract formal default actual variable late native deprecated final sealed annotation suppressWarnings small",l="doc by license see throws tagged",i={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:e,relevance:10},a=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[i]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return i.contains=a,{name:"Ceylon",keywords:{keyword:e+" "+n,meta:l},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?::"[^"]*")?'}].concat(a)}}t.exports=e},1261:function(t){function e(t){return{name:"Backus–Naur Form",contains:[{className:"attribute",begin://},{begin:/::=/,end:/$/,contains:[{begin://},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}]}}t.exports=e},1277:function(t){function e(t){return{name:"CSP",case_insensitive:!1,keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_-]*",keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}t.exports=e},1307:function(t){function e(t){var e="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",n="\\|[^]*?\\|",l="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",i={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:l,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+l+" +"+l,end:"\\)"}]},s=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),r=t.COMMENT(";","$",{relevance:0}),o={begin:"\\*",end:"\\*"},c={className:"symbol",begin:"[:&]"+e},d={begin:e,relevance:0},u={begin:n},h={begin:"\\(",end:"\\)",contains:["self",i,s,a,d]},m={contains:[a,s,o,c,h,d],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'"+n}]},U={variants:[{begin:"'"+e},{begin:"#'"+e+"(::"+e+")*"}]},p={begin:"\\(\\s*",end:"\\)"},F={endsWithParent:!0,relevance:0};return p.contains=[{className:"name",variants:[{begin:e,relevance:0},{begin:n}]},F],F.contains=[m,U,p,i,a,s,r,o,c,u,d],{name:"Lisp",illegal:/\S/,contains:[a,t.SHEBANG(),i,s,r,m,U,p,d]}}t.exports=e},1381:function(t){function e(t){return{name:"AVR Assembly",case_insensitive:!0,keywords:{$pattern:"\\.?"+t.IDENT_RE,keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[t.C_BLOCK_COMMENT_MODE,t.COMMENT(";","$",{relevance:0}),t.C_NUMBER_MODE,t.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},t.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}t.exports=e},1548:function(t,e,n){"use strict";var l=n(4576),i=n(9039),a=n(9519),s=n(4215),r=l.structuredClone;t.exports=!!r&&!i((function(){if("DENO"===s&&a>92||"NODE"===s&&a>94||"BROWSER"===s&&a>97)return!1;var t=new ArrayBuffer(8),e=r(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},1678:function(t,e,n){"use strict";var l=n(6395),i=n(6518),a=n(4576),s=n(7751),r=n(9504),o=n(9039),c=n(3392),d=n(4901),u=n(3517),h=n(4117),m=n(34),U=n(757),p=n(2652),F=n(8551),b=n(6955),Z=n(9297),N=n(4659),R=n(6699),S=n(6198),W=n(2812),V=n(1034),Q=n(2248),y=n(4402),T=n(8469),M=n(4483),g=n(6249),E=n(1548),G=a.Object,B=a.Array,J=a.Date,k=a.Error,Y=a.TypeError,C=a.PerformanceMark,X=s("DOMException"),I=Q.Map,D=Q.has,f=Q.get,L=Q.set,w=y.Set,x=y.add,z=y.has,v=s("Object","keys"),O=r([].push),_=r((!0).valueOf),j=r(1..valueOf),K=r("".valueOf),P=r(J.prototype.getTime),A=c("structuredClone"),H="DataCloneError",q="Transferring",$=function(t){return!o((function(){var e=new a.Set([7]),n=t(e),l=t(G(7));return n===e||!n.has(7)||!m(l)||7!==+l}))&&t},tt=function(t,e){return!o((function(){var n=new e,l=t({a:n,b:n});return!(l&&l.a===l.b&&l.a instanceof e&&l.a.stack===n.stack)}))},et=function(t){return!o((function(){var e=t(new a.AggregateError([1],A,{cause:3}));return"AggregateError"!==e.name||1!==e.errors[0]||e.message!==A||3!==e.cause}))},nt=a.structuredClone,lt=l||!tt(nt,k)||!tt(nt,X)||!et(nt),it=!nt&&$((function(t){return new C(A,{detail:t}).detail})),at=$(nt)||it,st=function(t){throw new X("Uncloneable type: "+t,H)},rt=function(t,e){throw new X((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",H)},ot=function(t,e){return at||rt(e),at(t)},ct=function(){var t;try{t=new a.DataTransfer}catch(e){try{t=new a.ClipboardEvent("").clipboardData}catch(n){}}return t&&t.items&&t.files?t:null},dt=function(t,e,n){if(D(e,t))return f(e,t);var l,i,s,r,o,c,u=n||b(t);if("SharedArrayBuffer"===u)l=at?at(t):t;else{var h=a.DataView;h||d(t.slice)||rt("ArrayBuffer");try{if(d(t.slice)&&!t.resizable)l=t.slice(0);else{i=t.byteLength,s="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0,l=new ArrayBuffer(i,s),r=new h(t),o=new h(l);for(c=0;c1&&!h(arguments[1])?F(arguments[1]):void 0,i=l?l.transfer:void 0;void 0!==i&&(e=new I,n=mt(i,e));var a=ht(t,e);return n&&Ut(n),a}})},1689:function(t,e,n){"use strict";var l=n(6518),i=n(4576),a=n(8745),s=n(7680),r=n(6043),o=n(9306),c=n(1103),d=i.Promise,u=!1,h=!d||!d["try"]||c((function(){d["try"]((function(t){u=8===t}),8)})).error||!u;l({target:"Promise",stat:!0,forced:h},{try:function(t){var e=arguments.length>1?s(arguments,1):[],n=r.f(this),l=c((function(){return a(o(t),void 0,e)}));return(l.error?n.reject:n.resolve)(l.value),n.promise}})},1739:function(t){function e(t){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}t.exports=e},1869:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(?=",t,")")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],n=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],l=["__debug__","Ellipsis","False","None","NotImplemented","True"],a=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],s={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:e,built_in:n,literal:l,type:a},r={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:s,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,r,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,r,c,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,c,o]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},u="[0-9](_?[0-9])*",h=`(\\b(${u}))?\\.(${u})|\\b(${u})\\.`,m={className:"number",relevance:0,variants:[{begin:`(\\b(${u})|(${h}))[eE][+-]?(${u})[jJ]?\\b`},{begin:`(${h})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${u})[jJ]\\b`}]},U={className:"comment",begin:i(/# type:/),end:/$/,keywords:s,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},p={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:["self",r,m,d,t.HASH_COMMENT_MODE]}]};return o.contains=[d,m,r],{name:"Python",aliases:["py","gyp","ipython"],keywords:s,illegal:/(<\/|->|\?)|=>/,contains:[r,m,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,U,t.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[t.UNDERSCORE_TITLE_MODE,p,{begin:/->/,endsWithParent:!0,keywords:s}]},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[m,p,d]}]}}n(8111),n(1701),t.exports=s},1872:function(t){function e(t){var e="a-zA-Z_\\-!.?+*=<>&#'",n="["+e+"]["+e+"0-9/;:]*",l={$pattern:n,"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},i="[-+]?\\d+(\\.\\d+)?",a={begin:n,relevance:0},s={className:"number",begin:i,relevance:0},r=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),o=t.COMMENT(";","$",{relevance:0}),c={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},d={begin:"[\\[\\{]",end:"[\\]\\}]"},u={className:"comment",begin:"\\^"+n},h=t.COMMENT("\\^\\{","\\}"),m={className:"symbol",begin:"[:]{1,2}"+n},U={begin:"\\(",end:"\\)"},p={endsWithParent:!0,relevance:0},F={className:"name",relevance:0,keywords:l,begin:n,starts:p},b=[U,r,u,h,o,m,d,s,c,a];return U.contains=[t.COMMENT("comment",""),F,p],p.contains=b,d.contains=b,{name:"Hy",aliases:["hylang"],illegal:/\S/,contains:[t.SHEBANG(),U,r,u,h,o,m,d,s,c]}}t.exports=e},1895:function(t){function e(t){const e=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"],n=["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"],l=["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"];return{name:"Smali",contains:[{className:"string",begin:'"',end:'"',relevance:0},t.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+l.join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+e.join("|")+")\\s"},{begin:"\\s("+e.join("|")+")((-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+n.join("|")+")((-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}t.exports=e},1951:function(t){function e(t){if(!t.__matchAtRelocatable){var e=t.source+"|()",n="g"+(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"");t.__matchAtRelocatable=new RegExp(e,n)}return t.__matchAtRelocatable}function n(t,n,l){if(t.global||t.sticky)throw new Error("matchAt(...): Only non-global regexes are supported");var i=e(t);i.lastIndex=l;var a=i.exec(n);return null==a[a.length-1]?(a.length=a.length-1,a):null}t.exports=n},1969:function(t){function e(t){return{name:"RenderMan RIB",keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"0?t.src.charCodeAt(e-1):-1,l=e+1<=i?t.src.charCodeAt(e+1):-1,(32===n||9===n||l>=48&&l<=57)&&(s=!1),32!==l&&9!==l||(a=!1),{can_open:a,can_close:s}}function a(t,e){var n,l,a,s,r;if("$"!==t.src[t.pos])return!1;if(s=i(t,t.pos),!s.can_open)return e||(t.pending+="$"),t.pos+=1,!0;n=t.pos+1,l=n;while(-1!==(l=t.src.indexOf("$",l))){r=l-1;while("\\"===t.src[r])r-=1;if((l-r)%2==1)break;l+=1}return-1===l?(e||(t.pending+="$"),t.pos=n,!0):l-n===0?(e||(t.pending+="$$"),t.pos=n+1,!0):(s=i(t,l),s.can_close?(e||(a=t.push("math_inline","math",0),a.markup="$",a.content=t.src.slice(n,l)),t.pos=l+1,!0):(e||(t.pending+="$"),t.pos=n,!0))}function s(t,e,n,l){var i,a,s,r,o,c=!1,d=t.bMarks[e]+t.tShift[e],u=t.eMarks[e];if(d+2>u)return!1;if("$$"!==t.src.slice(d,d+2))return!1;if(d+=2,i=t.src.slice(d,u),l)return!0;for("$$"===i.trim().slice(-2)&&(i=i.trim().slice(0,-2),c=!0),s=e;!c;){if(s++,s>=n)break;if(d=t.bMarks[s]+t.tShift[s],u=t.eMarks[s],d"+l.renderToString(t,e)+"

"}catch(n){return e.throwOnError&&console.log(n),t}},o=function(t,e){return r(t[e].content)+"\n"};t.inline.ruler.after("escape","math_inline",a),t.block.ruler.after("blockquote","math_block",s,{alt:["paragraph","reference","blockquote","list"]}),t.renderer.rules.math_inline=i,t.renderer.rules.math_block=o}},2080:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function s(t){const e=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),n={className:"params",begin:/\(/,end:/\)/,contains:["self",t.C_NUMBER_MODE,e]},l=t.COMMENT(/--/,/$/),s=t.COMMENT(/\(\*/,/\*\)/,{contains:["self",l]}),r=[l,s,t.HASH_COMMENT_MODE],o=[/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/],c=[/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/];return{name:"AppleScript",aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[e,t.C_NUMBER_MODE,{className:"built_in",begin:i(/\b/,a(...c),/\b/)},{className:"built_in",begin:/^\s*return\b/},{className:"literal",begin:/\b(text item delimiters|current application|missing value)\b/},{className:"keyword",begin:i(/\b/,a(...o),/\b/)},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[t.UNDERSCORE_TITLE_MODE,n]},...r],illegal:/\/\/|->|=>|\[\[/}}n(8111),n(1701),t.exports=s},2100:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={begin:"^'{3,}[ \\t]*$",relevance:10},n=[{begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/}],l=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/},{className:"strong",begin:i(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/),relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],a=[{className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis",begin:i(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/),relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0}],s={className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},r={className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"};return{name:"AsciiDoc",aliases:["adoc"],contains:[t.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),t.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},r,s,...n,...l,...a,{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},e,{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}n(8111),n(1701),t.exports=a},2182:function(t){function e(t){const e={begin:"`[\\s\\S]"};return{name:"AutoHotkey",case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[e,t.inherit(t.QUOTE_STRING_MODE,{contains:[e]}),t.COMMENT(";","$",{relevance:0}),t.C_BLOCK_COMMENT_MODE,{className:"number",begin:t.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}t.exports=e},2184:function(t){function e(t){return{name:"Gradle",case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,t.REGEXP_MODE]}}t.exports=e},2197:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={className:"params",begin:"\\(",end:"\\)"},n={variants:[t.COMMENT("!","$",{relevance:0}),t.COMMENT("^C[ ]","$",{relevance:0}),t.COMMENT("^C$","$",{relevance:0})]},l=/(_[a-z_\d]+)?/,a=/([de][+-]?\d+)?/,s={className:"number",variants:[{begin:i(/\b\d+/,/\.(\d*)/,a,l)},{begin:i(/\b\d+/,a,l)},{begin:i(/\.\d+/,a,l)}],relevance:0},r={className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[t.UNDERSCORE_TITLE_MODE,e]},o={className:"string",relevance:0,variants:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},c={literal:".False. .True.",keyword:"kind do concurrent local shared while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock endassociate public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure impure integer real character complex logical codimension dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image sync change team co_broadcast co_max co_min co_sum co_reduce"};return{name:"Fortran",case_insensitive:!0,aliases:["f90","f95"],keywords:c,illegal:/\/\*/,contains:[o,r,{begin:/^C\s*=(?!=)/,relevance:0},n,s]}}n(8111),n(1701),t.exports=a},2199:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e="HTTP/(2|1\\.[01])",n=/[A-Za-z][A-Za-z0-9-]*/,l={className:"attribute",begin:i("^",n,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[l,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+e+" \\d{3})",end:/$/,contains:[{className:"meta",begin:e},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+e+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:e},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},t.inherit(l,{relevance:0})]}}n(8111),n(1701),t.exports=a},2208:function(t){function e(t){const e={className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},n={className:"string",variants:[{begin:'"',end:'"'}]},l={className:"title",relevance:0,begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/},i={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[l]};return{name:"Flix",keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,e,n,i,t.C_NUMBER_MODE]}}t.exports=e},2218:function(t){function e(t){const e="do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where",n="abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate",l="bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window";return{name:"SAS",case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:e},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s;]/},{className:"variable",begin:/&[a-zA-Z_&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%("+l+")"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%]("+n+")[(]"},{className:"string",variants:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},t.COMMENT("\\*",";"),t.C_BLOCK_COMMENT_MODE]}}t.exports=e},2248:function(t,e,n){"use strict";var l=n(9504),i=Map.prototype;t.exports={Map:Map,set:l(i.set),get:l(i.get),has:l(i.has),remove:l(i["delete"]),proto:i}},2335:function(t){function e(t){const e={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},n=/[a-zA-Z@][a-zA-Z0-9_]*/,l={$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:l,illegal:"/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+i.keyword.split(" ").join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:i,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}t.exports=e},2363:function(t){function e(t){const e={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[t.C_BLOCK_COMMENT_MODE,t.HASH_COMMENT_MODE,t.COMMENT("--","$"),t.COMMENT("[^:]//","$")],l=t.inherit(t.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z][A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),i=t.inherit(t.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{name:"LiveCode",case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[e,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[e,i,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[i,l],relevance:0},{beginKeywords:"command on",end:"$",contains:[e,i,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l].concat(n),illegal:";$|^\\[|^=|&|\\{"}}t.exports=e},2368:function(t){function e(t){return{name:"Mizar",keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[t.COMMENT("::","$")]}}t.exports=e},2425:function(t){function e(t){var e={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},l={className:"keyword",begin:"<",end:">",contains:[e,n]};return e.contains=[l],n.contains=[l],{name:"AngelScript",aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE],relevance:0},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},e,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",relevance:0,begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}t.exports=e},2472:function(t){function e(t){return{name:"FIX",contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}t.exports=e},2474:function(t){function e(t){return{name:"Clean",aliases:["icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}}t.exports=e},2604:function(t){function e(t){const e={className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},n={className:"variable",begin:/\$+\{[\w.:-]+\}/},l={className:"variable",begin:/\$+\w+/,illegal:/\(\)\{\}/},i={className:"variable",begin:/\$+\([\w^.:-]+\)/},a={className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},s={className:"keyword",begin:/!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},r={className:"meta",begin:/\$(\\[nrt]|\$)/},o={className:"class",begin:/\w+::\w+/},c={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[r,e,n,l,i]};return{name:"NSIS",case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileWriteUTF16LE FileSeek FileWrite FileWriteByte FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetKnownFolderPath GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfRtlLanguage IfShellVarContextAll IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadAndSetImage LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestLongPathAware ManifestMaxVersionTested ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PEAddResource PEDllCharacteristics PERemoveResource PESubsysVer Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[t.HASH_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},c,s,n,l,i,a,o,t.NUMBER_MODE]}}t.exports=e},2619:function(t){function e(t){const e={variants:[t.COMMENT("--","$"),t.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e]},i={begin:/\{/,end:/\}/,contains:l.contains},a={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[l,e],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[l,e],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,l,i,e]},{beginKeywords:"infix infixl infixr",end:"$",contains:[t.C_NUMBER_MODE,e]},{begin:"port",end:"$",keywords:"port",contains:[e]},a,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,n,t.inherit(t.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),e,{begin:"->|<-"}],illegal:/;/}}t.exports=e},2763:function(t,e,n){var l=n(1951),i=n(834);function a(t){this._input=t}function s(t,e,n){this.text=t,this.data=e,this.position=n}var r=new RegExp("([ \r\n\t]+)|(---?|[!-\\[\\]-‧‪-퟿豈-￿]|[\ud800-\udbff][\udc00-\udfff]|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff]))"),o=/\s*/;a.prototype._innerLex=function(t,e){var n=this._input;if(t===n.length)return new s("EOF",null,t);var a=l(r,n,t);if(null===a)throw new i("Unexpected character: '"+n[t]+"'",this,t);return a[2]?new s(a[2],null,t+a[2].length):e?this._innerLex(t+a[1].length,!0):new s(" ",null,t+a[1].length)};var c=/#[a-z0-9]+|[a-z]+/i;a.prototype._innerLexColor=function(t){var e,n=this._input,a=l(o,n,t)[0];if(t+=a.length,e=l(c,n,t))return new s(e[0],null,t+e[0].length);throw new i("Invalid color",this,t)};var d=/(-?)\s*(\d+(?:\.\d*)?|\.\d+)\s*([a-z]{2})/;a.prototype._innerLexSize=function(t){var e,n=this._input,a=l(o,n,t)[0];if(t+=a.length,e=l(d,n,t)){var r=e[3];if("em"!==r&&"ex"!==r)throw new i("Invalid unit: '"+r+"'",this,t);return new s(e[0],{number:+(e[1]+e[2]),unit:r},t+e[0].length)}throw new i("Invalid size",this,t)},a.prototype._innerLexWhitespace=function(t){var e=this._input,n=l(o,e,t)[0];return t+=n.length,new s(n[0],null,t)},a.prototype.lex=function(t,e){return"math"===e?this._innerLex(t,!0):"text"===e?this._innerLex(t,!1):"color"===e?this._innerLexColor(t):"size"===e?this._innerLexSize(t):"whitespace"===e?this._innerLexWhitespace(t):void 0},t.exports=a},2814:function(t,e,n){n(4114);var l=n(8564),i=n(2995),a=n(2763),s=n(840),r=n(4380),o=n(5990),c=n(834);function d(t,e){this.lexer=new a(t),this.settings=e}var u=o.ParseNode;function h(t,e){this.result=t,this.isFunction=e}d.prototype.expect=function(t,e){if(this.nextToken.text!==t)throw new c("Expected '"+t+"', got '"+this.nextToken.text+"'",this.lexer,this.nextToken.position);!1!==e&&this.consume()},d.prototype.consume=function(){this.pos=this.nextToken.position,this.nextToken=this.lexer.lex(this.pos,this.mode)},d.prototype.parse=function(){this.mode="math",this.pos=0,this.nextToken=this.lexer.lex(this.pos,this.mode);var t=this.parseInput();return t},d.prototype.parseInput=function(){var t=this.parseExpression(!1);return this.expect("EOF",!1),t};var m=["}","\\end","\\right","&","\\\\","\\cr"];d.prototype.parseExpression=function(t,e){var n=[];while(1){var l=this.nextToken,i=this.pos;if(-1!==m.indexOf(l.text))break;if(e&&l.text===e)break;var a=this.parseAtom();if(!a){if(!this.settings.throwOnError&&"\\"===l.text[0]){var s=this.handleUnsupportedCmd();n.push(s),i=l.position;continue}break}if(t&&"infix"===a.type){this.pos=i,this.nextToken=l;break}n.push(a)}return this.handleInfixNodes(n)},d.prototype.handleInfixNodes=function(t){for(var e,n=-1,l=0;lU)return this.parseFunction(i);throw new c("Got function '"+i.result+"' with no arguments as "+t,this.lexer,n+1)}return i.result}if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new c("Expected group after '"+e+"'",this.lexer,n+1);return this.handleUnsupportedCmd()},d.prototype.handleUnsupportedCmd=function(){for(var t=this.nextToken.text,e=[],n=0;ni))throw new c("Got function '"+o.result+"' as argument to '"+t+"'",this.lexer,this.pos-1);d=this.parseFunction(o)}else d=o.result;s.push(d),a.push(this.pos)}return s.push(a),s},d.prototype.parseSpecialGroup=function(t,e){var n,l=this.mode;if("original"===t&&(t=l),"color"===t||"size"===t){var i=this.nextToken;if(e&&"["!==i.text)return null;this.mode=t,this.expect(e?"[":"{");var a,s=this.nextToken;return this.mode=l,a="color"===t?s.text:s.data,this.consume(),this.expect(e?"]":"}"),new h(new u(t,a,l),!1)}if("text"===t){var r=this.lexer.lex(this.pos,"whitespace");this.pos=r.position}return this.mode=t,this.nextToken=this.lexer.lex(this.pos,t),n=e?this.parseOptionalGroup():this.parseGroup(),this.mode=l,this.nextToken=this.lexer.lex(this.pos,l),n},d.prototype.parseGroup=function(){if("{"===this.nextToken.text){this.consume();var t=this.parseExpression(!1);return this.expect("}"),new h(new u("ordgroup",t,this.mode),!1)}return this.parseSymbol()},d.prototype.parseOptionalGroup=function(){if("["===this.nextToken.text){this.consume();var t=this.parseExpression(!1,"]");return this.expect("]"),new h(new u("ordgroup",t,this.mode),!1)}return null},d.prototype.parseSymbol=function(){var t=this.nextToken;return l[t.text]?(this.consume(),new h(t.text,!0)):s[this.mode][t.text]?(this.consume(),new h(new u(s[this.mode][t.text].group,t.text,this.mode),!1)):null},d.prototype.ParseNode=u,t.exports=d},2876:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return s("(?=",t,")")}function a(t){return s("(",t,")?")}function s(...t){const e=t.map((t=>l(t))).join("");return e}function r(t){const e=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",r="<[^<>]+>",o="("+n+"|"+a(l)+"[a-zA-Z_]\\w*"+a(r)+")",c={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},d="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",u={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+d+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},h={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},m={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(u,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/},e,t.C_BLOCK_COMMENT_MODE]},U={className:"title",begin:a(l)+t.IDENT_RE,relevance:0},p=a(l)+t.IDENT_RE+"\\s*\\(",F=["asin","atan2","atan","calloc","ceil","cosh","cos","exit","exp","fabs","floor","fmod","fprintf","fputs","free","frexp","auto_ptr","deque","list","queue","stack","vector","map","set","pair","bitset","multiset","multimap","unordered_set","fscanf","future","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","tolower","toupper","labs","ldexp","log10","log","malloc","realloc","memchr","memcmp","memcpy","memset","modf","pow","printf","putchar","puts","scanf","sinh","sin","snprintf","sprintf","sqrt","sscanf","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","tanh","tan","unordered_map","unordered_multiset","unordered_multimap","priority_queue","make_pair","array","shared_ptr","abort","terminate","abs","acos","vfprintf","vprintf","vsprintf","endl","initializer_list","unique_ptr","complex","imaginary","std","string","wstring","cin","cout","cerr","clog","stdin","stdout","stderr","stringstream","istringstream","ostringstream"],b={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"_Bool _Complex _Imaginary",_relevance_hints:F,literal:"true false nullptr NULL"},Z={className:"function.dispatch",relevance:0,keywords:b,begin:s(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!while)/,t.IDENT_RE,i(/\s*\(/))},N=[Z,m,c,e,t.C_BLOCK_COMMENT_MODE,h,u],R={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:b,contains:N.concat([{begin:/\(/,end:/\)/,keywords:b,contains:N.concat(["self"]),relevance:0}]),relevance:0},S={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:b,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:b,relevance:0},{begin:p,returnBegin:!0,contains:[U],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[u,h]},{className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[e,t.C_BLOCK_COMMENT_MODE,u,h,c,{begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:["self",e,t.C_BLOCK_COMMENT_MODE,u,h,c]}]},c,e,t.C_BLOCK_COMMENT_MODE,m]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:b,illegal:"",keywords:b,contains:["self",c]},{begin:t.IDENT_RE+"::",keywords:b},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:m,strings:u,keywords:b}}}function o(t){const e=r(t),n=["c","h"],l=["cc","c++","h++","hpp","hh","hxx","cxx"];return e.disableAutodetect=!0,e.aliases=[],t.getLanguage("c")||e.aliases.push(...n),t.getLanguage("cpp")||e.aliases.push(...l),e}n(4114),n(8111),n(1701),t.exports=o},2942:function(t,e,n){function l(t){const e={keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},n=t.COMMENT("%","$"),l={className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},i=t.inherit(t.APOS_STRING_MODE,{relevance:0}),a=t.inherit(t.QUOTE_STRING_MODE,{relevance:0}),s={className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0};a.contains=a.contains.slice(),a.contains.push(s);const r={className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},o={className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]};return{name:"Mercury",aliases:["m","moo"],keywords:e,contains:[r,o,n,t.C_BLOCK_COMMENT_MODE,l,t.NUMBER_MODE,i,a,{begin:/:-/},{begin:/\.$/}]}}n(4114),t.exports=l},2955:function(t){function e(t){const e="Int Float String Bool Dynamic Void Array ";return{name:"Haxe",aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while "+e,built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:/\W\}/}]},t.QUOTE_STRING_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[t.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},t.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:t.IDENT_RE,relevance:0}]},t.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[t.TITLE_MODE]}],illegal:/<\//}}t.exports=e},2995:function(t,e,n){n(4114),n(8111),n(7588),n(1701);var l=n(7915),i=n(5990),a=n(834),s=i.ParseNode;function r(t,e){var n=[],l=[n],i=[];while(1){var r=t.parseExpression(!1,null);n.push(new s("ordgroup",r,t.mode));var o=t.nextToken.text;if("&"===o)t.consume();else{if("\\end"===o)break;if("\\\\"!==o&&"\\cr"!==o){var c=Math.min(t.pos+1,t.lexer._input.length);throw new a("Expected & or \\\\ or \\end",t.lexer,c)}var d=t.parseFunction();i.push(d.value.size),n=[],l.push(n)}}return e.body=l,e.rowGaps=i,new s(e.type,e,t.mode)}function o(e,n,l){"string"===typeof e&&(e=[e]),"number"===typeof n&&(n={numArgs:n});for(var i={numArgs:n.numArgs||0,argTypes:n.argTypes,greediness:1,allowedInText:!!n.allowedInText,numOptionalArgs:n.numOptionalArgs||0,handler:l},a=0;a0&&(o=2),e.value.cols[i]={type:"align",align:a,pregap:o,postgap:0}}return e}))},3004:function(t){function e(t){const e={className:"literal",begin:/[+-]/,relevance:0};return{name:"Brainfuck",aliases:["bf"],contains:[t.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|--)/,contains:[e]},e]}}t.exports=e},3076:function(t,e,n){n(8111),n(1701);const l=t=>({IMPORTANT:{className:"meta",begin:"!important"},HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}}),i=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],s=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse();function c(t){return t?"string"===typeof t?t:t.source:null}function d(t){return u("(?=",t,")")}function u(...t){const e=t.map((t=>c(t))).join("");return e}function h(t){const e=l(t),n={className:"built_in",begin:/[\w-]+(?=\()/},c={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},u="and or not only",h=/@-?\w[\w]*(-\w+)*/,m="[a-zA-Z-][a-zA-Z0-9_-]*",U=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[t.C_BLOCK_COMMENT_MODE,c,t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+m,relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+s.join("|")+")"},{begin:"::("+r.join("|")+")"}]},{className:"attribute",begin:"\\b("+o.join("|")+")\\b"},{begin:":",end:"[;}]",contains:[e.HEXCOLOR,e.IMPORTANT,t.CSS_NUMBER_MODE,...U,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n]},{begin:d(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:h},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:u,attribute:a.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...U,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+i.join("|")+")\\b"}]}}t.exports=h},3085:function(t,e,n){function l(t){const e={literal:"true false null"},n=[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],l=[t.QUOTE_STRING_MODE,t.C_NUMBER_MODE],i={end:",",endsWithParent:!0,excludeEnd:!0,contains:l,keywords:e},a={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE],illegal:"\\n"},t.inherit(i,{begin:/:/})].concat(n),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[t.inherit(i)],illegal:"\\S"};return l.push(a,s),n.forEach((function(t){l.push(t)})),{name:"JSON",contains:l,keywords:e,illegal:"\\S"}}n(4114),t.exports=l},3159:function(t){function e(t){var e="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее ",l="возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",i=n+l,a="загрузитьизфайла ",s="вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ",r=a+s,o="разделительстраниц разделительстрок символтабуляции ",c="ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ",d="acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ",u="wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",h=o+c+d+u,m="webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ",U="автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы ",p="виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ",F="авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ",b="использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ",Z="отображениевремениэлементовпланировщика ",N="типфайлаформатированногодокумента ",R="обходрезультатазапроса типзаписизапроса ",S="видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ",W="доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ",V="типизмеренияпостроителязапроса ",Q="видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ",y="wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson ",T="видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных ",M="важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения ",g="режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ",E="расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии ",G="кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip ",B="звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ",J="направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ",k="httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений ",Y="важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",C=m+U+p+F+b+Z+N+R+S+W+V+Q+y+T+M+g+E+G+B+J+k+Y,X="comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ",I="comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",D=X+I,f="null истина ложь неопределено",L=t.inherit(t.NUMBER_MODE),w={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},x={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},z=t.inherit(t.C_LINE_COMMENT_MODE),v={className:"meta",begin:"#|&",end:"$",keywords:{$pattern:e,"meta-keyword":i+r},contains:[z]},O={className:"symbol",begin:"~",end:";|:",excludeEnd:!0},_={className:"function",variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",begin:e,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:e,keyword:"знач",literal:f},contains:[L,w,x]},z]},t.inherit(t.TITLE_MODE,{begin:e})]};return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:e,keyword:i,built_in:h,class:C,type:D,literal:f},contains:[v,_,z,O,L,w,x]}}t.exports=e},3321:function(t){function e(t){const e=t.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10}),n={className:"symbol",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",relevance:0};return{name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:n.begin,end:"goto:eof",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),e]},{className:"number",begin:"\\b\\d+",relevance:0},e]}}t.exports=e},3348:function(t){function e(t){const e="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n="(-|\\+)?\\d+([./]\\d+)?",l=n+"[+\\-]"+n+"i",i={$pattern:e,"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"},a={className:"literal",begin:"(#t|#f|#\\\\"+e+"|#\\\\.)"},s={className:"number",variants:[{begin:n,relevance:0},{begin:l,relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},r=t.QUOTE_STRING_MODE,o=[t.COMMENT(";","$",{relevance:0}),t.COMMENT("#\\|","\\|#")],c={begin:e,relevance:0},d={className:"symbol",begin:"'"+e},u={endsWithParent:!0,relevance:0},h={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",a,r,s,c,d]}]},m={className:"name",relevance:0,begin:e,keywords:i},U={begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[m,{endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}],contains:[c]}]},p={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[U,m,u]};return u.contains=[a,s,r,c,d,h,p].concat(o),{name:"Scheme",illegal:/\S/,contains:[t.SHEBANG(),s,r,d,h,p].concat(o)}}t.exports=e},3406:function(t){function e(t){return{name:"Test Anything Protocol",case_insensitive:!0,contains:[t.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:/---$/,end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}t.exports=e},3432:function(t){function e(t){return{name:"CMake",aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:/\$\{/,end:/\}/},t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE]}}t.exports=e},3517:function(t,e,n){"use strict";var l=n(9504),i=n(9039),a=n(4901),s=n(6955),r=n(7751),o=n(3706),c=function(){},d=r("Reflect","construct"),u=/^\s*(?:class|function)\b/,h=l(u.exec),m=!u.test(c),U=function(t){if(!a(t))return!1;try{return d(c,[],t),!0}catch(e){return!1}},p=function(t){if(!a(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return m||!!h(u,o(t))}catch(e){return!0}};p.sham=!0,t.exports=!d||i((function(){var t;return U(U.call)||!U(Object)||!U((function(){t=!0}))||t}))?p:U},3711:function(t){var e="[0-9](_*[0-9])*",n=`\\.(${e})`,l="[0-9a-fA-F](_*[0-9a-fA-F])*",i={className:"number",variants:[{begin:`(\\b(${e})((${n})|\\.)?|(${n}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${n})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${n})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${l})\\.?|(${l})?\\.(${l}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${l})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(t){var e="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=e+"(<"+e+"(\\s*,\\s*"+e+")*>)?",l="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",a={className:"meta",begin:"@"+e,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const s=i;return{name:"Java",aliases:["jsp"],keywords:l,illegal:/<\/|#/,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface enum",end:/[{;=]/,excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"class",begin:"record\\s+"+t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0,end:/[{;=]/,keywords:l,contains:[{beginKeywords:"record"},{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"function",begin:"("+n+"\\s+)+"+t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,contains:[{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[a,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,s,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},s,a]}}t.exports=a},3760:function(t){function e(t){const e={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},n={className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},l="property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii";return{name:"Caché Object Script",case_insensitive:!0,aliases:["cls"],keywords:l,contains:[n,e,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*\s*>/,subLanguage:"xml"}]}}t.exports=e},3831:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(?=",t,")")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",built_in:"proc lambda",literal:"true false nil"},l={className:"doctag",begin:"@[A-Za-z]+"},s={begin:"#<",end:">"},r=[t.COMMENT("#","$",{contains:[l]}),t.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),t.COMMENT("^__END__","\\n$")],o={className:"subst",begin:/#\{/,end:/\}/,keywords:n},c={className:"string",contains:[t.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,o]})]}]},d="[1-9](_?[0-9])*|0",u="[0-9](_?[0-9])*",h={className:"number",relevance:0,variants:[{begin:`\\b(${d})(\\.(${u}))?([eE][+-]?(${u})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},m={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},U=[c,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[t.inherit(t.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{begin:"("+t.IDENT_RE+"::)?"+t.IDENT_RE,relevance:0}]}].concat(r)},{className:"function",begin:a(/def\s+/,i(e+"\\s*(\\(|;|$)")),relevance:0,keywords:"def",end:"$|;",contains:[t.inherit(t.TITLE_MODE,{begin:e}),m].concat(r)},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[c,{begin:e}],relevance:0},h,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:n},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(s,r),relevance:0}].concat(s,r);o.contains=U,m.contains=U;const p="[>?]>",F="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",Z=[{begin:/^\s*=>/,starts:{end:"$",contains:U}},{className:"meta",begin:"^("+p+"|"+F+"|"+b+")(?=[ ])",starts:{end:"$",contains:U}}];return r.unshift(s),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(Z).concat(r).concat(U)}}n(8111),n(1701),t.exports=s},3865:function(t){function e(t){const e="[a-zA-Z_][\\w.]*",n="<\\?(lasso(script)?|=)",l="\\]|\\?>",i={$pattern:e+"|&[lg]t;",literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},a=t.COMMENT("\x3c!--","--\x3e",{relevance:0}),s={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[a]}},r={className:"meta",begin:"\\[/noprocess|"+n},o={className:"symbol",begin:"'"+e+"'"},c=[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.inherit(t.C_NUMBER_MODE,{begin:t.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),t.inherit(t.APOS_STRING_MODE,{illegal:null}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$]"+e},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:e,illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)"+e,relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[t.inherit(t.TITLE_MODE,{begin:e+"(=(?!>))?|[-+*/%](?!>)"})]}];return{name:"Lasso",aliases:["ls","lassoscript"],case_insensitive:!0,keywords:i,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[|"+n,returnEnd:!0,relevance:0,contains:[a]}},s,r,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",keywords:i,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[noprocess\\]|"+n,returnEnd:!0,contains:[a]}},s,r].concat(c)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(c)}}t.exports=e},3970:function(t){function e(t){return{name:"Stata",aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},t.COMMENT("^[ \t]*\\*.*$",!1),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]}}t.exports=e},4036:function(t){function e(t){const e={$pattern:/\.?\w+/,keyword:"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained"},n=t.COMMENT(/\{/,/\}/,{relevance:0}),l=t.COMMENT("\\(\\*","\\*\\)",{relevance:10}),i={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},a={className:"string",begin:"(#\\d+)+"},s={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[t.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:e,contains:[i,a]},n,l]};return{name:"Oxygene",case_insensitive:!0,keywords:e,illegal:'("|\\$[G-Zg-z]|\\/\\*||->)',contains:[n,l,t.C_LINE_COMMENT_MODE,i,a,t.NUMBER_MODE,s,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:e,contains:[i,a,n,l,t.C_LINE_COMMENT_MODE,s]}]}}t.exports=e},4149:function(t){"use strict";var e=RangeError;t.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},4176:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={ruleDeclaration:/^[a-zA-Z][a-zA-Z0-9-]*/,unexpectedChars:/[!@#$^&',?+~`|:]/},n=["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],l=t.COMMENT(/;/,/$/),a={className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},s={className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},r={className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},o={className:"symbol",begin:/%[si]/},c={className:"attribute",begin:i(e.ruleDeclaration,/(?=\s*=)/)};return{name:"Augmented Backus-Naur Form",illegal:e.unexpectedChars,keywords:n,contains:[c,l,a,s,r,o,t.QUOTE_STRING_MODE,t.NUMBER_MODE]}}n(8111),n(1701),t.exports=a},4186:function(t){function e(t){return{name:"Coq",keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent Derive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[t.QUOTE_STRING_MODE,t.COMMENT("\\(\\*","\\*\\)"),t.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}t.exports=e},4224:function(t){function e(t){const e=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],n=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],l=["default","false","null","true"],i=["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],a=["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"],s={keyword:i.concat(a),built_in:e,literal:l},r=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),o={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},d=t.inherit(c,{illegal:/\n/}),u={className:"subst",begin:/\{/,end:/\}/,keywords:s},h=t.inherit(u,{illegal:/\n/}),m={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,h]},U={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},u]},p=t.inherit(U,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},h]});u.contains=[U,m,c,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,t.C_BLOCK_COMMENT_MODE],h.contains=[p,m,d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const F={variants:[U,m,c,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},b={begin:"<",end:">",contains:[{beginKeywords:"in out"},r]},Z=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",N={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:s,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},F,o,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},r,b,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[r,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[r,b,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+Z+"\\s+)+"+t.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:s,contains:[{beginKeywords:n.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,b],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,relevance:0,contains:[F,o,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},N]}}t.exports=e},4225:function(t){function e(t){const e="([ui](8|16|32|64|128|size)|f(32|64))?",n="abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",l="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",keyword:n,literal:"true false Some None Ok Err",built_in:l},illegal:""}]}}t.exports=e},4248:function(t){function e(t){const e={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE]};return{name:"Django",aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[t.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),t.COMMENT(/\{#/,/#\}/),{className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[e],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[e]}]}}t.exports=e},4261:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4d Promise"},n="[a-zA-Z_][a-zA-Z0-9\\._]*",l={className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},a={className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},s={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:n,returnEnd:!1}},r={begin:n+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:n,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},o={begin:i(n,/\s*\{/),end:/\{/,returnBegin:!0,relevance:0,contains:[t.inherit(t.TITLE_MODE,{begin:n})]};return{name:"QML",aliases:["qt"],case_insensitive:!1,keywords:e,contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:t.C_NUMBER_RE}],relevance:0},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{begin:/\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},a,l,{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+t.IDENT_RE,relevance:0},s,r,o],illegal:/#/}}n(8111),n(1701),t.exports=a},4305:function(t){function e(t){return{name:"Gherkin",aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},t.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},t.QUOTE_STRING_MODE]}}t.exports=e},4350:function(t,e,n){function l(t){function e(t){return t.map((function(t){return t.split("").map((function(t){return"\\"+t})).join("")})).join("|")}const n="~?[a-z$_][0-9a-zA-Z$_]*",l="`?[A-Z$_][0-9a-zA-Z$_]*",i="'?[a-z$_][0-9a-z$_]*",a="\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*("+i+"\\s*(,"+i+"\\s*)*)?\\))?",s=n+"("+a+"){0,2}",r="("+e(["||","++","**","+.","*","/","*.","/.","..."])+"|\\|>|&&|==|===)",o="\\s+"+r+"\\s+",c={keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},d="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",u={className:"number",relevance:0,variants:[{begin:d},{begin:"\\(-"+d+"\\)"}]},h={className:"operator",relevance:0,begin:r},m=[{className:"identifier",relevance:0,begin:n},h,u],U=[t.QUOTE_STRING_MODE,h,{className:"module",begin:"\\b"+l,returnBegin:!0,end:".",contains:[{className:"identifier",begin:l,relevance:0}]}],p=[{className:"module",begin:"\\b"+l,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:l,relevance:0}]}],F={begin:n,end:"(,|\\n|\\))",relevance:0,contains:[h,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:p}]},b={className:"function",relevance:0,keywords:c,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:n},{begin:s},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[F]}]},{begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};U.push(b);const Z={className:"constructor",begin:l+"\\(",end:"\\)",illegal:"\\n",keywords:c,contains:[t.QUOTE_STRING_MODE,h,{className:"params",begin:"\\b"+n}]},N={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:c,end:"=>",relevance:0,contains:[Z,h,{relevance:0,className:"constructor",begin:l}]},R={className:"module-access",keywords:c,returnBegin:!0,variants:[{begin:"\\b("+l+"\\.)+"+n},{begin:"\\b("+l+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[b,{begin:"\\(",end:"\\)",skip:!0}].concat(U)},{begin:"\\b("+l+"\\.)+\\{",end:/\}/}],contains:U};return p.push(R),{name:"ReasonML",aliases:["re"],keywords:c,illegal:"(:-|:=|\\$\\{|\\+=)",contains:[t.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},t.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:m},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:m},Z,{className:"operator",begin:o,illegal:"--\x3e",relevance:0},u,t.C_LINE_COMMENT_MODE,N,b,{className:"module-def",begin:"\\bmodule\\s+"+n+"\\s+"+l+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0,keywords:c,relevance:0,contains:[{className:"module",relevance:0,begin:l},{begin:/\{/,end:/\}/,skip:!0}].concat(U)},R]}}n(4114),n(8111),n(1701),t.exports=l},4380:function(t){var e,n=Array.prototype.indexOf,l=function(t,e){if(null==t)return-1;if(n&&t.indexOf===n)return t.indexOf(e);for(var l=0,i=t.length;l":">","<":"<",'"':""","'":"'"},c=/[&><"']/g;function d(t){return o[t]}function u(t){return(""+t).replace(c,d)}if("undefined"!==typeof document){var h=document.createElement("span");e="textContent"in h?function(t,e){t.textContent=e}:function(t,e){t.innerText=e}}function m(t){e(t,"")}t.exports={contains:i,deflt:a,escape:u,hyphenate:r,indexOf:l,setTextContent:e,clearNode:m}},4404:function(t,e,n){function l(t){var e="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",l={className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},i={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,i]},s=t.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r="[0-9]{4}(-[0-9][0-9]){0,2}",o="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",c="(\\.[0-9]*)?",d="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",u={className:"number",begin:"\\b"+r+o+c+d+"\\b"},h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},m={begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},U={begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},p=[l,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},u,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},m,U,a],F=[...p];return F.pop(),F.push(s),h.contains=F,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:p}}n(4114),t.exports=l},4417:function(t){function e(t){return{name:"MEL",keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"=0;e--)t[e]||t.splice(e,1);return t.join(" ")};function a(t,e,n,l,i,a){this.classes=t||[],this.children=e||[],this.height=n||0,this.depth=l||0,this.maxFontSize=i||0,this.style=a||{},this.attributes={}}function s(t,e,n,l){this.children=t||[],this.height=e||0,this.depth=n||0,this.maxFontSize=l||0}function r(t,e,n,l,i,a,s){this.value=t||"",this.height=e||0,this.depth=n||0,this.italic=l||0,this.skew=i||0,this.classes=a||[],this.style=s||{},this.maxFontSize=0}a.prototype.setAttribute=function(t,e){this.attributes[t]=e},a.prototype.toNode=function(){var t=document.createElement("span");for(var e in t.className=i(this.classes),this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&t.setAttribute(n,this.attributes[n]);for(var l=0;l0&&(e=document.createElement("span"),e.style.marginRight=this.italic+"em"),this.classes.length>0&&(e=e||document.createElement("span"),e.className=i(this.classes)),this.style)this.style.hasOwnProperty(n)&&(e=e||document.createElement("span"),e.style[n]=this.style[n]);return e?(e.appendChild(t),e):t},r.prototype.toMarkup=function(){var t=!1,e="0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(n+=l.hyphenate(a)+":"+this.style[a]+";");n&&(t=!0,e+=' style="'+l.escape(n)+'"');var s=l.escape(this.value);return t?(e+=">",e+=s,e+="",e):s},t.exports={span:a,documentFragment:s,symbolNode:r}},4481:function(t){function e(t){const e="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*",l="and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",i="SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE ",a="CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ",s="ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME ",r="DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ",o="ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION ",c="JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ",d="ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE ",u="smHidden smMaximized smMinimized smNormal wmNo wmYes ",h="COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND ",m="COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE ",U="MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY ",p="NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY ",F="dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT ",b="CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ",Z="ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME ",N="PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ",R="ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE ",S="CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT ",W="STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER ",V="COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE ",Q="SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID ",y="RESULT_VAR_NAME RESULT_VAR_NAME_ENG ",T="AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID ",M="SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY ",g="SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY ",E="SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS ",G="SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS ",B="SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ",J="ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME ",k="TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ",Y="ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk ",C="EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE ",X="cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ",I="ISBL_SYNTAX NO_SYNTAX XML_SYNTAX ",D="WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY ",f="SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP ",L=i+a+s+r+o+c+d+u+h+m+U+p+F+b+Z+N+R+S+W+V+Q+y+T+M+g+E+G+B+J+k+Y+C+X+I+D+f,w="atUser atGroup atRole ",x="aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty ",z="apBegin apEnd ",v="alLeft alRight ",O="asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways ",_="cirCommon cirRevoked ",j="ctSignature ctEncode ctSignatureEncode ",K="clbUnchecked clbChecked clbGrayed ",P="ceISB ceAlways ceNever ",A="ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob ",H="cfInternal cfDisplay ",q="ciUnspecified ciWrite ciRead ",$="ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ",tt="ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton ",et="cctDate cctInteger cctNumeric cctPick cctReference cctString cctText ",nt="cltInternal cltPrimary cltGUI ",lt="dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange ",it="dssEdit dssInsert dssBrowse dssInActive ",at="dftDate dftShortDate dftDateTime dftTimeStamp ",st="dotDays dotHours dotMinutes dotSeconds ",rt="dtkndLocal dtkndUTC ",ot="arNone arView arEdit arFull ",ct="ddaView ddaEdit ",dt="emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ",ut="ecotFile ecotProcess ",ht="eaGet eaCopy eaCreate eaCreateStandardRoute ",mt="edltAll edltNothing edltQuery ",Ut="essmText essmCard ",pt="esvtLast esvtLastActive esvtSpecified ",Ft="edsfExecutive edsfArchive ",bt="edstSQLServer edstFile ",Zt="edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile ",Nt="vsDefault vsDesign vsActive vsObsolete ",Rt="etNone etCertificate etPassword etCertificatePassword ",St="ecException ecWarning ecInformation ",Wt="estAll estApprovingOnly ",Vt="evtLast evtLastActive evtQuery ",Qt="fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ",yt="ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch ",Tt="grhAuto grhX1 grhX2 grhX3 ",Mt="hltText hltRTF hltHTML ",gt="iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG ",Et="im8bGrayscale im24bRGB im1bMonochrome ",Gt="itBMP itJPEG itWMF itPNG ",Bt="ikhInformation ikhWarning ikhError ikhNoIcon ",Jt="icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler ",kt="isShow isHide isByUserSettings ",Yt="jkJob jkNotice jkControlJob ",Ct="jtInner jtLeft jtRight jtFull jtCross ",Xt="lbpAbove lbpBelow lbpLeft lbpRight ",It="eltPerConnection eltPerUser ",Dt="sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac ",ft="sfsItalic sfsStrikeout sfsNormal ",Lt="ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents ",wt="mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom ",xt="vtEqual vtGreaterOrEqual vtLessOrEqual vtRange ",zt="rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth ",vt="rdWindow rdFile rdPrinter ",Ot="rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument ",_t="reOnChange reOnChangeValues ",jt="ttGlobal ttLocal ttUser ttSystem ",Kt="ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal ",Pt="smSelect smLike smCard ",At="stNone stAuthenticating stApproving ",Ht="sctString sctStream ",qt="sstAnsiSort sstNaturalSort ",$t="svtEqual svtContain ",te="soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown ",ee="tarAbortByUser tarAbortByWorkflowException ",ne="tvtAllWords tvtExactPhrase tvtAnyWord ",le="usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp ",ie="utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected ",ae="btAnd btDetailAnd btOr btNotOr btOnly ",se="vmView vmSelect vmNavigation ",re="vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection ",oe="wfatPrevious wfatNext wfatCancel wfatFinish ",ce="wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 ",de="wfetQueryParameter wfetText wfetDelimiter wfetLabel ",ue="wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate ",he="wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal ",me="wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal ",Ue="waAll waPerformers waManual ",pe="wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause ",Fe="wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection ",be="wiLow wiNormal wiHigh ",Ze="wrtSoft wrtHard ",Ne="wsInit wsRunning wsDone wsControlled wsAborted wsContinued ",Re="wtmFull wtmFromCurrent wtmOnlyCurrent ",Se=w+x+z+v+O+_+j+K+P+A+H+q+$+tt+et+nt+lt+it+at+st+rt+ot+ct+dt+ut+ht+mt+Ut+pt+Ft+bt+Zt+Nt+Rt+St+Wt+Vt+Qt+yt+Tt+Mt+gt+Et+Gt+Bt+Jt+kt+Yt+Ct+Xt+It+Dt+ft+Lt+wt+xt+zt+vt+Ot+_t+jt+Kt+Pt+At+Ht+qt+$t+te+ee+ne+le+ie+ae+se+re+oe+ce+de+ue+he+me+Ue+pe+Fe+be+Ze+Ne+Re,We="AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр ",Ve="AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",Qe="IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ",ye=L+Se,Te=Ve,Me="null true false nil ",ge={className:"number",begin:t.NUMBER_RE,relevance:0},Ee={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},Ge={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},Be={className:"comment",begin:"//",end:"$",relevance:0,contains:[t.PHRASAL_WORDS_MODE,Ge]},Je={className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[t.PHRASAL_WORDS_MODE,Ge]},ke={variants:[Be,Je]},Ye={$pattern:e,keyword:l,built_in:ye,class:Te,literal:Me},Ce={begin:"\\.\\s*"+t.UNDERSCORE_IDENT_RE,keywords:Ye,relevance:0},Xe={className:"type",begin:":[ \\t]*("+Qe.trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},Ie={className:"variable",keywords:Ye,begin:e,relevance:0,contains:[Xe,Ce]},De=n+"\\(",fe={className:"title",keywords:{$pattern:e,built_in:We},begin:De,end:"\\(",returnBegin:!0,excludeEnd:!0},Le={className:"function",begin:De,end:"\\)$",returnBegin:!0,keywords:Ye,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[fe,Ce,Ie,Ee,ge,ke]};return{name:"ISBL",case_insensitive:!0,keywords:Ye,illegal:"\\$|\\?|%|,|;$|~|#|@|l(t))).join("");return e}function r(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function o(t){const e=s(/[A-Z_]/,a(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),n=/[A-Za-z0-9._:-]+/,l={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=t.inherit(o,{begin:/\(/,end:/\)/}),d=t.inherit(t.APOS_STRING_MODE,{className:"meta-string"}),u=t.inherit(t.QUOTE_STRING_MODE,{className:"meta-string"}),h={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[o,u,d,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[o,c,u,d]}]}]},t.COMMENT(//,{relevance:10}),{begin://,relevance:10},l,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[h],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[h],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:s(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:e,relevance:0,starts:h}]},{className:"tag",begin:s(/<\//,i(s(e,/>/))),contains:[{className:"name",begin:e,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}n(8111),n(1701),t.exports=o},4579:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return s("(",t,")*")}function a(t){return s("(",t,")?")}function s(...t){const e=t.map((t=>l(t))).join("");return e}function r(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function o(t){const e={"builtin-name":["action","bindattr","collection","component","concat","debugger","each","each-in","get","hash","if","in","input","link-to","loc","log","lookup","mut","outlet","partial","query-params","render","template","textarea","unbound","unless","view","with","yield"]},n={literal:["true","false","undefined","null"]},l=/""|"[^"]+"/,o=/''|'[^']+'/,c=/\[\]|\[[^\]]+\]/,d=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,u=/(\.|\/)/,h=r(l,o,c,d),m=s(a(/\.|\.\/|\//),h,i(s(u,h))),U=s("(",c,"|",d,")(?==)"),p={begin:m,lexemes:/[\w.\/]+/},F=t.inherit(p,{keywords:n}),b={begin:/\(/,end:/\)/},Z={className:"attr",begin:U,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,F,b]}}},N={begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},R={contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,N,Z,F,b],returnEnd:!0},S=t.inherit(p,{className:"name",keywords:e,starts:t.inherit(R,{end:/\)/})});b.contains=[S];const W=t.inherit(p,{keywords:e,className:"name",starts:t.inherit(R,{end:/\}\}/})}),V=t.inherit(p,{keywords:e,className:"name"}),Q=t.inherit(p,{className:"name",keywords:e,starts:t.inherit(R,{end:/\}\}/})}),y={begin:/\\\{\{/,skip:!0},T={begin:/\\\\(?=\{\{)/,skip:!0};return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[y,T,t.COMMENT(/\{\{!--/,/--\}\}/),t.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[W],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[V]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[W]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[V]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[Q]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[Q]}]}}n(8111),n(1701),t.exports=o},4610:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(",t,")?")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",a="<[^<>]+>",s="("+n+"|"+i(l)+"[a-zA-Z_]\\w*"+i(a)+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(c,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/},e,t.C_BLOCK_COMMENT_MODE]},h={className:"title",begin:i(l)+t.IDENT_RE,relevance:0},m=i(l)+t.IDENT_RE+"\\s*\\(",U={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},p=[u,r,e,t.C_BLOCK_COMMENT_MODE,d,c],F={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:U,contains:p.concat([{begin:/\(/,end:/\)/,keywords:U,contains:p.concat(["self"]),relevance:0}]),relevance:0},b={className:"function",begin:"("+s+"[\\*&\\s]+)+"+m,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:U,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:U,relevance:0},{begin:m,returnBegin:!0,contains:[h],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:U,relevance:0,contains:[e,t.C_BLOCK_COMMENT_MODE,c,d,r,{begin:/\(/,end:/\)/,keywords:U,relevance:0,contains:["self",e,t.C_BLOCK_COMMENT_MODE,c,d,r]}]},r,e,t.C_BLOCK_COMMENT_MODE,u]};return{name:"C",aliases:["h"],keywords:U,disableAutodetect:!0,illegal:"",keywords:U,contains:["self",r]},{begin:t.IDENT_RE+"::",keywords:U},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:u,strings:c,keywords:U}}}n(8111),n(1701),t.exports=s},4652:function(t,e,n){function l(t){const e=t.COMMENT("--","$"),n="[a-zA-Z_][a-zA-Z_0-9$]*",l="\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",i="<<\\s*"+n+"\\s*>>",a="ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ",s="SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",r="ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN ",o="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",c=o.trim().split(" ").map((function(t){return t.split("|")[0]})).join("|"),d="CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ",u="FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ",h="SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED ",m="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ",U=m.trim().split(" ").map((function(t){return t.split("|")[0]})).join("|");return{name:"PostgreSQL",aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:a+r+s,built_in:d+u+h},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:t.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+U+")\\s*\\("},{begin:"\\.("+c+")\\b"},{begin:"\\b("+c+")\\s+PATH\\b",keywords:{keyword:"PATH",type:o.replace("PATH ","")}},{className:"type",begin:"\\b("+c+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},t.END_SAME_AS_BEGIN({begin:l,end:l,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]}),{begin:'"',end:'"',contains:[{begin:'""'}]},t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,e,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:i,relevance:10}]}}n(8111),n(1701),t.exports=l},4663:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return yB}});var l={};n.r(l),n.d(l,{decode:function(){return I},encode:function(){return w},format:function(){return x},parse:function(){return at}});var i={};n.r(i),n.d(i,{Any:function(){return ot},Cc:function(){return ct},Cf:function(){return dt},P:function(){return st},S:function(){return rt},Z:function(){return ut}});var a={};n.r(a),n.d(a,{arrayReplaceAt:function(){return wt},assign:function(){return Lt},escapeHtml:function(){return ee},escapeRE:function(){return le},fromCodePoint:function(){return zt},has:function(){return ft},isMdAsciiPunct:function(){return re},isPunctChar:function(){return se},isSpace:function(){return ie},isString:function(){return It},isValidEntityCode:function(){return xt},isWhiteSpace:function(){return ae},lib:function(){return ce},normalizeReference:function(){return oe},unescapeAll:function(){return At},unescapeMd:function(){return Pt}});var s={};n.r(s),n.d(s,{parseLinkDestination:function(){return ue},parseLinkLabel:function(){return de},parseLinkTitle:function(){return he}});var r=n(6768),o=n(4232);const c={class:"article-view"},d={key:0,class:"container"},u={class:"article-title"},h={key:0,class:"article-tags",style:{"margin-left":"3rem"}},m={key:0,class:"article-official"},U={key:1,class:"article-highlight"},p={key:2,class:"article-top"},F={class:"meta-wrapper",style:{"margin-left":"3rem"}},b={class:"article-meta"},Z={class:"article-author-info"},N={class:"article-author"},R={class:"article-date"},S={key:1,class:"container"};function W(t,e,n,l,i,a){const s=(0,r.g2)("Navbar"),W=(0,r.g2)("UserMeta"),V=(0,r.g2)("MarkdownArticle"),Q=(0,r.g2)("CommentSection"),y=(0,r.g2)("Loading");return(0,r.uX)(),(0,r.CE)("div",c,[(0,r.bF)(s),i.article?((0,r.uX)(),(0,r.CE)("div",d,[(0,r.Lk)("h1",u,(0,o.v_)(i.article.title||"草稿预览"),1),a.isPreviewMode?(0,r.Q3)("",!0):((0,r.uX)(),(0,r.CE)("div",h,[i.article.official?((0,r.uX)(),(0,r.CE)("span",m,"官方")):(0,r.Q3)("",!0),i.article.highlight?((0,r.uX)(),(0,r.CE)("span",U,"优质")):(0,r.Q3)("",!0),i.article.top?((0,r.uX)(),(0,r.CE)("span",p,"置顶")):(0,r.Q3)("",!0)])),(0,r.Lk)("div",F,[(0,r.Lk)("div",b,[(0,r.Lk)("div",Z,[(0,r.Lk)("span",N,[(0,r.bF)(W,{id:i.article.user_id},null,8,["id"])]),(0,r.Lk)("span",R,"📅 最后更新于 "+(0,o.v_)(a.formatDate(i.article.updated_at)),1)])])]),(0,r.bF)(V,{content:i.article.content},null,8,["content"]),a.isPreviewMode?(0,r.Q3)("",!0):((0,r.uX)(),(0,r.Wv)(Q,{key:1,articleId:t.$route.params.id},null,8,["articleId"]))])):i.loading?((0,r.uX)(),(0,r.CE)("div",S,[(0,r.bF)(y,{visible:!0,text:"内容加载中,请稍后..."})])):(0,r.Q3)("",!0)])}n(4114);var V=n(6737);const Q={class:"article-container"},y={key:0},T={class:"toc-header"},M={class:"toc-list"},g=["href","onClick"],E={key:1,class:"toc-empty"},G={class:"article-content"},B={key:0,class:"loading"},J=["innerHTML"];function k(t,e,n,l,i,a){return(0,r.uX)(),(0,r.CE)("div",Q,[(0,r.Lk)("div",{class:(0,o.C4)(["toc-overlay",{"is-active":i.isTocActive&&i.isMobile}]),onClick:e[0]||(e[0]=(...t)=>a.toggleToc&&a.toggleToc(...t))},null,2),(0,r.Lk)("div",{class:"toc-toggle",onClick:e[1]||(e[1]=(...t)=>a.toggleToc&&a.toggleToc(...t))},e[3]||(e[3]=[(0,r.Lk)("span",null,"目录",-1)])),(0,r.Lk)("div",{class:(0,o.C4)(["article-toc",{"is-active":i.isTocActive}])},[i.headings.length>0?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.Lk)("div",T,[e[4]||(e[4]=(0,r.Lk)("div",{class:"toc-title"},"目录",-1)),(0,r.Lk)("div",{class:"toc-close",onClick:e[2]||(e[2]=(...t)=>a.toggleToc&&a.toggleToc(...t))},"✕")]),(0,r.Lk)("ul",M,[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.headings,((t,e)=>((0,r.uX)(),(0,r.CE)("li",{key:e,class:(0,o.C4)([`level-${t.level}`,{active:i.activeHeading===t.id}])},[(0,r.Lk)("a",{href:`#${t.id}`,onClick:e=>a.scrollToHeading(t.id)},(0,o.v_)(t.text),9,g)],2)))),128))])])):((0,r.uX)(),(0,r.CE)("div",E,"暂无目录"))],2),(0,r.Lk)("div",G,[i.renderContent?((0,r.uX)(),(0,r.CE)("div",{key:1,innerHTML:i.renderContent,ref:"articleContent"},null,8,J)):((0,r.uX)(),(0,r.CE)("div",B,"加载中..."))])])}n(8111),n(7588),n(1701),n(2489);const Y={};function C(t){let e=Y[t];if(e)return e;e=Y[t]=[];for(let n=0;n<128;n++){const t=String.fromCharCode(n);e.push(t)}for(let n=0;n=55296&&t<=57343?"���":String.fromCharCode(t),l+=6;continue}}if(240===(248&a)&&l+91114111?e+="����":(t-=65536,e+=String.fromCharCode(55296+(t>>10),56320+(1023&t))),l+=9;continue}}e+="�"}}return e}))}X.defaultChars=";/?:@&=+$,#",X.componentChars="";var I=X;const D={};function f(t){let e=D[t];if(e)return e;e=D[t]=[];for(let n=0;n<128;n++){const t=String.fromCharCode(n);/^[0-9a-z]$/i.test(t)?e.push(t):e.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2))}for(let n=0;n=55296&&e<=57343){if(e>=55296&&e<=56319&&a+1=56320&&e<=57343){i+=encodeURIComponent(t[a]+t[a+1]),a++;continue}}i+="%EF%BF%BD"}else i+=encodeURIComponent(t[a])}return i}L.defaultChars=";/?:@&=+$,-_.!~*'()#",L.componentChars="-_.!~*'()";var w=L;function x(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function z(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}const v=/^([a-z0-9.+-]+:)/i,O=/:[0-9]*$/,_=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,j=["<",">",'"',"`"," ","\r","\n","\t"],K=["{","}","|","\\","^","`"].concat(j),P=["'"].concat(K),A=["%","/","?",";","#"].concat(P),H=["/","?","#"],q=255,$=/^[+a-z0-9A-Z_-]{0,63}$/,tt=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,et={javascript:!0,"javascript:":!0},nt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function lt(t,e){if(t&&t instanceof z)return t;const n=new z;return n.parse(t,e),n}z.prototype.parse=function(t,e){let n,l,i,a=t;if(a=a.trim(),!e&&1===t.split("#").length){const t=_.exec(a);if(t)return this.pathname=t[1],t[2]&&(this.search=t[2]),this}let s=v.exec(a);if(s&&(s=s[0],n=s.toLowerCase(),this.protocol=s,a=a.substr(s.length)),(e||s||a.match(/^\/\/[^@\/]+@[^@\/]+/))&&(i="//"===a.substr(0,2),!i||s&&et[s]||(a=a.substr(2),this.slashes=!0)),!et[s]&&(i||s&&!nt[s])){let t,e,n=-1;for(let r=0;r127?l+="x":l+=n[t];if(!l.match($)){const l=t.slice(0,e),i=t.slice(e+1),s=n.match(tt);s&&(l.push(s[1]),i.unshift(s[2])),i.length&&(a=i.join(".")+a),this.hostname=l.join(".");break}}}}this.hostname.length>q&&(this.hostname=""),s&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const r=a.indexOf("#");-1!==r&&(this.hash=a.substr(r),a=a.slice(0,r));const o=a.indexOf("?");return-1!==o&&(this.search=a.substr(o),a=a.slice(0,o)),a&&(this.pathname=a),nt[n]&&this.hostname&&!this.pathname&&(this.pathname=""),this},z.prototype.parseHost=function(t){let e=O.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};var it,at=lt,st=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,rt=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,ot=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ct=/[\0-\x1F\x7F-\x9F]/,dt=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,ut=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,ht=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((t=>t.charCodeAt(0)))),mt=new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((t=>t.charCodeAt(0))));const Ut=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),pt=null!==(it=String.fromCodePoint)&&void 0!==it?it:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};function Ft(t){var e;return t>=55296&&t<=57343||t>1114111?65533:null!==(e=Ut.get(t))&&void 0!==e?e:t}var bt;(function(t){t[t["NUM"]=35]="NUM",t[t["SEMI"]=59]="SEMI",t[t["EQUALS"]=61]="EQUALS",t[t["ZERO"]=48]="ZERO",t[t["NINE"]=57]="NINE",t[t["LOWER_A"]=97]="LOWER_A",t[t["LOWER_F"]=102]="LOWER_F",t[t["LOWER_X"]=120]="LOWER_X",t[t["LOWER_Z"]=122]="LOWER_Z",t[t["UPPER_A"]=65]="UPPER_A",t[t["UPPER_F"]=70]="UPPER_F",t[t["UPPER_Z"]=90]="UPPER_Z"})(bt||(bt={}));const Zt=32;var Nt,Rt,St;function Wt(t){return t>=bt.ZERO&&t<=bt.NINE}function Vt(t){return t>=bt.UPPER_A&&t<=bt.UPPER_F||t>=bt.LOWER_A&&t<=bt.LOWER_F}function Qt(t){return t>=bt.UPPER_A&&t<=bt.UPPER_Z||t>=bt.LOWER_A&&t<=bt.LOWER_Z||Wt(t)}function yt(t){return t===bt.EQUALS||Qt(t)}(function(t){t[t["VALUE_LENGTH"]=49152]="VALUE_LENGTH",t[t["BRANCH_LENGTH"]=16256]="BRANCH_LENGTH",t[t["JUMP_TABLE"]=127]="JUMP_TABLE"})(Nt||(Nt={})),function(t){t[t["EntityStart"]=0]="EntityStart",t[t["NumericStart"]=1]="NumericStart",t[t["NumericDecimal"]=2]="NumericDecimal",t[t["NumericHex"]=3]="NumericHex",t[t["NamedEntity"]=4]="NamedEntity"}(Rt||(Rt={})),function(t){t[t["Legacy"]=0]="Legacy",t[t["Strict"]=1]="Strict",t[t["Attribute"]=2]="Attribute"}(St||(St={}));class Tt{constructor(t,e,n){this.decodeTree=t,this.emitCodePoint=e,this.errors=n,this.state=Rt.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=St.Strict}startEntity(t){this.decodeMode=t,this.state=Rt.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case Rt.EntityStart:return t.charCodeAt(e)===bt.NUM?(this.state=Rt.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=Rt.NamedEntity,this.stateNamedEntity(t,e));case Rt.NumericStart:return this.stateNumericStart(t,e);case Rt.NumericDecimal:return this.stateNumericDecimal(t,e);case Rt.NumericHex:return this.stateNumericHex(t,e);case Rt.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(t.charCodeAt(e)|Zt)===bt.LOWER_X?(this.state=Rt.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=Rt.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,n,l){if(e!==n){const i=n-e;this.result=this.result*Math.pow(l,i)+parseInt(t.substr(e,i),l),this.consumed+=i}}stateNumericHex(t,e){const n=e;while(e>14;for(;e>14,0!==i){if(a===bt.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==St.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:e,decodeTree:n}=this,l=(n[e]&Nt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,l,this.consumed),null===(t=this.errors)||void 0===t||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,n){const{decodeTree:l}=this;return this.emitCodePoint(1===e?l[t]&~Nt.VALUE_LENGTH:l[t+1],n),3===e&&this.emitCodePoint(l[t+2],n),n}end(){var t;switch(this.state){case Rt.NamedEntity:return 0===this.result||this.decodeMode===St.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case Rt.NumericDecimal:return this.emitNumericEntity(0,2);case Rt.NumericHex:return this.emitNumericEntity(0,3);case Rt.NumericStart:return null===(t=this.errors)||void 0===t||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Rt.EntityStart:return 0}}}function Mt(t){let e="";const n=new Tt(t,(t=>e+=pt(t)));return function(t,l){let i=0,a=0;while((a=t.indexOf("&",a))>=0){e+=t.slice(i,a),n.startEntity(l);const s=n.write(t,a+1);if(s<0){i=a+n.end();break}i=a+s,a=0===s?i+1:i}const s=e+t.slice(i);return e="",s}}function gt(t,e,n,l){const i=(e&Nt.BRANCH_LENGTH)>>7,a=e&Nt.JUMP_TABLE;if(0===i)return 0!==a&&l===a?n:-1;if(a){const e=l-a;return e<0||e>=i?-1:t[n+e]-1}let s=n,r=s+i-1;while(s<=r){const e=s+r>>>1,n=t[e];if(nl))return t[e+i];r=e-1}}return-1}const Et=Mt(ht);Mt(mt);function Gt(t,e=St.Legacy){return Et(t,e)}function Bt(t){for(let e=1;e'"]/g,Jt),kt(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),kt(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var Yt,Ct;function Xt(t){return Object.prototype.toString.call(t)}function It(t){return"[object String]"===Xt(t)}(function(t){t[t["XML"]=0]="XML",t[t["HTML"]=1]="HTML"})(Yt||(Yt={})),function(t){t[t["UTF8"]=0]="UTF8",t[t["ASCII"]=1]="ASCII",t[t["Extensive"]=2]="Extensive",t[t["Attribute"]=3]="Attribute",t[t["Text"]=4]="Text"}(Ct||(Ct={}));const Dt=Object.prototype.hasOwnProperty;function ft(t,e){return Dt.call(t,e)}function Lt(t){const e=Array.prototype.slice.call(arguments,1);return e.forEach((function(e){if(e){if("object"!==typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach((function(n){t[n]=e[n]}))}})),t}function wt(t,e,n){return[].concat(t.slice(0,e),n,t.slice(e+1))}function xt(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(65535!==(65535&t)&&65534!==(65535&t)&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function zt(t){if(t>65535){t-=65536;const e=55296+(t>>10),n=56320+(1023&t);return String.fromCharCode(e,n)}return String.fromCharCode(t)}const vt=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,Ot=/&([a-z#][a-z0-9]{1,31});/gi,_t=new RegExp(vt.source+"|"+Ot.source,"gi"),jt=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function Kt(t,e){if(35===e.charCodeAt(0)&&jt.test(e)){const n="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return xt(n)?zt(n):t}const n=Gt(t);return n!==t?n:t}function Pt(t){return t.indexOf("\\")<0?t:t.replace(vt,"$1")}function At(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(_t,(function(t,e,n){return e||Kt(t,n)}))}const Ht=/[&<>"]/,qt=/[&<>"]/g,$t={"&":"&","<":"<",">":">",'"':"""};function te(t){return $t[t]}function ee(t){return Ht.test(t)?t.replace(qt,te):t}const ne=/[.?*+^$[\]\\(){}|-]/g;function le(t){return t.replace(ne,"\\$&")}function ie(t){switch(t){case 9:case 32:return!0}return!1}function ae(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function se(t){return st.test(t)||rt.test(t)}function re(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function oe(t){return t=t.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(t=t.replace(/ẞ/g,"ß")),t.toLowerCase().toUpperCase()}const ce={mdurl:l,ucmicro:i};function de(t,e,n){let l,i,a,s;const r=t.posMax,o=t.pos;t.pos=e+1,l=1;while(t.pos32))return a;if(41===l){if(0===s)break;s--}i++}}return e===i||0!==s||(a.str=At(t.slice(e,i)),a.pos=i,a.ok=!0),a}function he(t,e,n,l){let i,a=e;const s={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(l)s.str=l.str,s.marker=l.marker;else{if(a>=n)return s;let l=t.charCodeAt(a);if(34!==l&&39!==l&&40!==l)return s;e++,a++,40===l&&(l=41),s.marker=l}while(a"+ee(a.content)+""},me.code_block=function(t,e,n,l,i){const a=t[e];return""+ee(t[e].content)+"\n"},me.fence=function(t,e,n,l,i){const a=t[e],s=a.info?At(a.info).trim():"";let r,o="",c="";if(s){const t=s.split(/(\s+)/g);o=t[0],c=t.slice(2).join("")}if(r=n.highlight&&n.highlight(a.content,o,c)||ee(a.content),0===r.indexOf("${r}\n`}return`
${r}
\n`},me.image=function(t,e,n,l,i){const a=t[e];return a.attrs[a.attrIndex("alt")][1]=i.renderInlineAsText(a.children,n,l),i.renderToken(t,e,n)},me.hardbreak=function(t,e,n){return n.xhtmlOut?"
\n":"
\n"},me.softbreak=function(t,e,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},me.text=function(t,e){return ee(t[e].content)},me.html_block=function(t,e){return t[e].content},me.html_inline=function(t,e){return t[e].content},Ue.prototype.renderAttrs=function(t){let e,n,l;if(!t.attrs)return"";for(l="",e=0,n=t.attrs.length;e\n":">",i},Ue.prototype.renderInline=function(t,e,n){let l="";const i=this.rules;for(let a=0,s=t.length;a=0&&(n=this.attrs[e][1]),n},Ze.prototype.attrJoin=function(t,e){const n=this.attrIndex(t);n<0?this.attrPush([t,e]):this.attrs[n][1]=this.attrs[n][1]+" "+e};var Ne=Ze;function Re(t,e,n){this.src=t,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=e}Re.prototype.Token=Ne;var Se=Re;const We=/\r\n?|\n/g,Ve=/\0/g;function Qe(t){let e;e=t.src.replace(We,"\n"),e=e.replace(Ve,"�"),t.src=e}function ye(t){let e;t.inlineMode?(e=new t.Token("inline","",0),e.content=t.src,e.map=[0,1],e.children=[],t.tokens.push(e)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}function Te(t){const e=t.tokens;for(let n=0,l=e.length;n\s]/i.test(t)}function ge(t){return/^<\/a\s*>/i.test(t)}function Ee(t){const e=t.tokens;if(t.md.options.linkify)for(let n=0,l=e.length;n=0;a--){const s=l[a];if("link_close"!==s.type){if("html_inline"===s.type&&(Me(s.content)&&i>0&&i--,ge(s.content)&&i++),!(i>0)&&"text"===s.type&&t.md.linkify.test(s.content)){const i=s.content;let r=t.md.linkify.match(i);const o=[];let c=s.level,d=0;r.length>0&&0===r[0].index&&a>0&&"text_special"===l[a-1].type&&(r=r.slice(1));for(let e=0;ed){const e=new t.Token("text","",0);e.content=i.slice(d,s),e.level=c,o.push(e)}const u=new t.Token("link_open","a",1);u.attrs=[["href",l]],u.level=c++,u.markup="linkify",u.info="auto",o.push(u);const h=new t.Token("text","",0);h.content=a,h.level=c,o.push(h);const m=new t.Token("link_close","a",-1);m.level=--c,m.markup="linkify",m.info="auto",o.push(m),d=r[e].lastIndex}if(d=0;n--){const l=t[n];"text"!==l.type||e||(l.content=l.content.replace(Je,Ye)),"link_open"===l.type&&"auto"===l.info&&e--,"link_close"===l.type&&"auto"===l.info&&e++}}function Xe(t){let e=0;for(let n=t.length-1;n>=0;n--){const l=t[n];"text"!==l.type||e||Ge.test(l.content)&&(l.content=l.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1—").replace(/(^|\s)--(?=\s|$)/gm,"$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1–")),"link_open"===l.type&&"auto"===l.info&&e--,"link_close"===l.type&&"auto"===l.info&&e++}}function Ie(t){let e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(Be.test(t.tokens[e].content)&&Ce(t.tokens[e].children),Ge.test(t.tokens[e].content)&&Xe(t.tokens[e].children))}const De=/['"]/,fe=/['"]/g,Le="’";function we(t,e,n){return t.slice(0,e)+n+t.slice(e+1)}function xe(t,e){let n;const l=[];for(let i=0;i=0;n--)if(l[n].level<=s)break;if(l.length=n+1,"text"!==a.type)continue;let r=a.content,o=0,c=r.length;t:while(o=0)U=r.charCodeAt(d.index-1);else for(n=i-1;n>=0;n--){if("softbreak"===t[n].type||"hardbreak"===t[n].type)break;if(t[n].content){U=t[n].content.charCodeAt(t[n].content.length-1);break}}let p=32;if(o=48&&U<=57&&(h=u=!1),u&&h&&(u=F,h=b),u||h){if(h)for(n=l.length-1;n>=0;n--){let u=l[n];if(l[n].level=0;e--)"inline"===t.tokens[e].type&&De.test(t.tokens[e].content)&&xe(t.tokens[e].children,t)}function ve(t){let e,n;const l=t.tokens,i=l.length;for(let a=0;a0&&this.level++,this.tokens.push(l),l},Ke.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},Ke.prototype.skipEmptyLines=function(t){for(let e=this.lineMax;te)if(!ie(this.src.charCodeAt(--t)))return t+1;return t},Ke.prototype.skipChars=function(t,e){for(let n=this.src.length;tn)if(e!==this.src.charCodeAt(--t))return t+1;return t},Ke.prototype.getLines=function(t,e,n,l){if(t>=e)return"";const i=new Array(e-t);for(let a=0,s=t;sn?new Array(t-n+1).join(" ")+this.src.slice(c,o):this.src.slice(c,o)}return i.join("")},Ke.prototype.Token=Ne;var Pe=Ke;const Ae=65536;function He(t,e){const n=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];return t.src.slice(n,l)}function qe(t){const e=[],n=t.length;let l=0,i=t.charCodeAt(l),a=!1,s=0,r="";while(ln)return!1;let i=e+1;if(t.sCount[i]=4)return!1;let a=t.bMarks[i]+t.tShift[i];if(a>=t.eMarks[i])return!1;const s=t.src.charCodeAt(a++);if(124!==s&&45!==s&&58!==s)return!1;if(a>=t.eMarks[i])return!1;const r=t.src.charCodeAt(a++);if(124!==r&&45!==r&&58!==r&&!ie(r))return!1;if(45===s&&ie(r))return!1;while(a=4)return!1;c=qe(o),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==d.length)return!1;if(l)return!0;const h=t.parentType;t.parentType="table";const m=t.md.block.ruler.getRules("blockquote"),U=t.push("table_open","table",1),p=[e,0];U.map=p;const F=t.push("thead_open","thead",1);F.map=[e,e+1];const b=t.push("tr_open","tr",1);b.map=[e,e+1];for(let R=0;R=4)break;if(c=qe(o),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),N+=u-c.length,N>Ae)break;if(i===e+2){const n=t.push("tbody_open","tbody",1);n.map=Z=[e+2,0]}const a=t.push("tr_open","tr",1);a.map=[i,i+1];for(let e=0;e=4))break;l++,i=l}t.line=i;const a=t.push("code_block","code",0);return a.content=t.getLines(e,i,4+t.blkIndent,!1)+"\n",a.map=[e,t.line],!0}function en(t,e,n,l){let i=t.bMarks[e]+t.tShift[e],a=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(i+3>a)return!1;const s=t.src.charCodeAt(i);if(126!==s&&96!==s)return!1;let r=i;i=t.skipChars(i,s);let o=i-r;if(o<3)return!1;const c=t.src.slice(r,i),d=t.src.slice(i,a);if(96===s&&d.indexOf(String.fromCharCode(s))>=0)return!1;if(l)return!0;let u=e,h=!1;for(;;){if(u++,u>=n)break;if(i=r=t.bMarks[u]+t.tShift[u],a=t.eMarks[u],i=4)&&(i=t.skipChars(i,s),!(i-r=4)return!1;if(62!==t.src.charCodeAt(i))return!1;if(l)return!0;const r=[],o=[],c=[],d=[],u=t.md.block.ruler.getRules("blockquote"),h=t.parentType;t.parentType="blockquote";let m,U=!1;for(m=e;m=a)break;if(62===t.src.charCodeAt(i++)&&!e){let e,n,l=t.sCount[m]+1;32===t.src.charCodeAt(i)?(i++,l++,n=!1,e=!0):9===t.src.charCodeAt(i)?(e=!0,(t.bsCount[m]+l)%4===3?(i++,l++,n=!1):n=!0):e=!1;let s=l;r.push(t.bMarks[m]),t.bMarks[m]=i;while(i=a,o.push(t.bsCount[m]),t.bsCount[m]=t.sCount[m]+1+(e?1:0),c.push(t.sCount[m]),t.sCount[m]=s-l,d.push(t.tShift[m]),t.tShift[m]=i-t.bMarks[m];continue}if(U)break;let l=!1;for(let i=0,a=u.length;i";const b=[e,0];F.map=b,t.md.block.tokenize(t,e,m);const Z=t.push("blockquote_close","blockquote",-1);Z.markup=">",t.lineMax=s,t.parentType=h,b[1]=t.line;for(let N=0;N=4)return!1;let a=t.bMarks[e]+t.tShift[e];const s=t.src.charCodeAt(a++);if(42!==s&&45!==s&&95!==s)return!1;let r=1;while(a=l)return-1;let a=t.src.charCodeAt(i++);if(a<48||a>57)return-1;for(;;){if(i>=l)return-1;if(a=t.src.charCodeAt(i++),!(a>=48&&a<=57)){if(41===a||46===a)break;return-1}if(i-n>=10)return-1}return i=4)return!1;if(t.listIndent>=0&&t.sCount[o]-t.listIndent>=4&&t.sCount[o]=t.blkIndent&&(m=!0),(h=sn(t,o))>=0){if(d=!0,s=t.bMarks[o]+t.tShift[o],u=Number(t.src.slice(s,h-1)),m&&1!==u)return!1}else{if(!((h=an(t,o))>=0))return!1;d=!1}if(m&&t.skipSpaces(h)>=t.eMarks[o])return!1;if(l)return!0;const U=t.src.charCodeAt(h-1),p=t.tokens.length;d?(r=t.push("ordered_list_open","ol",1),1!==u&&(r.attrs=[["start",u]])):r=t.push("bullet_list_open","ul",1);const F=[o,0];r.map=F,r.markup=String.fromCharCode(U);let b=!1;const Z=t.md.block.ruler.getRules("list"),N=t.parentType;t.parentType="list";while(o=i?1:l-e,m>4&&(m=1);const p=e+m;r=t.push("list_item_open","li",1),r.markup=String.fromCharCode(U);const F=[o,0];r.map=F,d&&(r.info=t.src.slice(s,h-1));const N=t.tight,R=t.tShift[o],S=t.sCount[o],W=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=p,t.tight=!0,t.tShift[o]=u-t.bMarks[o],t.sCount[o]=l,u>=i&&t.isEmpty(o+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,o,n,!0),t.tight&&!b||(c=!1),b=t.line-o>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=W,t.tShift[o]=R,t.sCount[o]=S,t.tight=N,r=t.push("list_item_close","li",-1),r.markup=String.fromCharCode(U),o=t.line,F[1]=o,o>=n)break;if(t.sCount[o]=4)break;let V=!1;for(let i=0,a=Z.length;i=4)return!1;if(91!==t.src.charCodeAt(i))return!1;function r(e){const n=t.lineMax;if(e>=n||t.isEmpty(e))return null;let l=!1;if(t.sCount[e]-t.blkIndent>3&&(l=!0),t.sCount[e]<0&&(l=!0),!l){const l=t.md.block.ruler.getRules("reference"),i=t.parentType;t.parentType="reference";let a=!1;for(let s=0,r=l.length;s`\\x00-\\x20]+",mn="'[^']*'",Un='"[^"]*"',pn="(?:"+hn+"|"+mn+"|"+Un+")",Fn="(?:\\s+"+un+"(?:\\s*=\\s*"+pn+")?)",bn="<[A-Za-z][A-Za-z0-9\\-]*"+Fn+"*\\s*\\/?>",Zn="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",Nn="\x3c!---?>|\x3c!--(?:[^-]|-[^-]|--[^>])*--\x3e",Rn="<[?][\\s\\S]*?[?]>",Sn="]*>",Wn="",Vn=new RegExp("^(?:"+bn+"|"+Zn+"|"+Nn+"|"+Rn+"|"+Sn+"|"+Wn+")"),Qn=new RegExp("^(?:"+bn+"|"+Zn+")"),yn=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(Qn.source+"\\s*$"),/^$/,!1]];function Tn(t,e,n,l){let i=t.bMarks[e]+t.tShift[e],a=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(i))return!1;let s=t.src.slice(i,a),r=0;for(;r=4)return!1;let s=t.src.charCodeAt(i);if(35!==s||i>=a)return!1;let r=1;s=t.src.charCodeAt(++i);while(35===s&&i6||ii&&ie(t.src.charCodeAt(o-1))&&(a=o),t.line=e+1;const c=t.push("heading_open","h"+String(r),1);c.markup="########".slice(0,r),c.map=[e,t.line];const d=t.push("inline","",0);d.content=t.src.slice(i,a).trim(),d.map=[e,t.line],d.children=[];const u=t.push("heading_close","h"+String(r),-1);return u.markup="########".slice(0,r),!0}function gn(t,e,n){const l=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const i=t.parentType;t.parentType="paragraph";let a,s=0,r=e+1;for(;r3)continue;if(t.sCount[r]>=t.blkIndent){let e=t.bMarks[r]+t.tShift[r];const n=t.eMarks[r];if(e=n))){s=61===a?1:2;break}}if(t.sCount[r]<0)continue;let e=!1;for(let i=0,a=l.length;i3)continue;if(t.sCount[a]<0)continue;let e=!1;for(let i=0,s=l.length;i=n)break;if(t.sCount[s]=a){t.line=n;break}const e=t.line;let o=!1;for(let a=0;a=t.line)throw new Error("block rule didn't increment state.line");break}if(!o)throw new Error("none of the block rules matched");t.tight=!r,t.isEmpty(t.line-1)&&(r=!0),s=t.line,s0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(l),this.tokens_meta.push(i),l},kn.prototype.scanDelims=function(t,e){const n=this.posMax,l=this.src.charCodeAt(t),i=t>0?this.src.charCodeAt(t-1):32;let a=t;while(a0)return!1;const n=t.pos,l=t.posMax;if(n+3>l)return!1;if(58!==t.src.charCodeAt(n))return!1;if(47!==t.src.charCodeAt(n+1))return!1;if(47!==t.src.charCodeAt(n+2))return!1;const i=t.pending.match(In);if(!i)return!1;const a=i[1],s=t.md.linkify.matchAtStart(t.src.slice(n-a.length));if(!s)return!1;let r=s.url;if(r.length<=a.length)return!1;r=r.replace(/\*+$/,"");const o=t.md.normalizeLink(r);if(!t.md.validateLink(o))return!1;if(!e){t.pending=t.pending.slice(0,-a.length);const e=t.push("link_open","a",1);e.attrs=[["href",o]],e.markup="linkify",e.info="auto";const n=t.push("text","",0);n.content=t.md.normalizeLinkText(r);const l=t.push("link_close","a",-1);l.markup="linkify",l.info="auto"}return t.pos+=r.length-a.length,!0}function fn(t,e){let n=t.pos;if(10!==t.src.charCodeAt(n))return!1;const l=t.pending.length-1,i=t.posMax;if(!e)if(l>=0&&32===t.pending.charCodeAt(l))if(l>=1&&32===t.pending.charCodeAt(l-1)){let e=l-1;while(e>=1&&32===t.pending.charCodeAt(e-1))e--;t.pending=t.pending.slice(0,e),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);n++;while(n=l)return!1;let i=t.src.charCodeAt(n);if(10===i){e||t.push("hardbreak","br",0),n++;while(n=55296&&i<=56319&&n+1=56320&&e<=57343&&(a+=t.src[n+1],n++)}const s="\\"+a;if(!e){const e=t.push("text_special","",0);i<256&&0!==Ln[i]?e.content=a:e.content=s,e.markup=s,e.info="escape"}return t.pos=n+1,!0}function xn(t,e){let n=t.pos;const l=t.src.charCodeAt(n);if(96!==l)return!1;const i=n;n++;const a=t.posMax;while(n?@[]^_`{|}~-".split("").forEach((function(t){Ln[t.charCodeAt(0)]=1}));var _n={tokenize:zn,postProcess:On};function jn(t,e){const n=t.pos,l=t.src.charCodeAt(n);if(e)return!1;if(95!==l&&42!==l)return!1;const i=t.scanDelims(t.pos,42===l);for(let a=0;a=0;l--){const n=e[l];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const i=e[n.end],a=l>0&&e[l-1].end===n.end+1&&e[l-1].marker===n.marker&&e[l-1].token===n.token-1&&e[n.end+1].token===i.token+1,s=String.fromCharCode(n.marker),r=t.tokens[n.token];r.type=a?"strong_open":"em_open",r.tag=a?"strong":"em",r.nesting=1,r.markup=a?s+s:s,r.content="";const o=t.tokens[i.token];o.type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?s+s:s,o.content="",a&&(t.tokens[e[l-1].token].content="",t.tokens[e[n.end+1].token].content="",l--)}}function Pn(t){const e=t.tokens_meta,n=t.tokens_meta.length;Kn(t,t.delimiters);for(let l=0;l=u)return!1;if(o=U,i=t.md.helpers.parseLinkDestination(t.src,U,t.posMax),i.ok){for(s=t.md.normalizeLink(i.str),t.md.validateLink(s)?U=i.pos:s="",o=U;U=u||41!==t.src.charCodeAt(U))&&(c=!0),U++}if(c){if("undefined"===typeof t.env.references)return!1;if(U=0?l=t.src.slice(o,U++):U=m+1):U=m+1,l||(l=t.src.slice(h,m)),a=t.env.references[oe(l)],!a)return t.pos=d,!1;s=a.href,r=a.title}if(!e){t.pos=h,t.posMax=m;const e=t.push("link_open","a",1),n=[["href",s]];e.attrs=n,r&&n.push(["title",r]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=U,t.posMax=u,!0}function qn(t,e){let n,l,i,a,s,r,o,c,d="";const u=t.pos,h=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;const m=t.pos+2,U=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(U<0)return!1;if(a=U+1,a=h)return!1;for(c=a,r=t.md.helpers.parseLinkDestination(t.src,a,t.posMax),r.ok&&(d=t.md.normalizeLink(r.str),t.md.validateLink(d)?a=r.pos:d=""),c=a;a=h||41!==t.src.charCodeAt(a))return t.pos=u,!1;a++}else{if("undefined"===typeof t.env.references)return!1;if(a=0?i=t.src.slice(c,a++):a=U+1):a=U+1,i||(i=t.src.slice(m,U)),s=t.env.references[oe(i)],!s)return t.pos=u,!1;d=s.href,o=s.title}if(!e){l=t.src.slice(m,U);const e=[];t.md.inline.parse(l,t.md,t.env,e);const n=t.push("image","img",0),i=[["src",d],["alt",""]];n.attrs=i,n.children=e,n.content=l,o&&i.push(["title",o])}return t.pos=a,t.posMax=h,!0}const $n=/^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,tl=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;function el(t,e){let n=t.pos;if(60!==t.src.charCodeAt(n))return!1;const l=t.pos,i=t.posMax;for(;;){if(++n>=i)return!1;const e=t.src.charCodeAt(n);if(60===e)return!1;if(62===e)break}const a=t.src.slice(l+1,n);if(tl.test(a)){const n=t.md.normalizeLink(a);if(!t.md.validateLink(n))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",n]],e.markup="autolink",e.info="auto";const l=t.push("text","",0);l.content=t.md.normalizeLinkText(a);const i=t.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return t.pos+=a.length+2,!0}if($n.test(a)){const n=t.md.normalizeLink("mailto:"+a);if(!t.md.validateLink(n))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",n]],e.markup="autolink",e.info="auto";const l=t.push("text","",0);l.content=t.md.normalizeLinkText(a);const i=t.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return t.pos+=a.length+2,!0}return!1}function nl(t){return/^\s]/i.test(t)}function ll(t){return/^<\/a\s*>/i.test(t)}function il(t){const e=32|t;return e>=97&&e<=122}function al(t,e){if(!t.md.options.html)return!1;const n=t.posMax,l=t.pos;if(60!==t.src.charCodeAt(l)||l+2>=n)return!1;const i=t.src.charCodeAt(l+1);if(33!==i&&63!==i&&47!==i&&!il(i))return!1;const a=t.src.slice(l).match(Vn);if(!a)return!1;if(!e){const e=t.push("html_inline","",0);e.content=a[0],nl(e.content)&&t.linkLevel++,ll(e.content)&&t.linkLevel--}return t.pos+=a[0].length,!0}const sl=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,rl=/^&([a-z][a-z0-9]{1,31});/i;function ol(t,e){const n=t.pos,l=t.posMax;if(38!==t.src.charCodeAt(n))return!1;if(n+1>=l)return!1;const i=t.src.charCodeAt(n+1);if(35===i){const l=t.src.slice(n).match(sl);if(l){if(!e){const e="x"===l[1][0].toLowerCase()?parseInt(l[1].slice(1),16):parseInt(l[1],10),n=t.push("text_special","",0);n.content=xt(e)?zt(e):zt(65533),n.markup=l[0],n.info="entity"}return t.pos+=l[0].length,!0}}else{const l=t.src.slice(n).match(rl);if(l){const n=Gt(l[0]);if(n!==l[0]){if(!e){const e=t.push("text_special","",0);e.content=n,e.markup=l[0],e.info="entity"}return t.pos+=l[0].length,!0}}}return!1}function cl(t){const e={},n=t.length;if(!n)return;let l=0,i=-2;const a=[];for(let s=0;sr;o-=a[o]+1){const e=t[o];if(e.marker===n.marker&&(e.open&&e.end<0)){let l=!1;if((e.close||n.open)&&(e.length+n.length)%3===0&&(e.length%3===0&&n.length%3===0||(l=!0)),!l){const l=o>0&&!t[o-1].open?a[o-1]+1:0;a[s]=s-o+l,a[o]=l,n.open=!1,e.end=s,e.close=!1,c=-1,i=-2;break}}}-1!==c&&(e[n.marker][(n.open?3:0)+(n.length||0)%3]=c)}}function dl(t){const e=t.tokens_meta,n=t.tokens_meta.length;cl(t.delimiters);for(let l=0;l0&&l++,"text"===i[e].type&&e+1=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;s||t.pos++,a[e]=t.pos},Ul.prototype.tokenize=function(t){const e=this.ruler.getRules(""),n=e.length,l=t.posMax,i=t.md.options.maxNesting;while(t.pos=t.pos)throw new Error("inline rule didn't increment state.pos");break}if(s){if(t.pos>=l)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},Ul.prototype.parse=function(t,e,n,l){const i=new this.State(t,e,n,l);this.tokenize(i);const a=this.ruler2.getRules(""),s=a.length;for(let r=0;r|$))",e.tpl_email_fuzzy="(^|"+n+'|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}function bl(t){const e=Array.prototype.slice.call(arguments,1);return e.forEach((function(e){e&&Object.keys(e).forEach((function(n){t[n]=e[n]}))})),t}function Zl(t){return Object.prototype.toString.call(t)}function Nl(t){return"[object String]"===Zl(t)}function Rl(t){return"[object Object]"===Zl(t)}function Sl(t){return"[object RegExp]"===Zl(t)}function Wl(t){return"[object Function]"===Zl(t)}function Vl(t){return t.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}const Ql={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function yl(t){return Object.keys(t||{}).reduce((function(t,e){return t||Ql.hasOwnProperty(e)}),!1)}const Tl={"http:":{validate:function(t,e,n){const l=t.slice(e);return n.re.http||(n.re.http=new RegExp("^\\/\\/"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,"i")),n.re.http.test(l)?l.match(n.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(t,e,n){const l=t.slice(e);return n.re.no_http||(n.re.no_http=new RegExp("^"+n.re.src_auth+"(?:localhost|(?:(?:"+n.re.src_domain+")\\.)+"+n.re.src_domain_root+")"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,"i")),n.re.no_http.test(l)?e>=3&&":"===t[e-3]||e>=3&&"/"===t[e-3]?0:l.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,n){const l=t.slice(e);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(l)?l.match(n.re.mailto)[0].length:0}}},Ml="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",gl="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function El(t){t.__index__=-1,t.__text_cache__=""}function Gl(t){return function(e,n){const l=e.slice(n);return t.test(l)?l.match(t)[0].length:0}}function Bl(){return function(t,e){e.normalize(t)}}function Jl(t){const e=t.re=Fl(t.__opts__),n=t.__tlds__.slice();function l(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||n.push(Ml),n.push(e.src_xn),e.src_tlds=n.join("|"),e.email_fuzzy=RegExp(l(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(l(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(l(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(l(e.tpl_host_fuzzy_test),"i");const i=[];function a(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach((function(e){const n=t.__schemas__[e];if(null===n)return;const l={validate:null,link:null};if(t.__compiled__[e]=l,Rl(n))return Sl(n.validate)?l.validate=Gl(n.validate):Wl(n.validate)?l.validate=n.validate:a(e,n),void(Wl(n.normalize)?l.normalize=n.normalize:n.normalize?a(e,n):l.normalize=Bl());Nl(n)?i.push(e):a(e,n)})),i.forEach((function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)})),t.__compiled__[""]={validate:null,normalize:Bl()};const s=Object.keys(t.__compiled__).filter((function(e){return e.length>0&&t.__compiled__[e]})).map(Vl).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+s+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+s+")","ig"),t.re.schema_at_start=RegExp("^"+t.re.schema_search.source,"i"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),El(t)}function kl(t,e){const n=t.__index__,l=t.__last_index__,i=t.__text_cache__.slice(n,l);this.schema=t.__schema__.toLowerCase(),this.index=n+e,this.lastIndex=l+e,this.raw=i,this.text=i,this.url=i}function Yl(t,e){const n=new kl(t,e);return t.__compiled__[n.schema].normalize(n,t),n}function Cl(t,e){if(!(this instanceof Cl))return new Cl(t,e);e||yl(t)&&(e=t,t={}),this.__opts__=bl({},Ql,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=bl({},Tl,t),this.__compiled__={},this.__tlds__=gl,this.__tlds_replaced__=!1,this.re={},Jl(this)}Cl.prototype.add=function(t,e){return this.__schemas__[t]=e,Jl(this),this},Cl.prototype.set=function(t){return this.__opts__=bl(this.__opts__,t),this},Cl.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;let e,n,l,i,a,s,r,o,c;if(this.re.schema_test.test(t)){r=this.re.schema_search,r.lastIndex=0;while(null!==(e=r.exec(t)))if(i=this.testSchemaAt(t,e[2],r.lastIndex),i){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+i;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(o=t.search(this.re.host_fuzzy_test),o>=0&&(this.__index__<0||o=0&&null!==(l=t.match(this.re.email_fuzzy))&&(a=l.index+l[1].length,s=l.index+l[0].length,(this.__index__<0||athis.__last_index__)&&(this.__schema__="mailto:",this.__index__=a,this.__last_index__=s))),this.__index__>=0},Cl.prototype.pretest=function(t){return this.re.pretest.test(t)},Cl.prototype.testSchemaAt=function(t,e,n){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,n,this):0},Cl.prototype.match=function(t){const e=[];let n=0;this.__index__>=0&&this.__text_cache__===t&&(e.push(Yl(this,n)),n=this.__last_index__);let l=n?t.slice(n):t;while(this.test(l))e.push(Yl(this,n)),l=l.slice(this.__last_index__),n+=this.__last_index__;return e.length?e:null},Cl.prototype.matchAtStart=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return null;const e=this.re.schema_at_start.exec(t);if(!e)return null;const n=this.testSchemaAt(t,e[2],e[0].length);return n?(this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+n,Yl(this,0)):null},Cl.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter((function(t,e,n){return t!==n[e-1]})).reverse(),Jl(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,Jl(this),this)},Cl.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},Cl.prototype.onCompile=function(){};var Xl=Cl;const Il=2147483647,Dl=36,fl=1,Ll=26,wl=38,xl=700,zl=72,vl=128,Ol="-",_l=/^xn--/,jl=/[^\0-\x7F]/,Kl=/[\x2E\u3002\uFF0E\uFF61]/g,Pl={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Al=Dl-fl,Hl=Math.floor,ql=String.fromCharCode;function $l(t){throw new RangeError(Pl[t])}function ti(t,e){const n=[];let l=t.length;while(l--)n[l]=e(t[l]);return n}function ei(t,e){const n=t.split("@");let l="";n.length>1&&(l=n[0]+"@",t=n[1]),t=t.replace(Kl,".");const i=t.split("."),a=ti(i,e).join(".");return l+a}function ni(t){const e=[];let n=0;const l=t.length;while(n=55296&&i<=56319&&nString.fromCodePoint(...t),ii=function(t){return t>=48&&t<58?t-48+26:t>=65&&t<91?t-65:t>=97&&t<123?t-97:Dl},ai=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},si=function(t,e,n){let l=0;for(t=n?Hl(t/xl):t>>1,t+=Hl(t/e);t>Al*Ll>>1;l+=Dl)t=Hl(t/Al);return Hl(l+(Al+1)*t/(t+wl))},ri=function(t){const e=[],n=t.length;let l=0,i=vl,a=zl,s=t.lastIndexOf(Ol);s<0&&(s=0);for(let r=0;r=128&&$l("not-basic"),e.push(t.charCodeAt(r));for(let r=s>0?s+1:0;r=n&&$l("invalid-input");const s=ii(t.charCodeAt(r++));s>=Dl&&$l("invalid-input"),s>Hl((Il-l)/e)&&$l("overflow"),l+=s*e;const o=i<=a?fl:i>=a+Ll?Ll:i-a;if(sHl(Il/c)&&$l("overflow"),e*=c}const o=e.length+1;a=si(l-s,o,0==s),Hl(l/o)>Il-i&&$l("overflow"),i+=Hl(l/o),l%=o,e.splice(l++,0,i)}return String.fromCodePoint(...e)},oi=function(t){const e=[];t=ni(t);const n=t.length;let l=vl,i=0,a=zl;for(const o of t)o<128&&e.push(ql(o));const s=e.length;let r=s;s&&e.push(Ol);while(r=l&&eHl((Il-i)/o)&&$l("overflow"),i+=(n-l)*o,l=n;for(const c of t)if(cIl&&$l("overflow"),c===l){let t=i;for(let n=Dl;;n+=Dl){const l=n<=a?fl:n>=a+Ll?Ll:n-a;if(t=0))try{e.hostname=hi.toASCII(e.hostname)}catch(n){}return w(x(e))}function Wi(t){const e=at(t,!0);if(e.hostname&&(!e.protocol||Ri.indexOf(e.protocol)>=0))try{e.hostname=hi.toUnicode(e.hostname)}catch(n){}return I(x(e),I.defaultChars+"%")}function Vi(t,e){if(!(this instanceof Vi))return new Vi(t,e);e||It(t)||(e=t||{},t="default"),this.inline=new pl,this.block=new Jn,this.core=new je,this.renderer=new pe,this.linkify=new Xl,this.validateLink=Ni,this.normalizeLink=Si,this.normalizeLinkText=Wi,this.utils=a,this.helpers=Lt({},s),this.options={},this.configure(t),e&&this.set(e)}Vi.prototype.set=function(t){return Lt(this.options,t),this},Vi.prototype.configure=function(t){const e=this;if(It(t)){const e=t;if(t=Fi[e],!t)throw new Error('Wrong `markdown-it` preset "'+e+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach((function(n){t.components[n].rules&&e[n].ruler.enableOnly(t.components[n].rules),t.components[n].rules2&&e[n].ruler2.enableOnly(t.components[n].rules2)})),this},Vi.prototype.enable=function(t,e){let n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.enable(t,!0))}),this),n=n.concat(this.inline.ruler2.enable(t,!0));const l=t.filter((function(t){return n.indexOf(t)<0}));if(l.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+l);return this},Vi.prototype.disable=function(t,e){let n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.disable(t,!0))}),this),n=n.concat(this.inline.ruler2.disable(t,!0));const l=t.filter((function(t){return n.indexOf(t)<0}));if(l.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+l);return this},Vi.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},Vi.prototype.parse=function(t,e){if("string"!==typeof t)throw new Error("Input data should be a String");const n=new this.core.State(t,this,e);return this.core.process(n),n.tokens},Vi.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},Vi.prototype.parseInline=function(t,e){const n=new this.core.State(t,this,e);return n.inlineMode=!0,this.core.process(n),n.tokens},Vi.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)};var Qi=Vi,yi=n(1995),Ti=n.n(yi),Mi=n(5130);const gi={class:"attachment-info"},Ei={class:"attachment-type"},Gi={key:0,class:"icon"},Bi={key:1,class:"icon"},Ji={key:2,class:"icon"},ki={key:3,class:"icon"},Yi={key:4,class:"icon"},Ci={class:"attachment-details"},Xi={class:"attachment-name"},Ii={class:"attachment-meta"},Di={class:"coin-tag"},fi={class:"attachment-actions"},Li=["download"],wi={key:0,class:"pdf-preview-modal"},xi={class:"pdf-preview-header"},zi={class:"pdf-preview-container"},vi={key:0,class:"pdf-viewer"},Oi={key:1,class:"preview-error"};function _i(t,e,n,l,i,a){const s=(0,r.g2)("vue-pdf-embed");return(0,r.uX)(),(0,r.CE)("div",{class:(0,o.C4)(["attachment-card",{locked:a.isLocked,premium:a.hasCoin}])},[(0,r.Lk)("div",gi,[(0,r.Lk)("div",Ei,["pdf"===n.type?((0,r.uX)(),(0,r.CE)("span",Gi," 📄 ")):"doc"===n.type||"docx"===n.type?((0,r.uX)(),(0,r.CE)("span",Bi," 📝 ")):"xls"===n.type||"xlsx"===n.type?((0,r.uX)(),(0,r.CE)("span",Ji," 📊 ")):"zip"===n.type||"rar"===n.type||"7z"===n.type?((0,r.uX)(),(0,r.CE)("span",ki," 📦 ")):((0,r.uX)(),(0,r.CE)("span",Yi," 📄 "))]),(0,r.Lk)("div",Ci,[(0,r.Lk)("div",Xi,(0,o.v_)(a.displayFilename),1),(0,r.Lk)("div",Ii,[(0,r.eW)((0,o.v_)(n.type.toUpperCase())+" · "+(0,o.v_)(n.size)+" MB ",1),a.hasCoin?((0,r.uX)(),(0,r.CE)(r.FK,{key:0},[e[3]||(e[3]=(0,r.eW)("· ")),(0,r.Lk)("span",Di,(0,o.v_)(n.coin)+" 东币",1)],64)):a.isLocked?((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[e[4]||(e[4]=(0,r.eW)(" · ")),e[5]||(e[5]=(0,r.Lk)("span",{class:"lock-tag"},"🔒 加密",-1))],64)):((0,r.uX)(),(0,r.CE)(r.FK,{key:2},[(0,r.eW)("· 免费")],64))])])]),(0,r.Lk)("div",fi,[a.showPreview?((0,r.uX)(),(0,r.CE)("button",{key:0,onClick:e[0]||(e[0]=(...t)=>a.openPreview&&a.openPreview(...t)),class:"preview-button"},"预览")):(0,r.Q3)("",!0),(0,r.Lk)("a",{href:"javascript:void(0)",download:a.displayFilename,class:(0,o.C4)(["download-button",{disabled:a.isLocked&&!i.token}]),onClick:e[1]||(e[1]=(0,Mi.D$)(((...t)=>a.handleDownload&&a.handleDownload(...t)),["prevent"]))}," 下载 ",10,Li)]),i.isPdfPreviewOpen?((0,r.uX)(),(0,r.CE)("div",wi,[(0,r.Lk)("div",xi,[(0,r.Lk)("h3",null,(0,o.v_)(a.displayFilename),1),(0,r.Lk)("button",{onClick:e[2]||(e[2]=(...t)=>a.closePdfPreview&&a.closePdfPreview(...t)),class:"close-button"},"✕")]),(0,r.Lk)("div",zi,[i.pdfSrc?((0,r.uX)(),(0,r.CE)("div",vi,[(0,r.bF)(s,{source:i.pdfSrc,width:i.pdfWidth,height:i.pdfHeight},null,8,["source","width","height"])])):((0,r.uX)(),(0,r.CE)("div",Oi,"无法预览此文件"))])])):(0,r.Q3)("",!0)],2)}n(9314),n(1148),n(531),n(3579),n(1689),n(7642),n(8004),n(3853),n(5876),n(2475),n(5024),n(1698),n(4979),n(1678);var ji=n(144),Ki=Object.defineProperty,Pi=t=>{throw TypeError(t)},Ai=(t,e,n)=>e in t?Ki(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Hi=(t,e,n)=>Ai(t,"symbol"!=typeof e?e+"":e,n),qi=(t,e,n)=>e.has(t)||Pi("Cannot "+n),$i=(t,e,n)=>(qi(t,e,"read from private field"),n?n.call(t):e.get(t)),ta=(t,e,n)=>e.has(t)?Pi("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),ea=(t,e,n,l)=>(qi(t,e,"write to private field"),l?l.call(t,n):e.set(t,n),n),na=(t,e,n)=>(qi(t,e,"access private method"),n),la=(t,e,n,l)=>({set _(l){ea(t,e,l,n)},get _(){return $i(t,e,l)}}),ia={9306:(t,e,n)=>{var l=n(4901),i=n(6823),a=TypeError;t.exports=function(t){if(l(t))return t;throw new a(i(t)+" is not a function")}},3506:(t,e,n)=>{var l=n(3925),i=String,a=TypeError;t.exports=function(t){if(l(t))return t;throw new a("Can't set "+i(t)+" as a prototype")}},7080:(t,e,n)=>{var l=n(4402).has;t.exports=function(t){return l(t),t}},679:(t,e,n)=>{var l=n(1625),i=TypeError;t.exports=function(t,e){if(l(e,t))return t;throw new i("Incorrect invocation")}},8551:(t,e,n)=>{var l=n(34),i=String,a=TypeError;t.exports=function(t){if(l(t))return t;throw new a(i(t)+" is not an object")}},7811:t=>{t.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(t,e,n)=>{var l=n(4576),i=n(6706),a=n(2195),s=l.ArrayBuffer,r=l.TypeError;t.exports=s&&i(s.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!==a(t))throw new r("ArrayBuffer expected");return t.byteLength}},3238:(t,e,n)=>{var l=n(4576),i=n(7476),a=n(7394),s=l.ArrayBuffer,r=s&&s.prototype,o=r&&i(r.slice);t.exports=function(t){if(0!==a(t)||!o)return!1;try{return o(t,0,0),!1}catch{return!0}}},5169:(t,e,n)=>{var l=n(3238),i=TypeError;t.exports=function(t){if(l(t))throw new i("ArrayBuffer is detached");return t}},5636:(t,e,n)=>{var l=n(4576),i=n(9504),a=n(6706),s=n(7696),r=n(5169),o=n(7394),c=n(4483),d=n(1548),u=l.structuredClone,h=l.ArrayBuffer,m=l.DataView,U=Math.min,p=h.prototype,F=m.prototype,b=i(p.slice),Z=a(p,"resizable","get"),N=a(p,"maxByteLength","get"),R=i(F.getInt8),S=i(F.setInt8);t.exports=(d||c)&&function(t,e,n){var l,i=o(t),a=void 0===e?i:s(e),p=!Z||!Z(t);if(r(t),d&&(t=u(t,{transfer:[t]}),i===a&&(n||p)))return t;if(i>=a&&(!n||p))l=b(t,0,a);else{var F=n&&!p&&N?{maxByteLength:N(t)}:void 0;l=new h(a,F);for(var W=new m(t),V=new m(l),Q=U(a,i),y=0;y{var l,i,a,s=n(7811),r=n(3724),o=n(4576),c=n(4901),d=n(34),u=n(9297),h=n(6955),m=n(6823),U=n(6699),p=n(6840),F=n(2106),b=n(1625),Z=n(2787),N=n(2967),R=n(8227),S=n(3392),W=n(1181),V=W.enforce,Q=W.get,y=o.Int8Array,T=y&&y.prototype,M=o.Uint8ClampedArray,g=M&&M.prototype,E=y&&Z(y),G=T&&Z(T),B=Object.prototype,J=o.TypeError,k=R("toStringTag"),Y=S("TYPED_ARRAY_TAG"),C="TypedArrayConstructor",X=s&&!!N&&"Opera"!==h(o.opera),I=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},f={BigInt64Array:8,BigUint64Array:8},L=function(t){if(!d(t))return!1;var e=h(t);return"DataView"===e||u(D,e)||u(f,e)},w=function(t){var e=Z(t);if(d(e)){var n=Q(e);return n&&u(n,C)?n[C]:w(e)}},x=function(t){if(!d(t))return!1;var e=h(t);return u(D,e)||u(f,e)},z=function(t){if(x(t))return t;throw new J("Target is not a typed array")},v=function(t){if(c(t)&&(!N||b(E,t)))return t;throw new J(m(t)+" is not a typed array constructor")},O=function(t,e,n,l){if(r){if(n)for(var i in D){var a=o[i];if(a&&u(a.prototype,t))try{delete a.prototype[t]}catch{try{a.prototype[t]=e}catch{}}}(!G[t]||n)&&p(G,t,n?e:X&&T[t]||e,l)}},_=function(t,e,n){var l,i;if(r){if(N){if(n)for(l in D)if(i=o[l],i&&u(i,t))try{delete i[t]}catch{}if(E[t]&&!n)return;try{return p(E,t,n?e:X&&E[t]||e)}catch{}}for(l in D)i=o[l],i&&(!i[t]||n)&&p(i,t,e)}};for(l in D)i=o[l],a=i&&i.prototype,a?V(a)[C]=i:X=!1;for(l in f)i=o[l],a=i&&i.prototype,a&&(V(a)[C]=i);if((!X||!c(E)||E===Function.prototype)&&(E=function(){throw new J("Incorrect invocation")},X))for(l in D)o[l]&&N(o[l],E);if((!X||!G||G===B)&&(G=E.prototype,X))for(l in D)o[l]&&N(o[l].prototype,G);if(X&&Z(g)!==G&&N(g,G),r&&!u(G,k))for(l in I=!0,F(G,k,{configurable:!0,get:function(){return d(this)?this[Y]:void 0}}),D)o[l]&&U(o[l],Y,l);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:X,TYPED_ARRAY_TAG:I&&Y,aTypedArray:z,aTypedArrayConstructor:v,exportTypedArrayMethod:O,exportTypedArrayStaticMethod:_,getTypedArrayConstructor:w,isView:L,isTypedArray:x,TypedArray:E,TypedArrayPrototype:G}},5370:(t,e,n)=>{var l=n(6198);t.exports=function(t,e,n){for(var i=0,a=arguments.length>2?n:l(e),s=new t(a);a>i;)s[i]=e[i++];return s}},9617:(t,e,n)=>{var l=n(5397),i=n(5610),a=n(6198),s=function(t){return function(e,n,s){var r=l(e),o=a(r);if(0===o)return!t&&-1;var c,d=i(s,o);if(t&&n!==n){for(;o>d;)if(c=r[d++],c!==c)return!0}else for(;o>d;d++)if((t||d in r)&&r[d]===n)return t||d||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},4527:(t,e,n)=>{var l=n(3724),i=n(4376),a=TypeError,s=Object.getOwnPropertyDescriptor,r=l&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=r?function(t,e){if(i(t)&&!s(t,"length").writable)throw new a("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},7680:(t,e,n)=>{var l=n(9504);t.exports=l([].slice)},7628:(t,e,n)=>{var l=n(6198);t.exports=function(t,e){for(var n=l(t),i=new e(n),a=0;a{var l=n(6198),i=n(1291),a=RangeError;t.exports=function(t,e,n,s){var r=l(t),o=i(n),c=o<0?r+o:o;if(c>=r||c<0)throw new a("Incorrect index");for(var d=new e(r),u=0;u{var l=n(8551),i=n(9539);t.exports=function(t,e,n,a){try{return a?e(l(n)[0],n[1]):e(n)}catch(s){i(t,"throw",s)}}},2195:(t,e,n)=>{var l=n(9504),i=l({}.toString),a=l("".slice);t.exports=function(t){return a(i(t),8,-1)}},6955:(t,e,n)=>{var l=n(2140),i=n(4901),a=n(2195),s=n(8227),r=s("toStringTag"),o=Object,c="Arguments"===a(function(){return arguments}()),d=function(t,e){try{return t[e]}catch{}};t.exports=l?a:function(t){var e,n,l;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=d(e=o(t),r))?n:c?a(e):"Object"===(l=a(e))&&i(e.callee)?"Arguments":l}},7740:(t,e,n)=>{var l=n(9297),i=n(5031),a=n(7347),s=n(4913);t.exports=function(t,e,n){for(var r=i(e),o=s.f,c=a.f,d=0;d{var l=n(9039);t.exports=!l((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},2529:t=>{t.exports=function(t,e){return{value:t,done:e}}},6699:(t,e,n)=>{var l=n(3724),i=n(4913),a=n(6980);t.exports=l?function(t,e,n){return i.f(t,e,a(1,n))}:function(t,e,n){return t[e]=n,t}},6980:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},4659:(t,e,n)=>{var l=n(3724),i=n(4913),a=n(6980);t.exports=function(t,e,n){l?i.f(t,e,a(0,n)):t[e]=n}},2106:(t,e,n)=>{var l=n(283),i=n(4913);t.exports=function(t,e,n){return n.get&&l(n.get,e,{getter:!0}),n.set&&l(n.set,e,{setter:!0}),i.f(t,e,n)}},6840:(t,e,n)=>{var l=n(4901),i=n(4913),a=n(283),s=n(9433);t.exports=function(t,e,n,r){r||(r={});var o=r.enumerable,c=void 0!==r.name?r.name:e;if(l(n)&&a(n,c,r),r.global)o?t[e]=n:s(e,n);else{try{r.unsafe?t[e]&&(o=!0):delete t[e]}catch{}o?t[e]=n:i.f(t,e,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return t}},6279:(t,e,n)=>{var l=n(6840);t.exports=function(t,e,n){for(var i in e)l(t,i,e[i],n);return t}},9433:(t,e,n)=>{var l=n(4576),i=Object.defineProperty;t.exports=function(t,e){try{i(l,t,{value:e,configurable:!0,writable:!0})}catch{l[t]=e}return e}},3724:(t,e,n)=>{var l=n(9039);t.exports=!l((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4483:(t,e,n)=>{var l,i,a,s,r=n(4576),o=n(9429),c=n(1548),d=r.structuredClone,u=r.ArrayBuffer,h=r.MessageChannel,m=!1;if(c)m=function(t){d(t,{transfer:[t]})};else if(u)try{h||(l=o("worker_threads"),l&&(h=l.MessageChannel)),h&&(i=new h,a=new u(2),s=function(t){i.port1.postMessage(null,[t])},2===a.byteLength&&(s(a),0===a.byteLength&&(m=s)))}catch{}t.exports=m},4055:(t,e,n)=>{var l=n(4576),i=n(34),a=l.document,s=i(a)&&i(a.createElement);t.exports=function(t){return s?a.createElement(t):{}}},6837:t=>{var e=TypeError,n=9007199254740991;t.exports=function(t){if(t>n)throw e("Maximum allowed index exceeded");return t}},5002:t=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8727:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(t,e,n)=>{var l=n(4215);t.exports="NODE"===l},2839:(t,e,n)=>{var l=n(4576),i=l.navigator,a=i&&i.userAgent;t.exports=a?String(a):""},9519:(t,e,n)=>{var l,i,a=n(4576),s=n(2839),r=a.process,o=a.Deno,c=r&&r.versions||o&&o.version,d=c&&c.v8;d&&(l=d.split("."),i=l[0]>0&&l[0]<4?1:+(l[0]+l[1])),!i&&s&&(l=s.match(/Edge\/(\d+)/),(!l||l[1]>=74)&&(l=s.match(/Chrome\/(\d+)/),l&&(i=+l[1]))),t.exports=i},4215:(t,e,n)=>{var l=n(4576),i=n(2839),a=n(2195),s=function(t){return i.slice(0,t.length)===t};t.exports=function(){return s("Bun/")?"BUN":s("Cloudflare-Workers")?"CLOUDFLARE":s("Deno/")?"DENO":s("Node.js/")?"NODE":l.Bun&&"string"==typeof Bun.version?"BUN":l.Deno&&"object"==typeof Deno.version?"DENO":"process"===a(l.process)?"NODE":l.window&&l.document?"BROWSER":"REST"}()},8574:(t,e,n)=>{var l=n(9504),i=Error,a=l("".replace),s=function(t){return String(new i(t).stack)}("zxcasd"),r=/\n\s*at [^:]*:[^\n]*/,o=r.test(s);t.exports=function(t,e){if(o&&"string"==typeof t&&!i.prepareStackTrace)for(;e--;)t=a(t,r,"");return t}},6518:(t,e,n)=>{var l=n(4576),i=n(7347).f,a=n(6699),s=n(6840),r=n(9433),o=n(7740),c=n(2796);t.exports=function(t,e){var n,d,u,h,m,U,p=t.target,F=t.global,b=t.stat;if(d=F?l:b?l[p]||r(p,{}):l[p]&&l[p].prototype,d)for(u in e){if(m=e[u],t.dontCallGetSet?(U=i(d,u),h=U&&U.value):h=d[u],n=c(F?u:p+(b?".":"#")+u,t.forced),!n&&void 0!==h){if(typeof m==typeof h)continue;o(m,h)}(t.sham||h&&h.sham)&&a(m,"sham",!0),s(d,u,m,t)}}},9039:t=>{t.exports=function(t){try{return!!t()}catch{return!0}}},8745:(t,e,n)=>{var l=n(616),i=Function.prototype,a=i.apply,s=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(l?s.bind(a):function(){return s.apply(a,arguments)})},6080:(t,e,n)=>{var l=n(7476),i=n(9306),a=n(616),s=l(l.bind);t.exports=function(t,e){return i(t),void 0===e?t:a?s(t,e):function(){return t.apply(e,arguments)}}},616:(t,e,n)=>{var l=n(9039);t.exports=!l((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:(t,e,n)=>{var l=n(616),i=Function.prototype.call;t.exports=l?i.bind(i):function(){return i.apply(i,arguments)}},350:(t,e,n)=>{var l=n(3724),i=n(9297),a=Function.prototype,s=l&&Object.getOwnPropertyDescriptor,r=i(a,"name"),o=r&&"something"===function(){}.name,c=r&&(!l||l&&s(a,"name").configurable);t.exports={EXISTS:r,PROPER:o,CONFIGURABLE:c}},6706:(t,e,n)=>{var l=n(9504),i=n(9306);t.exports=function(t,e,n){try{return l(i(Object.getOwnPropertyDescriptor(t,e)[n]))}catch{}}},7476:(t,e,n)=>{var l=n(2195),i=n(9504);t.exports=function(t){if("Function"===l(t))return i(t)}},9504:(t,e,n)=>{var l=n(616),i=Function.prototype,a=i.call,s=l&&i.bind.bind(a,a);t.exports=l?s:function(t){return function(){return a.apply(t,arguments)}}},9429:(t,e,n)=>{var l=n(4576),i=n(6193);t.exports=function(t){if(i){try{return l.process.getBuiltinModule(t)}catch{}try{return Function('return require("'+t+'")')()}catch{}}}},7751:(t,e,n)=>{var l=n(4576),i=n(4901),a=function(t){return i(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?a(l[t]):l[t]&&l[t][e]}},1767:t=>{t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},8646:(t,e,n)=>{var l=n(9565),i=n(8551),a=n(1767),s=n(851);t.exports=function(t,e){(!e||"string"!=typeof t)&&i(t);var n=s(t);return a(i(void 0!==n?l(n,t):t))}},851:(t,e,n)=>{var l=n(6955),i=n(5966),a=n(4117),s=n(6269),r=n(8227),o=r("iterator");t.exports=function(t){if(!a(t))return i(t,o)||i(t,"@@iterator")||s[l(t)]}},81:(t,e,n)=>{var l=n(9565),i=n(9306),a=n(8551),s=n(6823),r=n(851),o=TypeError;t.exports=function(t,e){var n=arguments.length<2?r(t):e;if(i(n))return a(l(n,t));throw new o(s(t)+" is not iterable")}},5966:(t,e,n)=>{var l=n(9306),i=n(4117);t.exports=function(t,e){var n=t[e];return i(n)?void 0:l(n)}},3789:(t,e,n)=>{var l=n(9306),i=n(8551),a=n(9565),s=n(1291),r=n(1767),o="Invalid size",c=RangeError,d=TypeError,u=Math.max,h=function(t,e){this.set=t,this.size=u(e,0),this.has=l(t.has),this.keys=l(t.keys)};h.prototype={getIterator:function(){return r(i(a(this.keys,this.set)))},includes:function(t){return a(this.has,this.set,t)}},t.exports=function(t){i(t);var e=+t.size;if(e!==e)throw new d(o);var n=s(e);if(n<0)throw new c(o);return new h(t,n)}},4576:function(t){var e=function(t){return t&&t.Math===Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof global&&global)||e("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(t,e,n)=>{var l=n(9504),i=n(8981),a=l({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return a(i(t),e)}},421:t=>{t.exports={}},397:(t,e,n)=>{var l=n(7751);t.exports=l("document","documentElement")},5917:(t,e,n)=>{var l=n(3724),i=n(9039),a=n(4055);t.exports=!l&&!i((function(){return 7!==Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},7055:(t,e,n)=>{var l=n(9504),i=n(9039),a=n(2195),s=Object,r=l("".split);t.exports=i((function(){return!s("z").propertyIsEnumerable(0)}))?function(t){return"String"===a(t)?r(t,""):s(t)}:s},3167:(t,e,n)=>{var l=n(4901),i=n(34),a=n(2967);t.exports=function(t,e,n){var s,r;return a&&l(s=e.constructor)&&s!==n&&i(r=s.prototype)&&r!==n.prototype&&a(t,r),t}},3706:(t,e,n)=>{var l=n(9504),i=n(4901),a=n(7629),s=l(Function.toString);i(a.inspectSource)||(a.inspectSource=function(t){return s(t)}),t.exports=a.inspectSource},1181:(t,e,n)=>{var l,i,a,s=n(8622),r=n(4576),o=n(34),c=n(6699),d=n(9297),u=n(7629),h=n(6119),m=n(421),U="Object already initialized",p=r.TypeError,F=r.WeakMap,b=function(t){return a(t)?i(t):l(t,{})},Z=function(t){return function(e){var n;if(!o(e)||(n=i(e)).type!==t)throw new p("Incompatible receiver, "+t+" required");return n}};if(s||u.state){var N=u.state||(u.state=new F);N.get=N.get,N.has=N.has,N.set=N.set,l=function(t,e){if(N.has(t))throw new p(U);return e.facade=t,N.set(t,e),e},i=function(t){return N.get(t)||{}},a=function(t){return N.has(t)}}else{var R=h("state");m[R]=!0,l=function(t,e){if(d(t,R))throw new p(U);return e.facade=t,c(t,R,e),e},i=function(t){return d(t,R)?t[R]:{}},a=function(t){return d(t,R)}}t.exports={set:l,get:i,has:a,enforce:b,getterFor:Z}},4209:(t,e,n)=>{var l=n(8227),i=n(6269),a=l("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||s[a]===t)}},4376:(t,e,n)=>{var l=n(2195);t.exports=Array.isArray||function(t){return"Array"===l(t)}},1108:(t,e,n)=>{var l=n(6955);t.exports=function(t){var e=l(t);return"BigInt64Array"===e||"BigUint64Array"===e}},4901:t=>{var e="object"==typeof document&&document.all;t.exports=typeof e>"u"&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},2796:(t,e,n)=>{var l=n(9039),i=n(4901),a=/#|\.prototype\./,s=function(t,e){var n=o[r(t)];return n===d||n!==c&&(i(e)?l(e):!!e)},r=s.normalize=function(t){return String(t).replace(a,".").toLowerCase()},o=s.data={},c=s.NATIVE="N",d=s.POLYFILL="P";t.exports=s},4117:t=>{t.exports=function(t){return null==t}},34:(t,e,n)=>{var l=n(4901);t.exports=function(t){return"object"==typeof t?null!==t:l(t)}},3925:(t,e,n)=>{var l=n(34);t.exports=function(t){return l(t)||null===t}},6395:t=>{t.exports=!1},757:(t,e,n)=>{var l=n(7751),i=n(4901),a=n(1625),s=n(7040),r=Object;t.exports=s?function(t){return"symbol"==typeof t}:function(t){var e=l("Symbol");return i(e)&&a(e.prototype,r(t))}},507:(t,e,n)=>{var l=n(9565);t.exports=function(t,e,n){for(var i,a,s=n?t:t.iterator,r=t.next;!(i=l(r,s)).done;)if(a=e(i.value),void 0!==a)return a}},2652:(t,e,n)=>{var l=n(6080),i=n(9565),a=n(8551),s=n(6823),r=n(4209),o=n(6198),c=n(1625),d=n(81),u=n(851),h=n(9539),m=TypeError,U=function(t,e){this.stopped=t,this.result=e},p=U.prototype;t.exports=function(t,e,n){var F,b,Z,N,R,S,W,V=n&&n.that,Q=!(!n||!n.AS_ENTRIES),y=!(!n||!n.IS_RECORD),T=!(!n||!n.IS_ITERATOR),M=!(!n||!n.INTERRUPTED),g=l(e,V),E=function(t){return F&&h(F,"normal",t),new U(!0,t)},G=function(t){return Q?(a(t),M?g(t[0],t[1],E):g(t[0],t[1])):M?g(t,E):g(t)};if(y)F=t.iterator;else if(T)F=t;else{if(b=u(t),!b)throw new m(s(t)+" is not iterable");if(r(b)){for(Z=0,N=o(t);N>Z;Z++)if(R=G(t[Z]),R&&c(p,R))return R;return new U(!1)}F=d(t,b)}for(S=y?t.next:F.next;!(W=i(S,F)).done;){try{R=G(W.value)}catch(B){h(F,"throw",B)}if("object"==typeof R&&R&&c(p,R))return R}return new U(!1)}},9539:(t,e,n)=>{var l=n(9565),i=n(8551),a=n(5966);t.exports=function(t,e,n){var s,r;i(t);try{if(s=a(t,"return"),!s){if("throw"===e)throw n;return n}s=l(s,t)}catch(o){r=!0,s=o}if("throw"===e)throw n;if(r)throw s;return i(s),n}},9462:(t,e,n)=>{var l=n(9565),i=n(2360),a=n(6699),s=n(6279),r=n(8227),o=n(1181),c=n(5966),d=n(7657).IteratorPrototype,u=n(2529),h=n(9539),m=r("toStringTag"),U="IteratorHelper",p="WrapForValidIterator",F=o.set,b=function(t){var e=o.getterFor(t?p:U);return s(i(d),{next:function(){var n=e(this);if(t)return n.nextHandler();try{var l=n.done?void 0:n.nextHandler();return u(l,n.done)}catch(i){throw n.done=!0,i}},return:function(){var n=e(this),i=n.iterator;if(n.done=!0,t){var a=c(i,"return");return a?l(a,i):u(void 0,!0)}if(n.inner)try{h(n.inner.iterator,"normal")}catch(s){return h(i,"throw",s)}return i&&h(i,"normal"),u(void 0,!0)}})},Z=b(!0),N=b(!1);a(N,m,"Iterator Helper"),t.exports=function(t,e){var n=function(n,l){l?(l.iterator=n.iterator,l.next=n.next):l=n,l.type=e?p:U,l.nextHandler=t,l.counter=0,l.done=!1,F(this,l)};return n.prototype=e?Z:N,n}},713:(t,e,n)=>{var l=n(9565),i=n(9306),a=n(8551),s=n(1767),r=n(9462),o=n(6319),c=r((function(){var t=this.iterator,e=a(l(this.next,t)),n=this.done=!!e.done;if(!n)return o(t,this.mapper,[e.value,this.counter++],!0)}));t.exports=function(t){return a(this),i(t),new c(s(this),{mapper:t})}},7657:(t,e,n)=>{var l,i,a,s=n(9039),r=n(4901),o=n(34),c=n(2360),d=n(2787),u=n(6840),h=n(8227),m=n(6395),U=h("iterator"),p=!1;[].keys&&(a=[].keys(),"next"in a?(i=d(d(a)),i!==Object.prototype&&(l=i)):p=!0);var F=!o(l)||s((function(){var t={};return l[U].call(t)!==t}));F?l={}:m&&(l=c(l)),r(l[U])||u(l,U,(function(){return this})),t.exports={IteratorPrototype:l,BUGGY_SAFARI_ITERATORS:p}},6269:t=>{t.exports={}},6198:(t,e,n)=>{var l=n(8014);t.exports=function(t){return l(t.length)}},283:(t,e,n)=>{var l=n(9504),i=n(9039),a=n(4901),s=n(9297),r=n(3724),o=n(350).CONFIGURABLE,c=n(3706),d=n(1181),u=d.enforce,h=d.get,m=String,U=Object.defineProperty,p=l("".slice),F=l("".replace),b=l([].join),Z=r&&!i((function(){return 8!==U((function(){}),"length",{value:8}).length})),N=String(String).split("String"),R=t.exports=function(t,e,n){"Symbol("===p(m(e),0,7)&&(e="["+F(m(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!s(t,"name")||o&&t.name!==e)&&(r?U(t,"name",{value:e,configurable:!0}):t.name=e),Z&&n&&s(n,"arity")&&t.length!==n.arity&&U(t,"length",{value:n.arity});try{n&&s(n,"constructor")&&n.constructor?r&&U(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch{}var l=u(t);return s(l,"source")||(l.source=b(N,"string"==typeof e?e:"")),t};Function.prototype.toString=R((function(){return a(this)&&h(this).source||c(this)}),"toString")},741:t=>{var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function(t){var l=+t;return(l>0?n:e)(l)}},6043:(t,e,n)=>{var l=n(9306),i=TypeError,a=function(t){var e,n;this.promise=new t((function(t,l){if(void 0!==e||void 0!==n)throw new i("Bad Promise constructor");e=t,n=l})),this.resolve=l(e),this.reject=l(n)};t.exports.f=function(t){return new a(t)}},2603:(t,e,n)=>{var l=n(655);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:l(t)}},4149:t=>{var e=RangeError;t.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},2360:(t,e,n)=>{var l,i=n(8551),a=n(6801),s=n(8727),r=n(421),o=n(397),c=n(4055),d=n(6119),u=">",h="<",m="prototype",U="script",p=d("IE_PROTO"),F=function(){},b=function(t){return h+U+u+t+h+"/"+U+u},Z=function(t){t.write(b("")),t.close();var e=t.parentWindow.Object;return t=null,e},N=function(){var t,e=c("iframe"),n="java"+U+":";return e.style.display="none",o.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(b("document.F=Object")),t.close(),t.F},R=function(){try{l=new ActiveXObject("htmlfile")}catch{}R=typeof document<"u"?document.domain&&l?Z(l):N():Z(l);for(var t=s.length;t--;)delete R[m][s[t]];return R()};r[p]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(F[m]=i(t),n=new F,F[m]=null,n[p]=t):n=R(),void 0===e?n:a.f(n,e)}},6801:(t,e,n)=>{var l=n(3724),i=n(8686),a=n(4913),s=n(8551),r=n(5397),o=n(1072);e.f=l&&!i?Object.defineProperties:function(t,e){s(t);for(var n,l=r(e),i=o(e),c=i.length,d=0;c>d;)a.f(t,n=i[d++],l[n]);return t}},4913:(t,e,n)=>{var l=n(3724),i=n(5917),a=n(8686),s=n(8551),r=n(6969),o=TypeError,c=Object.defineProperty,d=Object.getOwnPropertyDescriptor,u="enumerable",h="configurable",m="writable";e.f=l?a?function(t,e,n){if(s(t),e=r(e),s(n),"function"==typeof t&&"prototype"===e&&"value"in n&&m in n&&!n[m]){var l=d(t,e);l&&l[m]&&(t[e]=n.value,n={configurable:h in n?n[h]:l[h],enumerable:u in n?n[u]:l[u],writable:!1})}return c(t,e,n)}:c:function(t,e,n){if(s(t),e=r(e),s(n),i)try{return c(t,e,n)}catch{}if("get"in n||"set"in n)throw new o("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},7347:(t,e,n)=>{var l=n(3724),i=n(9565),a=n(8773),s=n(6980),r=n(5397),o=n(6969),c=n(9297),d=n(5917),u=Object.getOwnPropertyDescriptor;e.f=l?u:function(t,e){if(t=r(t),e=o(e),d)try{return u(t,e)}catch{}if(c(t,e))return s(!i(a.f,t,e),t[e])}},8480:(t,e,n)=>{var l=n(1828),i=n(8727),a=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return l(t,a)}},3717:(t,e)=>{e.f=Object.getOwnPropertySymbols},2787:(t,e,n)=>{var l=n(9297),i=n(4901),a=n(8981),s=n(6119),r=n(2211),o=s("IE_PROTO"),c=Object,d=c.prototype;t.exports=r?c.getPrototypeOf:function(t){var e=a(t);if(l(e,o))return e[o];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof c?d:null}},1625:(t,e,n)=>{var l=n(9504);t.exports=l({}.isPrototypeOf)},1828:(t,e,n)=>{var l=n(9504),i=n(9297),a=n(5397),s=n(9617).indexOf,r=n(421),o=l([].push);t.exports=function(t,e){var n,l=a(t),c=0,d=[];for(n in l)!i(r,n)&&i(l,n)&&o(d,n);for(;e.length>c;)i(l,n=e[c++])&&(~s(d,n)||o(d,n));return d}},1072:(t,e,n)=>{var l=n(1828),i=n(8727);t.exports=Object.keys||function(t){return l(t,i)}},8773:(t,e)=>{var n={}.propertyIsEnumerable,l=Object.getOwnPropertyDescriptor,i=l&&!n.call({1:2},1);e.f=i?function(t){var e=l(this,t);return!!e&&e.enumerable}:n},2967:(t,e,n)=>{var l=n(6706),i=n(34),a=n(7750),s=n(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=l(Object.prototype,"__proto__","set"),t(n,[]),e=n instanceof Array}catch{}return function(n,l){return a(n),s(l),i(n)&&(e?t(n,l):n.__proto__=l),n}}():void 0)},4270:(t,e,n)=>{var l=n(9565),i=n(4901),a=n(34),s=TypeError;t.exports=function(t,e){var n,r;if("string"===e&&i(n=t.toString)&&!a(r=l(n,t))||i(n=t.valueOf)&&!a(r=l(n,t))||"string"!==e&&i(n=t.toString)&&!a(r=l(n,t)))return r;throw new s("Can't convert object to primitive value")}},5031:(t,e,n)=>{var l=n(7751),i=n(9504),a=n(8480),s=n(3717),r=n(8551),o=i([].concat);t.exports=l("Reflect","ownKeys")||function(t){var e=a.f(r(t)),n=s.f;return n?o(e,n(t)):e}},8235:(t,e,n)=>{var l=n(9504),i=n(9297),a=SyntaxError,s=parseInt,r=String.fromCharCode,o=l("".charAt),c=l("".slice),d=l(/./.exec),u={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":"\n","\\r":"\r","\\t":"\t"},h=/^[\da-f]{4}$/i,m=/^[\u0000-\u001F]$/;t.exports=function(t,e){for(var n=!0,l="";e{t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},7750:(t,e,n)=>{var l=n(4117),i=TypeError;t.exports=function(t){if(l(t))throw new i("Can't call method on "+t);return t}},9286:(t,e,n)=>{var l=n(4402),i=n(8469),a=l.Set,s=l.add;t.exports=function(t){var e=new a;return i(t,(function(t){s(e,t)})),e}},3440:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(9286),s=n(5170),r=n(3789),o=n(8469),c=n(507),d=i.has,u=i.remove;t.exports=function(t){var e=l(this),n=r(t),i=a(e);return s(e)<=n.size?o(e,(function(t){n.includes(t)&&u(i,t)})):c(n.getIterator(),(function(t){d(e,t)&&u(i,t)})),i}},4402:(t,e,n)=>{var l=n(9504),i=Set.prototype;t.exports={Set:Set,add:l(i.add),has:l(i.has),remove:l(i.delete),proto:i}},8750:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(5170),s=n(3789),r=n(8469),o=n(507),c=i.Set,d=i.add,u=i.has;t.exports=function(t){var e=l(this),n=s(t),i=new c;return a(e)>n.size?o(n.getIterator(),(function(t){u(e,t)&&d(i,t)})):r(e,(function(t){n.includes(t)&&d(i,t)})),i}},4449:(t,e,n)=>{var l=n(7080),i=n(4402).has,a=n(5170),s=n(3789),r=n(8469),o=n(507),c=n(9539);t.exports=function(t){var e=l(this),n=s(t);if(a(e)<=n.size)return!1!==r(e,(function(t){if(n.includes(t))return!1}),!0);var d=n.getIterator();return!1!==o(d,(function(t){if(i(e,t))return c(d,"normal",!1)}))}},3838:(t,e,n)=>{var l=n(7080),i=n(5170),a=n(8469),s=n(3789);t.exports=function(t){var e=l(this),n=s(t);return!(i(e)>n.size)&&!1!==a(e,(function(t){if(!n.includes(t))return!1}),!0)}},8527:(t,e,n)=>{var l=n(7080),i=n(4402).has,a=n(5170),s=n(3789),r=n(507),o=n(9539);t.exports=function(t){var e=l(this),n=s(t);if(a(e){var l=n(9504),i=n(507),a=n(4402),s=a.Set,r=a.proto,o=l(r.forEach),c=l(r.keys),d=c(new s).next;t.exports=function(t,e,n){return n?i({iterator:c(t),next:d},e):o(t,e)}},4916:(t,e,n)=>{var l=n(7751),i=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};t.exports=function(t){var e=l("Set");try{(new e)[t](i(0));try{return(new e)[t](i(-1)),!1}catch{return!0}}catch{return!1}}},5170:(t,e,n)=>{var l=n(6706),i=n(4402);t.exports=l(i.proto,"size","get")||function(t){return t.size}},3650:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(9286),s=n(3789),r=n(507),o=i.add,c=i.has,d=i.remove;t.exports=function(t){var e=l(this),n=s(t).getIterator(),i=a(e);return r(n,(function(t){c(e,t)?d(i,t):o(i,t)})),i}},4204:(t,e,n)=>{var l=n(7080),i=n(4402).add,a=n(9286),s=n(3789),r=n(507);t.exports=function(t){var e=l(this),n=s(t).getIterator(),o=a(e);return r(n,(function(t){i(o,t)})),o}},6119:(t,e,n)=>{var l=n(5745),i=n(3392),a=l("keys");t.exports=function(t){return a[t]||(a[t]=i(t))}},7629:(t,e,n)=>{var l=n(6395),i=n(4576),a=n(9433),s="__core-js_shared__",r=t.exports=i[s]||a(s,{});(r.versions||(r.versions=[])).push({version:"3.39.0",mode:l?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(t,e,n)=>{var l=n(7629);t.exports=function(t,e){return l[t]||(l[t]=e||{})}},1548:(t,e,n)=>{var l=n(4576),i=n(9039),a=n(9519),s=n(4215),r=l.structuredClone;t.exports=!!r&&!i((function(){if("DENO"===s&&a>92||"NODE"===s&&a>94||"BROWSER"===s&&a>97)return!1;var t=new ArrayBuffer(8),e=r(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},4495:(t,e,n)=>{var l=n(9519),i=n(9039),a=n(4576),s=a.String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol("symbol detection");return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&l&&l<41}))},5610:(t,e,n)=>{var l=n(1291),i=Math.max,a=Math.min;t.exports=function(t,e){var n=l(t);return n<0?i(n+e,0):a(n,e)}},5854:(t,e,n)=>{var l=n(2777),i=TypeError;t.exports=function(t){var e=l(t,"number");if("number"==typeof e)throw new i("Can't convert number to bigint");return BigInt(e)}},7696:(t,e,n)=>{var l=n(1291),i=n(8014),a=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=l(t),n=i(e);if(e!==n)throw new a("Wrong length or index");return n}},5397:(t,e,n)=>{var l=n(7055),i=n(7750);t.exports=function(t){return l(i(t))}},1291:(t,e,n)=>{var l=n(741);t.exports=function(t){var e=+t;return e!==e||0===e?0:l(e)}},8014:(t,e,n)=>{var l=n(1291),i=Math.min;t.exports=function(t){var e=l(t);return e>0?i(e,9007199254740991):0}},8981:(t,e,n)=>{var l=n(7750),i=Object;t.exports=function(t){return i(l(t))}},9590:(t,e,n)=>{var l=n(1291),i=RangeError;t.exports=function(t){var e=l(t);if(e<0)throw new i("The argument can't be less than 0");return e}},2777:(t,e,n)=>{var l=n(9565),i=n(34),a=n(757),s=n(5966),r=n(4270),o=n(8227),c=TypeError,d=o("toPrimitive");t.exports=function(t,e){if(!i(t)||a(t))return t;var n,o=s(t,d);if(o){if(void 0===e&&(e="default"),n=l(o,t,e),!i(n)||a(n))return n;throw new c("Can't convert object to primitive value")}return void 0===e&&(e="number"),r(t,e)}},6969:(t,e,n)=>{var l=n(2777),i=n(757);t.exports=function(t){var e=l(t,"string");return i(e)?e:e+""}},2140:(t,e,n)=>{var l=n(8227),i=l("toStringTag"),a={};a[i]="z",t.exports="[object z]"===String(a)},655:(t,e,n)=>{var l=n(6955),i=String;t.exports=function(t){if("Symbol"===l(t))throw new TypeError("Cannot convert a Symbol value to a string");return i(t)}},6823:t=>{var e=String;t.exports=function(t){try{return e(t)}catch{return"Object"}}},3392:(t,e,n)=>{var l=n(9504),i=0,a=Math.random(),s=l(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++i+a,36)}},7040:(t,e,n)=>{var l=n(4495);t.exports=l&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(t,e,n)=>{var l=n(3724),i=n(9039);t.exports=l&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:t=>{var e=TypeError;t.exports=function(t,n){if(t{var l=n(4576),i=n(4901),a=l.WeakMap;t.exports=i(a)&&/native code/.test(String(a))},8227:(t,e,n)=>{var l=n(4576),i=n(5745),a=n(9297),s=n(3392),r=n(4495),o=n(7040),c=l.Symbol,d=i("wks"),u=o?c.for||c:c&&c.withoutSetter||s;t.exports=function(t){return a(d,t)||(d[t]=r&&a(c,t)?c[t]:u("Symbol."+t)),d[t]}},6573:(t,e,n)=>{var l=n(3724),i=n(2106),a=n(3238),s=ArrayBuffer.prototype;l&&!("detached"in s)&&i(s,"detached",{configurable:!0,get:function(){return a(this)}})},7936:(t,e,n)=>{var l=n(6518),i=n(5636);i&&l({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return i(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(t,e,n)=>{var l=n(6518),i=n(5636);i&&l({target:"ArrayBuffer",proto:!0},{transfer:function(){return i(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(t,e,n)=>{var l=n(6518),i=n(8981),a=n(6198),s=n(4527),r=n(6837),o=n(9039),c=o((function(){return 4294967297!==[].push.call({length:4294967296},1)})),d=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}},u=c||!d();l({target:"Array",proto:!0,arity:1,forced:u},{push:function(t){var e=i(this),n=a(e),l=arguments.length;r(n+l);for(var o=0;o{var l=n(6518),i=n(4576),a=n(679),s=n(8551),r=n(4901),o=n(2787),c=n(2106),d=n(4659),u=n(9039),h=n(9297),m=n(8227),U=n(7657).IteratorPrototype,p=n(3724),F=n(6395),b="constructor",Z="Iterator",N=m("toStringTag"),R=TypeError,S=i[Z],W=F||!r(S)||S.prototype!==U||!u((function(){S({})})),V=function(){if(a(this,U),o(this)===U)throw new R("Abstract class Iterator not directly constructable")},Q=function(t,e){p?c(U,t,{configurable:!0,get:function(){return e},set:function(e){if(s(this),this===U)throw new R("You can't redefine this property");h(this,t)?this[t]=e:d(this,t,e)}}):U[t]=e};h(U,N)||Q(N,Z),(W||!h(U,b)||U[b]===Object)&&Q(b,V),V.prototype=U,l({global:!0,constructor:!0,forced:W},{Iterator:V})},9314:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(8551),s=n(1767),r=n(4149),o=n(9590),c=n(9462),d=n(6395),u=c((function(){for(var t,e,n=this.iterator,l=this.next;this.remaining;)if(this.remaining--,t=a(i(l,n)),e=this.done=!!t.done,e)return;if(t=a(i(l,n)),e=this.done=!!t.done,!e)return t.value}));l({target:"Iterator",proto:!0,real:!0,forced:d},{drop:function(t){a(this);var e=o(r(+t));return new u(s(this),{remaining:e})}})},1148:(t,e,n)=>{var l=n(6518),i=n(2652),a=n(9306),s=n(8551),r=n(1767);l({target:"Iterator",proto:!0,real:!0},{every:function(t){s(this),a(t);var e=r(this),n=0;return!i(e,(function(e,l){if(!t(e,n++))return l()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},2489:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(9462),c=n(6319),d=n(6395),u=o((function(){for(var t,e,n,l=this.iterator,a=this.predicate,r=this.next;;){if(t=s(i(r,l)),e=this.done=!!t.done,e)return;if(n=t.value,c(l,a,[n,this.counter++],!0))return n}}));l({target:"Iterator",proto:!0,real:!0,forced:d},{filter:function(t){return s(this),a(t),new u(r(this),{predicate:t})}})},531:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(8646),c=n(9462),d=n(9539),u=n(6395),h=c((function(){for(var t,e,n=this.iterator,l=this.mapper;;){if(e=this.inner)try{if(t=s(i(e.next,e.iterator)),!t.done)return t.value;this.inner=null}catch(a){d(n,"throw",a)}if(t=s(i(this.next,n)),this.done=!!t.done)return;try{this.inner=o(l(t.value,this.counter++),!1)}catch(a){d(n,"throw",a)}}}));l({target:"Iterator",proto:!0,real:!0,forced:u},{flatMap:function(t){return s(this),a(t),new h(r(this),{mapper:t,inner:null})}})},1701:(t,e,n)=>{var l=n(6518),i=n(713),a=n(6395);l({target:"Iterator",proto:!0,real:!0,forced:a},{map:i})},3579:(t,e,n)=>{var l=n(6518),i=n(2652),a=n(9306),s=n(8551),r=n(1767);l({target:"Iterator",proto:!0,real:!0},{some:function(t){s(this),a(t);var e=r(this),n=0;return i(e,(function(e,l){if(t(e,n++))return l()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},1689:(t,e,n)=>{var l=n(6518),i=n(4576),a=n(8745),s=n(7680),r=n(6043),o=n(9306),c=n(1103),d=i.Promise,u=!1,h=!d||!d.try||c((function(){d.try((function(t){u=8===t}),8)})).error||!u;l({target:"Promise",stat:!0,forced:h},{try:function(t){var e=arguments.length>1?s(arguments,1):[],n=r.f(this),l=c((function(){return a(o(t),void 0,e)}));return(l.error?n.reject:n.resolve)(l.value),n.promise}})},4628:(t,e,n)=>{var l=n(6518),i=n(6043);l({target:"Promise",stat:!0},{withResolvers:function(){var t=i.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},7642:(t,e,n)=>{var l=n(6518),i=n(3440),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("difference")},{difference:i})},8004:(t,e,n)=>{var l=n(6518),i=n(9039),a=n(8750),s=n(4916),r=!s("intersection")||i((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}));l({target:"Set",proto:!0,real:!0,forced:r},{intersection:a})},3853:(t,e,n)=>{var l=n(6518),i=n(4449),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isDisjointFrom")},{isDisjointFrom:i})},5876:(t,e,n)=>{var l=n(6518),i=n(3838),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isSubsetOf")},{isSubsetOf:i})},2475:(t,e,n)=>{var l=n(6518),i=n(8527),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isSupersetOf")},{isSupersetOf:i})},5024:(t,e,n)=>{var l=n(6518),i=n(3650),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("symmetricDifference")},{symmetricDifference:i})},1698:(t,e,n)=>{var l=n(6518),i=n(4204),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("union")},{union:i})},7467:(t,e,n)=>{var l=n(7628),i=n(4644),a=i.aTypedArray,s=i.exportTypedArrayMethod,r=i.getTypedArrayConstructor;s("toReversed",(function(){return l(a(this),r(this))}))},4732:(t,e,n)=>{var l=n(4644),i=n(9504),a=n(9306),s=n(5370),r=l.aTypedArray,o=l.getTypedArrayConstructor,c=l.exportTypedArrayMethod,d=i(l.TypedArrayPrototype.sort);c("toSorted",(function(t){void 0!==t&&a(t);var e=r(this),n=s(o(e),e);return d(n,t)}))},9577:(t,e,n)=>{var l=n(9928),i=n(4644),a=n(1108),s=n(1291),r=n(5854),o=i.aTypedArray,c=i.getTypedArrayConstructor,d=i.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();d("with",(function(t,e){var n=o(this),i=s(t),d=a(n)?r(e):+e;return l(n,c(n),i,d)}),!u)},8992:(t,e,n)=>{n(8111)},4743:(t,e,n)=>{n(9314)},3215:(t,e,n)=>{n(1148)},4520:(t,e,n)=>{n(2489)},670:(t,e,n)=>{n(531)},1454:(t,e,n)=>{n(1701)},7550:(t,e,n)=>{n(3579)},8335:(t,e,n)=>{var l=n(6518),i=n(3724),a=n(4576),s=n(7751),r=n(9504),o=n(9565),c=n(4901),d=n(34),u=n(4376),h=n(9297),m=n(655),U=n(6198),p=n(4659),F=n(9039),b=n(8235),Z=n(4495),N=a.JSON,R=a.Number,S=a.SyntaxError,W=N&&N.parse,V=s("Object","keys"),Q=Object.getOwnPropertyDescriptor,y=r("".charAt),T=r("".slice),M=r(/./.exec),g=r([].push),E=/^\d$/,G=/^[1-9]$/,B=/^[\d-]$/,J=/^[\t\n\r ]$/,k=0,Y=1,C=function(t,e){t=m(t);var n=new f(t,0),l=n.parse(),i=l.value,a=n.skip(J,l.end);if(a{n(1689)},4979:(t,e,n)=>{var l=n(6518),i=n(4576),a=n(7751),s=n(6980),r=n(4913).f,o=n(9297),c=n(679),d=n(3167),u=n(2603),h=n(5002),m=n(8574),U=n(3724),p=n(6395),F="DOMException",b=a("Error"),Z=a(F),N=function(){c(this,R);var t=arguments.length,e=u(t<1?void 0:arguments[0]),n=u(t<2?void 0:arguments[1],"Error"),l=new Z(e,n),i=new b(e);return i.name=F,r(l,"stack",s(1,m(i.stack,1))),d(l,this,N),l},R=N.prototype=Z.prototype,S="stack"in new b(F),W="stack"in new Z(1,2),V=Z&&U&&Object.getOwnPropertyDescriptor(i,F),Q=!!V&&!(V.writable&&V.configurable),y=S&&!Q&&!W;l({global:!0,constructor:!0,forced:p||y},{DOMException:y?N:Z});var T=a(F),M=T.prototype;if(M.constructor!==T)for(var g in p||r(M,"constructor",s(1,T)),h)if(o(h,g)){var E=h[g],G=E.s;o(T,G)||r(T,G,s(6,E.c))}},4603:(t,e,n)=>{var l=n(6840),i=n(9504),a=n(655),s=n(2812),r=URLSearchParams,o=r.prototype,c=i(o.append),d=i(o.delete),u=i(o.forEach),h=i([].push),m=new r("a=1&a=2&b=3");m.delete("a",1),m.delete("b",void 0),m+""!="a=2"&&l(o,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return d(this,t);var l=[];u(this,(function(t,e){h(l,{key:e,value:t})})),s(e,1);for(var i,r=a(t),o=a(n),m=0,U=0,p=!1,F=l.length;m{var l=n(6840),i=n(9504),a=n(655),s=n(2812),r=URLSearchParams,o=r.prototype,c=i(o.getAll),d=i(o.has),u=new r("a=1");(u.has("a",2)||!u.has("a",void 0))&&l(o,"has",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return d(this,t);var l=c(this,t);s(e,1);for(var i=a(n),r=0;r{var l=n(3724),i=n(9504),a=n(2106),s=URLSearchParams.prototype,r=i(s.forEach);l&&!("size"in s)&&a(s,"size",{get:function(){var t=0;return r(this,(function(){t++})),t},configurable:!0,enumerable:!0})}},aa={};function sa(t){var e=aa[t];if(void 0!==e)return e.exports;var n=aa[t]={exports:{}};return ia[t].call(n.exports,n,n.exports,sa),n.exports}sa.d=(t,e)=>{for(var n in e)sa.o(e,n)&&!sa.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},sa.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var ra=globalThis.pdfjsLib={};sa.d(ra,{AbortException:()=>za,AnnotationEditorLayer:()=>xR,AnnotationEditorParamsType:()=>ba,AnnotationEditorType:()=>Fa,AnnotationEditorUIManager:()=>Xo,AnnotationLayer:()=>QF,AnnotationMode:()=>Ua,ColorPicker:()=>cZ,DOMSVGFactory:()=>wU,DrawLayer:()=>tS,FeatureTest:()=>Aa,GlobalWorkerOptions:()=>rh,ImageKind:()=>Ra,InvalidPDFException:()=>fa,MissingPDFException:()=>La,OPS:()=>Qa,OutputScale:()=>ks,PDFDataRangeTransport:()=>Am,PDFDateString:()=>Ts,PDFWorker:()=>pU,PasswordResponses:()=>ya,PermissionFlag:()=>Za,PixelsPerInch:()=>hs,RenderingCancelledException:()=>ps,TextLayer:()=>Ym,TouchManager:()=>bc,UnexpectedResponseException:()=>wa,Util:()=>ns,VerbosityLevel:()=>Va,XfaLayer:()=>xU,build:()=>XU,createValidAbsoluteUrl:()=>Ya,fetchData:()=>ms,getDocument:()=>zm,getFilenameFromUrl:()=>Zs,getPdfFilenameFromUrl:()=>Ns,getXfaPageViewport:()=>Ms,isDataScheme:()=>Fs,isPdfFile:()=>bs,noContextMenu:()=>Ws,normalizeUnicode:()=>ss,setLayerDimensions:()=>Js,shadow:()=>Ca,stopEvent:()=>Vs,version:()=>CU}),sa(4114),sa(6573),sa(8100),sa(7936),sa(7467),sa(4732),sa(9577),sa(5247),sa(4979),sa(4603),sa(7566),sa(8721);const oa="object"==typeof process&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&"browser"!==process.type),ca=[1,0,0,1,0,0],da=[.001,0,0,.001,0,0],ua=1e7,ha=1.35,ma={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},Ua={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},pa="pdfjs_internal_editor_",Fa={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},ba={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35,DRAW_STEP:41},Za={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},Na={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Ra={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},Sa={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},Wa={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Va={ERRORS:0,WARNINGS:1,INFOS:5},Qa={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93},ya={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Ta=Va.WARNINGS;function Ma(t){Number.isInteger(t)&&(Ta=t)}function ga(){return Ta}function Ea(t){Ta>=Va.INFOS&&console.log(`Info: ${t}`)}function Ga(t){Ta>=Va.WARNINGS&&console.log(`Warning: ${t}`)}function Ba(t){throw new Error(t)}function Ja(t,e){t||Ba(e)}function ka(t){switch(null==t?void 0:t.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Ya(t,e=null,n=null){if(!t)return null;try{if(n&&"string"==typeof t){if(n.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);(null==e?void 0:e.length)>=2&&(t=`http://${t}`)}if(n.tryConvertEncoding)try{t=ls(t)}catch{}}const l=e?new URL(t,e):new URL(t);if(ka(l))return l}catch{}return null}function Ca(t,e,n,l=!1){return Object.defineProperty(t,e,{value:n,enumerable:!l,configurable:!0,writable:!1}),n}const Xa=function(){function t(t,e){this.message=t,this.name=e}return t.prototype=new Error,t.constructor=t,t}();class Ia extends Xa{constructor(t,e){super(t,"PasswordException"),this.code=e}}class Da extends Xa{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}let fa=class extends Xa{constructor(t){super(t,"InvalidPDFException")}},La=class extends Xa{constructor(t){super(t,"MissingPDFException")}},wa=class extends Xa{constructor(t,e){super(t,"UnexpectedResponseException"),this.status=e}};class xa extends Xa{constructor(t){super(t,"FormatError")}}let za=class extends Xa{constructor(t){super(t,"AbortException")}};function va(t){("object"!=typeof t||void 0===(null==t?void 0:t.length))&&Ba("Invalid argument for bytesToString");const e=t.length,n=8192;if(e>24&255,t>>16&255,t>>8&255,255&t)}function ja(t){const e=Object.create(null);for(const[n,l]of t)e[n]=l;return e}function Ka(){const t=new Uint8Array(4);return t[0]=1,1===new Uint32Array(t.buffer,0,1)[0]}function Pa(){try{return new Function(""),!0}catch{return!1}}class Aa{static get isLittleEndian(){return Ca(this,"isLittleEndian",Ka())}static get isEvalSupported(){return Ca(this,"isEvalSupported",Pa())}static get isOffscreenCanvasSupported(){return Ca(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return Ca(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){return typeof navigator<"u"&&"string"==typeof(null==navigator?void 0:navigator.platform)?Ca(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:"string"==typeof(null==navigator?void 0:navigator.userAgent)&&navigator.userAgent.includes("Firefox")}):Ca(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){var t,e;return Ca(this,"isCSSRoundSupported",null==(e=null==(t=globalThis.CSS)?void 0:t.supports)?void 0:e.call(t,"width: round(1.5px, 1px)"))}}const Ha=Array.from(Array(256).keys(),(t=>t.toString(16).padStart(2,"0")));var qa,$a,ts,es;let ns=($a=class{static makeHexColor(t,e,n){return`#${Ha[t]}${Ha[e]}${Ha[n]}`}static scaleMinMax(t,e){let n;t[0]?(t[0]<0&&(n=e[0],e[0]=e[2],e[2]=n),e[0]*=t[0],e[2]*=t[0],t[3]<0&&(n=e[1],e[1]=e[3],e[3]=n),e[1]*=t[3],e[3]*=t[3]):(n=e[0],e[0]=e[1],e[1]=n,n=e[2],e[2]=e[3],e[3]=n,t[1]<0&&(n=e[1],e[1]=e[3],e[3]=n),e[1]*=t[1],e[3]*=t[1],t[2]<0&&(n=e[0],e[0]=e[2],e[2]=n),e[0]*=t[2],e[2]*=t[2]),e[0]+=t[4],e[1]+=t[5],e[2]+=t[4],e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static applyTransform(t,e){const n=t[0]*e[0]+t[1]*e[2]+e[4],l=t[0]*e[1]+t[1]*e[3]+e[5];return[n,l]}static applyInverseTransform(t,e){const n=e[0]*e[3]-e[1]*e[2],l=(t[0]*e[3]-t[1]*e[2]+e[2]*e[5]-e[4]*e[3])/n,i=(-t[0]*e[1]+t[1]*e[0]+e[4]*e[1]-e[5]*e[0])/n;return[l,i]}static getAxialAlignedBoundingBox(t,e){const n=this.applyTransform(t,e),l=this.applyTransform(t.slice(2,4),e),i=this.applyTransform([t[0],t[3]],e),a=this.applyTransform([t[2],t[1]],e);return[Math.min(n[0],l[0],i[0],a[0]),Math.min(n[1],l[1],i[1],a[1]),Math.max(n[0],l[0],i[0],a[0]),Math.max(n[1],l[1],i[1],a[1])]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t){const e=[t[0],t[2],t[1],t[3]],n=t[0]*e[0]+t[1]*e[2],l=t[0]*e[1]+t[1]*e[3],i=t[2]*e[0]+t[3]*e[2],a=t[2]*e[1]+t[3]*e[3],s=(n+a)/2,r=Math.sqrt((n+a)**2-4*(n*a-i*l))/2,o=s+r||1,c=s-r||1;return[Math.sqrt(o),Math.sqrt(c)]}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const n=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),l=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(n>l)return null;const i=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return i>a?null:[n,i,l,a]}static bezierBoundingBox(t,e,n,l,i,a,s,r,o){return o?(o[0]=Math.min(o[0],t,s),o[1]=Math.min(o[1],e,r),o[2]=Math.max(o[2],t,s),o[3]=Math.max(o[3],e,r)):o=[Math.min(t,s),Math.min(e,r),Math.max(t,s),Math.max(e,r)],na(this,qa,es).call(this,t,n,i,s,e,l,a,r,3*(3*(n-i)-t+s),6*(t-2*n+i),3*(n-t),o),na(this,qa,es).call(this,t,n,i,s,e,l,a,r,3*(3*(l-a)-e+r),6*(e-2*l+a),3*(l-e),o),o}},qa=new WeakSet,ts=function(t,e,n,l,i,a,s,r,o,c){if(o<=0||o>=1)return;const d=1-o,u=o*o,h=u*o,m=d*(d*(d*t+3*o*e)+3*u*n)+h*l,U=d*(d*(d*i+3*o*a)+3*u*s)+h*r;c[0]=Math.min(c[0],m),c[1]=Math.min(c[1],U),c[2]=Math.max(c[2],m),c[3]=Math.max(c[3],U)},es=function(t,e,n,l,i,a,s,r,o,c,d,u){if(Math.abs(o)<1e-12)return void(Math.abs(c)>=1e-12&&na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,-d/c,u));const h=c**2-4*d*o;if(h<0)return;const m=Math.sqrt(h),U=2*o;na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,(-c+m)/U,u),na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,(-c-m)/U,u)},ta($a,qa),$a);function ls(t){return decodeURIComponent(escape(t))}let is=null,as=null;function ss(t){return is||(is=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,as=new Map([["ſt","ſt"]])),t.replaceAll(is,((t,e,n)=>e?e.normalize("NFKC"):as.get(n)))}function rs(){if("function"==typeof crypto.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);return crypto.getRandomValues(t),va(t)}const os="pdfjs_internal_id_";function cs(t){return Uint8Array.prototype.toBase64?t.toBase64():btoa(va(t))}sa(4628),sa(7642),sa(8004),sa(3853),sa(5876),sa(2475),sa(5024),sa(1698),sa(1454),sa(8992),sa(4743),sa(3215),sa(7550),sa(8335);const ds="http://www.w3.org/2000/svg";var us;let hs=(us=class{},Hi(us,"CSS",96),Hi(us,"PDF",72),Hi(us,"PDF_TO_CSS_UNITS",us.CSS/us.PDF),us);async function ms(t,e="text"){if(Ss(t,document.baseURI)){const n=await fetch(t);if(!n.ok)throw new Error(n.statusText);switch(e){case"arraybuffer":return n.arrayBuffer();case"blob":return n.blob();case"json":return n.json()}return n.text()}return new Promise(((n,l)=>{const i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType=e,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(200===i.status||0===i.status){switch(e){case"arraybuffer":case"blob":case"json":return void n(i.response)}return void n(i.responseText)}l(new Error(i.statusText))}},i.send(null)}))}class Us{constructor({viewBox:t,userUnit:e,scale:n,rotation:l,offsetX:i=0,offsetY:a=0,dontFlip:s=!1}){this.viewBox=t,this.userUnit=e,this.scale=n,this.rotation=l,this.offsetX=i,this.offsetY=a,n*=e;const r=(t[2]+t[0])/2,o=(t[3]+t[1])/2;let c,d,u,h,m,U,p,F;switch(l%=360,l<0&&(l+=360),l){case 180:c=-1,d=0,u=0,h=1;break;case 90:c=0,d=1,u=1,h=0;break;case 270:c=0,d=-1,u=-1,h=0;break;case 0:c=1,d=0,u=0,h=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}s&&(u=-u,h=-h),0===c?(m=Math.abs(o-t[1])*n+i,U=Math.abs(r-t[0])*n+a,p=(t[3]-t[1])*n,F=(t[2]-t[0])*n):(m=Math.abs(r-t[0])*n+i,U=Math.abs(o-t[1])*n+a,p=(t[2]-t[0])*n,F=(t[3]-t[1])*n),this.transform=[c*n,d*n,u*n,h*n,m-c*n*r-u*n*o,U-d*n*r-h*n*o],this.width=p,this.height=F}get rawDims(){const{userUnit:t,viewBox:e}=this,n=e.map((e=>e*t));return Ca(this,"rawDims",{pageWidth:n[2]-n[0],pageHeight:n[3]-n[1],pageX:n[0],pageY:n[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:n=this.offsetX,offsetY:l=this.offsetY,dontFlip:i=!1}={}){return new Us({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:n,offsetY:l,dontFlip:i})}convertToViewportPoint(t,e){return ns.applyTransform([t,e],this.transform)}convertToViewportRectangle(t){const e=ns.applyTransform([t[0],t[1]],this.transform),n=ns.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]}convertToPdfPoint(t,e){return ns.applyInverseTransform([t,e],this.transform)}}let ps=class extends Xa{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}};function Fs(t){const e=t.length;let n=0;for(;n=1&&l<=12?l-1:0;let i=parseInt(e[3],10);i=i>=1&&i<=31?i:1;let a=parseInt(e[4],10);a=a>=0&&a<=23?a:0;let s=parseInt(e[5],10);s=s>=0&&s<=59?s:0;let r=parseInt(e[6],10);r=r>=0&&r<=59?r:0;const o=e[7]||"Z";let c=parseInt(e[8],10);c=c>=0&&c<=23?c:0;let d=parseInt(e[9],10)||0;return d=d>=0&&d<=59?d:0,"-"===o?(a+=c,s+=d):"+"===o&&(a-=c,s-=d),new Date(Date.UTC(n,l,i,a,s,r))}},ys=new WeakMap,ta(Qs,ys),Qs);function Ms(t,{scale:e=1,rotation:n=0}){const{width:l,height:i}=t.attributes.style,a=[0,0,parseInt(l),parseInt(i)];return new Us({viewBox:a,userUnit:1,scale:e,rotation:n})}function gs(t){if(t.startsWith("#")){const e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}return t.startsWith("rgb(")?t.slice(4,-1).split(",").map((t=>parseInt(t))):t.startsWith("rgba(")?t.slice(5,-1).split(",").map((t=>parseInt(t))).slice(0,3):(Ga(`Not a valid color format: "${t}"`),[0,0,0])}function Es(t){const e=document.createElement("span");e.style.visibility="hidden",document.body.append(e);for(const n of t.keys()){e.style.color=n;const l=window.getComputedStyle(e).color;t.set(n,gs(l))}e.remove()}function Gs(t){const{a:e,b:n,c:l,d:i,e:a,f:s}=t.getTransform();return[e,n,l,i,a,s]}function Bs(t){const{a:e,b:n,c:l,d:i,e:a,f:s}=t.getTransform().invertSelf();return[e,n,l,i,a,s]}function Js(t,e,n=!1,l=!0){if(e instanceof Us){const{pageWidth:l,pageHeight:i}=e.rawDims,{style:a}=t,s=Aa.isCSSRoundSupported,r=`var(--scale-factor) * ${l}px`,o=`var(--scale-factor) * ${i}px`,c=s?`round(down, ${r}, var(--scale-round-x, 1px))`:`calc(${r})`,d=s?`round(down, ${o}, var(--scale-round-y, 1px))`:`calc(${o})`;n&&e.rotation%180!==0?(a.width=d,a.height=c):(a.width=c,a.height=d)}l&&t.setAttribute("data-main-rotation",e.rotation)}let ks=class{constructor(){const t=window.devicePixelRatio||1;this.sx=t,this.sy=t}get scaled(){return 1!==this.sx||1!==this.sy}get symmetric(){return this.sx===this.sy}};var Ys,Cs,Xs,Is,Ds,fs,Ls,ws,xs,zs,vs,Os,_s,js;const Ks=class t{constructor(e){ta(this,xs),ta(this,Ys,null),ta(this,Cs,null),ta(this,Xs),ta(this,Is,null),ta(this,Ds,null),ea(this,Xs,e),$i(t,fs)||ea(t,fs,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button"}))}render(){const e=ea(this,Ys,document.createElement("div"));e.classList.add("editToolbar","hidden"),e.setAttribute("role","toolbar");const n=$i(this,Xs)._uiManager._signal;e.addEventListener("contextmenu",Ws,{signal:n}),e.addEventListener("pointerdown",na(t,Ls,ws),{signal:n});const l=ea(this,Is,document.createElement("div"));l.className="buttons",e.append(l);const i=$i(this,Xs).toolbarPosition;if(i){const{style:t}=e,n="ltr"===$i(this,Xs)._uiManager.direction?1-i[0]:i[0];t.insetInlineEnd=100*n+"%",t.top=`calc(${100*i[1]}% + var(--editor-toolbar-vert-offset))`}return na(this,xs,_s).call(this),e}get div(){return $i(this,Ys)}hide(){var t;$i(this,Ys).classList.add("hidden"),null==(t=$i(this,Cs))||t.hideDropdown()}show(){var t;$i(this,Ys).classList.remove("hidden"),null==(t=$i(this,Ds))||t.shown()}async addAltText(t){const e=await t.render();na(this,xs,Os).call(this,e),$i(this,Is).prepend(e,$i(this,xs,js)),ea(this,Ds,t)}addColorPicker(t){ea(this,Cs,t);const e=t.renderButton();na(this,xs,Os).call(this,e),$i(this,Is).prepend(e,$i(this,xs,js))}remove(){var t;$i(this,Ys).remove(),null==(t=$i(this,Cs))||t.destroy(),ea(this,Cs,null)}};Ys=new WeakMap,Cs=new WeakMap,Xs=new WeakMap,Is=new WeakMap,Ds=new WeakMap,fs=new WeakMap,Ls=new WeakSet,ws=function(t){t.stopPropagation()},xs=new WeakSet,zs=function(t){$i(this,Xs)._focusEventsAllowed=!1,Vs(t)},vs=function(t){$i(this,Xs)._focusEventsAllowed=!0,Vs(t)},Os=function(t){const e=$i(this,Xs)._uiManager._signal;t.addEventListener("focusin",na(this,xs,zs).bind(this),{capture:!0,signal:e}),t.addEventListener("focusout",na(this,xs,vs).bind(this),{capture:!0,signal:e}),t.addEventListener("contextmenu",Ws,{signal:e})},_s=function(){const{editorType:t,_uiManager:e}=$i(this,Xs),n=document.createElement("button");n.className="delete",n.tabIndex=0,n.setAttribute("data-l10n-id",$i(Ks,fs)[t]),na(this,xs,Os).call(this,n),n.addEventListener("click",(t=>{e.delete()}),{signal:e._signal}),$i(this,Is).append(n)},js=function(){const t=document.createElement("div");return t.className="divider",t},ta(Ks,Ls),ta(Ks,fs,null);let Ps=Ks;var As,Hs,qs,$s,tr,er,nr,lr,ir,ar,sr,rr,or;class cr{constructor(t){ta(this,$s),ta(this,As,null),ta(this,Hs,null),ta(this,qs),ea(this,qs,t)}show(t,e,n){const[l,i]=na(this,$s,er).call(this,e,n),{style:a}=$i(this,Hs)||ea(this,Hs,na(this,$s,tr).call(this));t.append($i(this,Hs)),a.insetInlineEnd=100*l+"%",a.top=`calc(${100*i}% + var(--editor-toolbar-vert-offset))`}hide(){$i(this,Hs).remove()}}function dr(t,e,n){for(const l of n)e.addEventListener(l,t[l].bind(t))}As=new WeakMap,Hs=new WeakMap,qs=new WeakMap,$s=new WeakSet,tr=function(){const t=ea(this,Hs,document.createElement("div"));t.className="editToolbar",t.setAttribute("role","toolbar"),t.addEventListener("contextmenu",Ws,{signal:$i(this,qs)._signal});const e=ea(this,As,document.createElement("div"));return e.className="buttons",t.append(e),na(this,$s,nr).call(this),t},er=function(t,e){let n=0,l=0;for(const i of t){const t=i.y+i.height;if(tn?(l=a,n=t):e?a>l&&(l=a):a{$i(this,qs).highlightSelection("floating_button")}),{signal:n}),$i(this,As).append(t)};class ur{constructor(){ta(this,lr,0)}get id(){return`${pa}${la(this,lr)._++}`}}lr=new WeakMap;const hr=class{constructor(){ta(this,rr),ta(this,ir,rs()),ta(this,ar,0),ta(this,sr,null)}static get _isSVGFittingCanvas(){const t='data:image/svg+xml;charset=UTF-8,',e=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),n=new Image;n.src=t;const l=n.decode().then((()=>(e.drawImage(n,0,0,1,1,0,0,1,3),0===new Uint32Array(e.getImageData(0,0,1,1).data.buffer)[0])));return Ca(this,"_isSVGFittingCanvas",l)}async getFromFile(t){const{lastModified:e,name:n,size:l,type:i}=t;return na(this,rr,or).call(this,`${e}_${n}_${l}_${i}`,t)}async getFromUrl(t){return na(this,rr,or).call(this,t,t)}async getFromBlob(t,e){const n=await e;return na(this,rr,or).call(this,t,n)}async getFromId(t){$i(this,sr)||ea(this,sr,new Map);const e=$i(this,sr).get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:t}=e;return delete e.blobPromise,this.getFromBlob(e.id,t)}return this.getFromUrl(e.url)}getFromCanvas(t,e){$i(this,sr)||ea(this,sr,new Map);let n=$i(this,sr).get(t);if(null!=n&&n.bitmap)return n.refCounter+=1,n;const l=new OffscreenCanvas(e.width,e.height);return l.getContext("2d").drawImage(e,0,0),n={bitmap:l.transferToImageBitmap(),id:`image_${$i(this,ir)}_${la(this,ar)._++}`,refCounter:1,isSvg:!1},$i(this,sr).set(t,n),$i(this,sr).set(n.id,n),n}getSvgUrl(t){const e=$i(this,sr).get(t);return null!=e&&e.isSvg?e.svgUrl:null}deleteId(t){var e;$i(this,sr)||ea(this,sr,new Map);const n=$i(this,sr).get(t);if(!n||(n.refCounter-=1,0!==n.refCounter))return;const{bitmap:l}=n;if(!n.url&&!n.file){const t=new OffscreenCanvas(l.width,l.height);t.getContext("bitmaprenderer").transferFromImageBitmap(l),n.blobPromise=t.convertToBlob()}null==(e=l.close)||e.call(l),n.bitmap=null}isValidId(t){return t.startsWith(`image_${$i(this,ir)}_`)}};ir=new WeakMap,ar=new WeakMap,sr=new WeakMap,rr=new WeakSet,or=async function(t,e){$i(this,sr)||ea(this,sr,new Map);let n=$i(this,sr).get(t);if(null===n)return null;if(null!=n&&n.bitmap)return n.refCounter+=1,n;try{let t;if(n||(n={bitmap:null,id:`image_${$i(this,ir)}_${la(this,ar)._++}`,refCounter:0,isSvg:!1}),"string"==typeof e?(n.url=e,t=await ms(e,"blob")):e instanceof File?t=n.file=e:e instanceof Blob&&(t=e),"image/svg+xml"===t.type){const e=hr._isSVGFittingCanvas,l=new FileReader,i=new Image,a=new Promise(((t,a)=>{i.onload=()=>{n.bitmap=i,n.isSvg=!0,t()},l.onload=async()=>{const t=n.svgUrl=l.result;i.src=await e?`${t}#svgView(preserveAspectRatio(none))`:t},i.onerror=l.onerror=a}));l.readAsDataURL(t),await a}else n.bitmap=await createImageBitmap(t);n.refCounter=1}catch(eG){Ga(eG),n=null}return $i(this,sr).set(t,n),n&&$i(this,sr).set(n.id,n),n};let mr=hr;var Ur,pr,Fr,br,Zr,Nr;class Rr{constructor(t=128){ta(this,Ur,[]),ta(this,pr,!1),ta(this,Fr),ta(this,br,-1),ea(this,Fr,t)}add({cmd:t,undo:e,post:n,mustExec:l,type:i=NaN,overwriteIfSameType:a=!1,keepUndo:s=!1}){if(l&&t(),$i(this,pr))return;const r={cmd:t,undo:e,post:n,type:i};if(-1===$i(this,br))return $i(this,Ur).length>0&&($i(this,Ur).length=0),ea(this,br,0),void $i(this,Ur).push(r);if(a&&$i(this,Ur)[$i(this,br)].type===i)return s&&(r.undo=$i(this,Ur)[$i(this,br)].undo),void($i(this,Ur)[$i(this,br)]=r);const o=$i(this,br)+1;o===$i(this,Fr)?$i(this,Ur).splice(0,1):(ea(this,br,o),o<$i(this,Ur).length&&$i(this,Ur).splice(o)),$i(this,Ur).push(r)}undo(){if(-1===$i(this,br))return;ea(this,pr,!0);const{undo:t,post:e}=$i(this,Ur)[$i(this,br)];t(),null==e||e(),ea(this,pr,!1),ea(this,br,$i(this,br)-1)}redo(){if($i(this,br)<$i(this,Ur).length-1){ea(this,br,$i(this,br)+1),ea(this,pr,!0);const{cmd:t,post:e}=$i(this,Ur)[$i(this,br)];t(),null==e||e(),ea(this,pr,!1)}}hasSomethingToUndo(){return-1!==$i(this,br)}hasSomethingToRedo(){return $i(this,br)<$i(this,Ur).length-1}cleanType(t){if(-1!==$i(this,br)){for(let e=$i(this,br);e>=0;e--)if($i(this,Ur)[e].type!==t)return $i(this,Ur).splice(e+1,$i(this,br)-e),void ea(this,br,e);$i(this,Ur).length=0,ea(this,br,-1)}}destroy(){ea(this,Ur,null)}}Ur=new WeakMap,pr=new WeakMap,Fr=new WeakMap,br=new WeakMap;class Sr{constructor(t){ta(this,Zr),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:e}=Aa.platform;for(const[n,l,i={}]of t)for(const t of n){const n=t.startsWith("mac+");e&&n?(this.callbacks.set(t.slice(4),{callback:l,options:i}),this.allKeys.add(t.split("+").at(-1))):!e&&!n&&(this.callbacks.set(t,{callback:l,options:i}),this.allKeys.add(t.split("+").at(-1)))}}exec(t,e){if(!this.allKeys.has(e.key))return;const n=this.callbacks.get(na(this,Zr,Nr).call(this,e));if(!n)return;const{callback:l,options:{bubbles:i=!1,args:a=[],checker:s=null}}=n;s&&!s(t,e)||(l.bind(t,...a,e)(),i||Vs(e))}}Zr=new WeakSet,Nr=function(t){t.altKey&&this.buffer.push("alt"),t.ctrlKey&&this.buffer.push("ctrl"),t.metaKey&&this.buffer.push("meta"),t.shiftKey&&this.buffer.push("shift"),this.buffer.push(t.key);const e=this.buffer.join("+");return this.buffer.length=0,e};const Wr=class t{get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return Es(t),Ca(this,"_colors",t)}convert(e){const n=gs(e);if(!window.matchMedia("(forced-colors: active)").matches)return n;for(const[l,i]of this._colors)if(i.every(((t,e)=>t===n[e])))return t._colorsMapping.get(l);return n}getHexCode(t){const e=this._colors.get(t);return e?ns.makeHexColor(...e):t}};Hi(Wr,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let Vr=Wr;var Qr,yr,Tr,Mr,gr,Er,Gr,Br,Jr,kr,Yr,Cr,Xr,Ir,Dr,fr,Lr,wr,xr,zr,vr,Or,_r,jr,Kr,Pr,Ar,Hr,qr,$r,to,eo,no,lo,io,ao,so,ro,oo,co,uo,ho,mo,Uo,po,Fo,bo,Zo,No,Ro,So,Wo,Vo,Qo,yo,To,Mo,go,Eo,Go,Bo,Jo,ko,Yo,Co;let Xo=(mo=class{constructor(t,e,n,l,i,a,s,r,o,c,d,u,h){ta(this,Uo),ta(this,Qr,new AbortController),ta(this,yr,null),ta(this,Tr,new Map),ta(this,Mr,new Map),ta(this,gr,null),ta(this,Er,null),ta(this,Gr,null),ta(this,Br,new Rr),ta(this,Jr,null),ta(this,kr,null),ta(this,Yr,0),ta(this,Cr,new Set),ta(this,Xr,null),ta(this,Ir,null),ta(this,Dr,new Set),Hi(this,"_editorUndoBar",null),ta(this,fr,!1),ta(this,Lr,!1),ta(this,wr,!1),ta(this,xr,null),ta(this,zr,null),ta(this,vr,null),ta(this,Or,null),ta(this,_r,!1),ta(this,jr,null),ta(this,Kr,new ur),ta(this,Pr,!1),ta(this,Ar,!1),ta(this,Hr,null),ta(this,qr,null),ta(this,$r,null),ta(this,to,null),ta(this,eo,Fa.NONE),ta(this,no,new Set),ta(this,lo,null),ta(this,io,null),ta(this,ao,null),ta(this,so,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),ta(this,ro,[0,0]),ta(this,oo,null),ta(this,co,null),ta(this,uo,null),ta(this,ho,null);const m=this._signal=$i(this,Qr).signal;ea(this,co,t),ea(this,uo,e),ea(this,gr,n),this._eventBus=l,l._on("editingaction",this.onEditingAction.bind(this),{signal:m}),l._on("pagechanging",this.onPageChanging.bind(this),{signal:m}),l._on("scalechanging",this.onScaleChanging.bind(this),{signal:m}),l._on("rotationchanging",this.onRotationChanging.bind(this),{signal:m}),l._on("setpreference",this.onSetPreference.bind(this),{signal:m}),l._on("switchannotationeditorparams",(t=>this.updateParams(t.type,t.value)),{signal:m}),na(this,Uo,Ro).call(this),na(this,Uo,Mo).call(this),na(this,Uo,Vo).call(this),ea(this,Er,i.annotationStorage),ea(this,xr,i.filterFactory),ea(this,io,a),ea(this,Or,s||null),ea(this,fr,r),ea(this,Lr,o),ea(this,wr,c),ea(this,to,d||null),this.viewParameters={realScale:hs.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=u||null,this._supportsPinchToZoom=!1!==h}static get _keyboardManager(){const t=mo.prototype,e=t=>$i(t,co).contains(document.activeElement)&&"BUTTON"!==document.activeElement.tagName&&t.hasSomethingToControl(),n=(t,{target:e})=>{if(e instanceof HTMLInputElement){const{type:t}=e;return"text"!==t&&"number"!==t}return!0},l=this.TRANSLATE_SMALL,i=this.TRANSLATE_BIG;return Ca(this,"_keyboardManager",new Sr([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:n}],[["ctrl+z","mac+meta+z"],t.undo,{checker:n}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:n}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:n}],[["Enter","mac+Enter"],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&$i(t,co).contains(e)&&!t.isEnterHandled}],[[" ","mac+ "],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&$i(t,co).contains(document.activeElement)}],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-l,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[l,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-l],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,l],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}]]))}destroy(){var t,e,n,l,i;null==(t=$i(this,ho))||t.resolve(),ea(this,ho,null),null==(e=$i(this,Qr))||e.abort(),ea(this,Qr,null),this._signal=null;for(const a of $i(this,Mr).values())a.destroy();$i(this,Mr).clear(),$i(this,Tr).clear(),$i(this,Dr).clear(),ea(this,yr,null),$i(this,no).clear(),$i(this,Br).destroy(),null==(n=$i(this,gr))||n.destroy(),null==(l=$i(this,jr))||l.hide(),ea(this,jr,null),$i(this,zr)&&(clearTimeout($i(this,zr)),ea(this,zr,null)),$i(this,oo)&&(clearTimeout($i(this,oo)),ea(this,oo,null)),null==(i=this._editorUndoBar)||i.destroy()}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return $i(this,to)}get useNewAltTextFlow(){return $i(this,Lr)}get useNewAltTextWhenAddingImage(){return $i(this,wr)}get hcmFilter(){return Ca(this,"hcmFilter",$i(this,io)?$i(this,xr).addHCMFilter($i(this,io).foreground,$i(this,io).background):"none")}get direction(){return Ca(this,"direction",getComputedStyle($i(this,co)).direction)}get highlightColors(){return Ca(this,"highlightColors",$i(this,Or)?new Map($i(this,Or).split(",").map((t=>t.split("=").map((t=>t.trim()))))):null)}get highlightColorNames(){return Ca(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,(t=>t.reverse()))):null)}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),ea(this,kr,t)}setMainHighlightColorPicker(t){ea(this,$r,t)}editAltText(t,e=!1){var n;null==(n=$i(this,gr))||n.editAltText(this,t,e)}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){switch(t){case"enableNewAltTextWhenAddingImage":ea(this,wr,e);break}}onPageChanging({pageNumber:t}){ea(this,Yr,t-1)}focusMainContainer(){$i(this,co).focus()}findParent(t,e){for(const n of $i(this,Mr).values()){const{x:l,y:i,width:a,height:s}=n.div.getBoundingClientRect();if(t>=l&&t<=l+a&&e>=i&&e<=i+s)return n}return null}disableUserSelect(t=!1){$i(this,uo).classList.toggle("noUserSelect",t)}addShouldRescale(t){$i(this,Dr).add(t)}removeShouldRescale(t){$i(this,Dr).delete(t)}onScaleChanging({scale:t}){var e;this.commitOrRemove(),this.viewParameters.realScale=t*hs.PDF_TO_CSS_UNITS;for(const n of $i(this,Dr))n.onScaleChanging();null==(e=$i(this,kr))||e.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}highlightSelection(t=""){const e=document.getSelection();if(!e||e.isCollapsed)return;const{anchorNode:n,anchorOffset:l,focusNode:i,focusOffset:a}=e,s=e.toString(),r=na(this,Uo,po).call(this,e).closest(".textLayer"),o=this.getSelectionBoxes(r);if(!o)return;e.empty();const c=na(this,Uo,Fo).call(this,r),d=$i(this,eo)===Fa.NONE,u=()=>{null==c||c.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:o,anchorNode:n,anchorOffset:l,focusNode:i,focusOffset:a,text:s}),d&&this.showAllEditors("highlight",!0,!0)};d?this.switchToMode(Fa.HIGHLIGHT,u):u()}addToAnnotationStorage(t){!t.isEmpty()&&$i(this,Er)&&!$i(this,Er).has(t.id)&&$i(this,Er).setValue(t.id,t)}blur(){if(this.isShiftKeyDown=!1,$i(this,_r)&&(ea(this,_r,!1),na(this,Uo,No).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of $i(this,no))if(e.div.contains(t)){ea(this,qr,[e,t]),e._focusEventsAllowed=!1;break}}focus(){if(!$i(this,qr))return;const[t,e]=$i(this,qr);ea(this,qr,null),e.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0,signal:this._signal}),e.focus()}addEditListeners(){na(this,Uo,Vo).call(this),na(this,Uo,yo).call(this)}removeEditListeners(){na(this,Uo,Qo).call(this),na(this,Uo,To).call(this)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const n of $i(this,Ir))if(n.isHandlingMimeForPasting(e))return t.dataTransfer.dropEffect="copy",void t.preventDefault()}drop(t){for(const e of t.dataTransfer.items)for(const n of $i(this,Ir))if(n.isHandlingMimeForPasting(e.type))return n.paste(e,this.currentLayer),void t.preventDefault()}copy(t){var e;if(t.preventDefault(),null==(e=$i(this,yr))||e.commitOrRemove(),!this.hasSelection)return;const n=[];for(const l of $i(this,no)){const t=l.serialize(!0);t&&n.push(t)}0!==n.length&&t.clipboardData.setData("application/pdfjs",JSON.stringify(n))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const a of e.items)for(const t of $i(this,Ir))if(t.isHandlingMimeForPasting(a.type))return void t.paste(a,this.currentLayer);let n=e.getData("application/pdfjs");if(!n)return;try{n=JSON.parse(n)}catch(i){return void Ga(`paste: "${i.message}".`)}if(!Array.isArray(n))return;this.unselectAll();const l=this.currentLayer;try{const t=[];for(const a of n){const e=await l.deserialize(a);if(!e)return;t.push(e)}const e=()=>{for(const e of t)na(this,Uo,Jo).call(this,e);na(this,Uo,Co).call(this,t)},i=()=>{for(const e of t)e.remove()};this.addCommands({cmd:e,undo:i,mustExec:!0})}catch(i){Ga(`paste: "${i.message}".`)}}keydown(t){!this.isShiftKeyDown&&"Shift"===t.key&&(this.isShiftKeyDown=!0),$i(this,eo)!==Fa.NONE&&!this.isEditorHandlingKeyboard&&mo._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&"Shift"===t.key&&(this.isShiftKeyDown=!1,$i(this,_r)&&(ea(this,_r,!1),na(this,Uo,No).call(this,"main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(t){t?(na(this,Uo,So).call(this),na(this,Uo,yo).call(this),na(this,Uo,go).call(this,{isEditing:$i(this,eo)!==Fa.NONE,isEmpty:na(this,Uo,Yo).call(this),hasSomethingToUndo:$i(this,Br).hasSomethingToUndo(),hasSomethingToRedo:$i(this,Br).hasSomethingToRedo(),hasSelectedEditor:!1})):(na(this,Uo,Wo).call(this),na(this,Uo,To).call(this),na(this,Uo,go).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!$i(this,Ir)){ea(this,Ir,t);for(const t of $i(this,Ir))na(this,Uo,Eo).call(this,t.defaultPropertiesToUpdate)}}getId(){return $i(this,Kr).id}get currentLayer(){return $i(this,Mr).get($i(this,Yr))}getLayer(t){return $i(this,Mr).get(t)}get currentPageIndex(){return $i(this,Yr)}addLayer(t){$i(this,Mr).set(t.pageIndex,t),$i(this,Pr)?t.enable():t.disable()}removeLayer(t){$i(this,Mr).delete(t.pageIndex)}async updateMode(t,e=null,n=!1){var l;if($i(this,eo)!==t&&(!$i(this,ho)||(await $i(this,ho).promise,$i(this,ho)))){if(ea(this,ho,Promise.withResolvers()),ea(this,eo,t),t===Fa.NONE)return this.setEditingState(!1),na(this,Uo,Bo).call(this),null==(l=this._editorUndoBar)||l.hide(),void $i(this,ho).resolve();this.setEditingState(!0),await na(this,Uo,Go).call(this),this.unselectAll();for(const e of $i(this,Mr).values())e.updateMode(t);if(!e)return n&&this.addNewEditorFromKeyboard(),void $i(this,ho).resolve();for(const t of $i(this,Tr).values())t.annotationElementId===e?(this.setSelected(t),t.enterInEditMode()):t.unselect();$i(this,ho).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t!==$i(this,eo)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:t})}updateParams(t,e){var n;if($i(this,Ir)){switch(t){case ba.CREATE:return void this.currentLayer.addNewEditor();case ba.HIGHLIGHT_DEFAULT_COLOR:null==(n=$i(this,$r))||n.updateColor(e);break;case ba.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),($i(this,ao)||ea(this,ao,new Map)).set(t,e),this.showAllEditors("highlight",e);break}for(const n of $i(this,no))n.updateParams(t,e);for(const n of $i(this,Ir))n.updateDefaultParams(t,e)}}showAllEditors(t,e,n=!1){var l;for(const i of $i(this,Tr).values())i.editorType===t&&i.show(e);((null==(l=$i(this,ao))?void 0:l.get(ba.HIGHLIGHT_SHOW_ALL))??!0)!==e&&na(this,Uo,Eo).call(this,[[ba.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if($i(this,Ar)!==t){ea(this,Ar,t);for(const e of $i(this,Mr).values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}getEditors(t){const e=[];for(const n of $i(this,Tr).values())n.pageIndex===t&&e.push(n);return e}getEditor(t){return $i(this,Tr).get(t)}addEditor(t){$i(this,Tr).set(t.id,t)}removeEditor(t){var e;t.div.contains(document.activeElement)&&($i(this,zr)&&clearTimeout($i(this,zr)),ea(this,zr,setTimeout((()=>{this.focusMainContainer(),ea(this,zr,null)}),0))),$i(this,Tr).delete(t.id),this.unselect(t),(!t.annotationElementId||!$i(this,Cr).has(t.annotationElementId))&&(null==(e=$i(this,Er))||e.remove(t.id))}addDeletedAnnotationElement(t){$i(this,Cr).add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return $i(this,Cr).has(t)}removeDeletedAnnotationElement(t){$i(this,Cr).delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}setActiveEditor(t){$i(this,yr)!==t&&(ea(this,yr,t),t&&na(this,Uo,Eo).call(this,t.propertiesToUpdate))}updateUI(t){$i(this,Uo,ko)===t&&na(this,Uo,Eo).call(this,t.propertiesToUpdate)}updateUIForDefaultProperties(t){na(this,Uo,Eo).call(this,t.defaultPropertiesToUpdate)}toggleSelected(t){if($i(this,no).has(t))return $i(this,no).delete(t),t.unselect(),void na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection});$i(this,no).add(t),t.select(),na(this,Uo,Eo).call(this,t.propertiesToUpdate),na(this,Uo,go).call(this,{hasSelectedEditor:!0})}setSelected(t){var e;null==(e=$i(this,kr))||e.commitOrRemove();for(const n of $i(this,no))n!==t&&n.unselect();$i(this,no).clear(),$i(this,no).add(t),t.select(),na(this,Uo,Eo).call(this,t.propertiesToUpdate),na(this,Uo,go).call(this,{hasSelectedEditor:!0})}isSelected(t){return $i(this,no).has(t)}get firstSelectedEditor(){return $i(this,no).values().next().value}unselect(t){t.unselect(),$i(this,no).delete(t),na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==$i(this,no).size}get isEnterHandled(){return 1===$i(this,no).size&&this.firstSelectedEditor.isEnterHandled}undo(){var t;$i(this,Br).undo(),na(this,Uo,go).call(this,{hasSomethingToUndo:$i(this,Br).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:na(this,Uo,Yo).call(this)}),null==(t=this._editorUndoBar)||t.hide()}redo(){$i(this,Br).redo(),na(this,Uo,go).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:$i(this,Br).hasSomethingToRedo(),isEmpty:na(this,Uo,Yo).call(this)})}addCommands(t){$i(this,Br).add(t),na(this,Uo,go).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:na(this,Uo,Yo).call(this)})}cleanUndoStack(t){$i(this,Br).cleanType(t)}delete(){var t;this.commitOrRemove();const e=null==(t=this.currentLayer)?void 0:t.endDrawingSession(!0);if(!this.hasSelection&&!e)return;const n=e?[e]:[...$i(this,no)],l=()=>{var t;null==(t=this._editorUndoBar)||t.show(i,1===n.length?n[0].editorType:n.length);for(const e of n)e.remove()},i=()=>{for(const t of n)na(this,Uo,Jo).call(this,t)};this.addCommands({cmd:l,undo:i,mustExec:!0})}commitOrRemove(){var t;null==(t=$i(this,yr))||t.commitOrRemove()}hasSomethingToControl(){return $i(this,yr)||this.hasSelection}selectAll(){for(const t of $i(this,no))t.commit();na(this,Uo,Co).call(this,$i(this,Tr).values())}unselectAll(){var t;if((!$i(this,yr)||($i(this,yr).commitOrRemove(),$i(this,eo)===Fa.NONE))&&(null==(t=$i(this,kr))||!t.commitOrRemove())&&this.hasSelection){for(const t of $i(this,no))t.unselect();$i(this,no).clear(),na(this,Uo,go).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(t,e,n=!1){if(n||this.commitOrRemove(),!this.hasSelection)return;$i(this,ro)[0]+=t,$i(this,ro)[1]+=e;const[l,i]=$i(this,ro),a=[...$i(this,no)],s=1e3;$i(this,oo)&&clearTimeout($i(this,oo)),ea(this,oo,setTimeout((()=>{ea(this,oo,null),$i(this,ro)[0]=$i(this,ro)[1]=0,this.addCommands({cmd:()=>{for(const t of a)$i(this,Tr).has(t.id)&&t.translateInPage(l,i)},undo:()=>{for(const t of a)$i(this,Tr).has(t.id)&&t.translateInPage(-l,-i)},mustExec:!1})}),s));for(const r of a)r.translateInPage(t,e)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),ea(this,Xr,new Map);for(const t of $i(this,no))$i(this,Xr).set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!$i(this,Xr))return!1;this.disableUserSelect(!1);const t=$i(this,Xr);ea(this,Xr,null);let e=!1;for(const[{x:l,y:i,pageIndex:a},s]of t)s.newX=l,s.newY=i,s.newPageIndex=a,e||(e=l!==s.savedX||i!==s.savedY||a!==s.savedPageIndex);if(!e)return!1;const n=(t,e,n,l)=>{if($i(this,Tr).has(t.id)){const i=$i(this,Mr).get(l);i?t._setParentAndPosition(i,e,n):(t.pageIndex=l,t.x=e,t.y=n)}};return this.addCommands({cmd:()=>{for(const[e,{newX:l,newY:i,newPageIndex:a}]of t)n(e,l,i,a)},undo:()=>{for(const[e,{savedX:l,savedY:i,savedPageIndex:a}]of t)n(e,l,i,a)},mustExec:!0}),!0}dragSelectedEditors(t,e){if($i(this,Xr))for(const n of $i(this,Xr).keys())n.drag(t,e)}rebuild(t){if(null===t.parent){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){var t;return(null==(t=this.getActive())?void 0:t.shouldGetKeyboardEvents())||1===$i(this,no).size&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return $i(this,yr)===t}getActive(){return $i(this,yr)}getMode(){return $i(this,eo)}get imageManager(){return Ca(this,"imageManager",new mr)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let o=0,c=e.rangeCount;o({x:(e-l)/a,y:1-(t+s-n)/i,width:r/a,height:s/i});break;case"180":s=(t,e,s,r)=>({x:1-(t+s-n)/i,y:1-(e+r-l)/a,width:s/i,height:r/a});break;case"270":s=(t,e,s,r)=>({x:1-(e+r-l)/a,y:(t-n)/i,width:r/a,height:s/i});break;default:s=(t,e,s,r)=>({x:(t-n)/i,y:(e-l)/a,width:s/i,height:r/a});break}const r=[];for(let o=0,c=e.rangeCount;o{"pointerup"===n.type&&0!==n.button||(e.abort(),null==t||t.toggleDrawing(!0),"pointerup"===n.type&&na(this,Uo,No).call(this,"main_toolbar"))};window.addEventListener("pointerup",l,{signal:n}),window.addEventListener("blur",l,{signal:n})}}else $i(this,lo)&&(null==(e=$i(this,jr))||e.hide(),ea(this,lo,null),na(this,Uo,go).call(this,{hasSelectedText:!1}))},No=function(t=""){$i(this,eo)===Fa.HIGHLIGHT?this.highlightSelection(t):$i(this,fr)&&na(this,Uo,bo).call(this)},Ro=function(){document.addEventListener("selectionchange",na(this,Uo,Zo).bind(this),{signal:this._signal})},So=function(){if($i(this,vr))return;ea(this,vr,new AbortController);const t=this.combinedSignal($i(this,vr));window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})},Wo=function(){var t;null==(t=$i(this,vr))||t.abort(),ea(this,vr,null)},Vo=function(){if($i(this,Hr))return;ea(this,Hr,new AbortController);const t=this.combinedSignal($i(this,Hr));window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})},Qo=function(){var t;null==(t=$i(this,Hr))||t.abort(),ea(this,Hr,null)},yo=function(){if($i(this,Jr))return;ea(this,Jr,new AbortController);const t=this.combinedSignal($i(this,Jr));document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})},To=function(){var t;null==(t=$i(this,Jr))||t.abort(),ea(this,Jr,null)},Mo=function(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})},go=function(t){Object.entries(t).some((([t,e])=>$i(this,so)[t]!==e))&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign($i(this,so),t)}),$i(this,eo)===Fa.HIGHLIGHT&&!1===t.hasSelectedEditor&&na(this,Uo,Eo).call(this,[[ba.HIGHLIGHT_FREE,!0]]))},Eo=function(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})},Go=async function(){if(!$i(this,Pr)){ea(this,Pr,!0);const t=[];for(const e of $i(this,Mr).values())t.push(e.enable());await Promise.all(t);for(const e of $i(this,Tr).values())e.enable()}},Bo=function(){if(this.unselectAll(),$i(this,Pr)){ea(this,Pr,!1);for(const t of $i(this,Mr).values())t.disable();for(const t of $i(this,Tr).values())t.disable()}},Jo=function(t){const e=$i(this,Mr).get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))},ko=function(){let t=null;for(t of $i(this,no));return t},Yo=function(){if(0===$i(this,Tr).size)return!0;if(1===$i(this,Tr).size)for(const t of $i(this,Tr).values())return t.isEmpty();return!1},Co=function(t){for(const e of $i(this,no))e.unselect();$i(this,no).clear();for(const e of t)e.isEmpty()||($i(this,no).add(e),e.select());na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection})},Hi(mo,"TRANSLATE_SMALL",1),Hi(mo,"TRANSLATE_BIG",10),mo);var Io,Do,fo,Lo,wo,xo,zo,vo,Oo,_o,jo,Ko,Po,Ao,Ho,qo;const $o=class t{constructor(e){ta(this,Ao),ta(this,Io,null),ta(this,Do,!1),ta(this,fo,null),ta(this,Lo,null),ta(this,wo,null),ta(this,xo,null),ta(this,zo,!1),ta(this,vo,null),ta(this,Oo,null),ta(this,_o,null),ta(this,jo,null),ta(this,Ko,!1),ea(this,Oo,e),ea(this,Ko,e._uiManager.useNewAltTextFlow),$i(t,Po)||ea(t,Po,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(e){t._l10n??(t._l10n=e)}async render(){const e=ea(this,fo,document.createElement("button"));e.className="altText",e.tabIndex="0";const n=ea(this,Lo,document.createElement("span"));e.append(n),$i(this,Ko)?(e.classList.add("new"),e.setAttribute("data-l10n-id",$i(t,Po).missing),n.setAttribute("data-l10n-id",$i(t,Po)["missing-label"])):(e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),n.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const l=$i(this,Oo)._uiManager._signal;e.addEventListener("contextmenu",Ws,{signal:l}),e.addEventListener("pointerdown",(t=>t.stopPropagation()),{signal:l});const i=t=>{t.preventDefault(),$i(this,Oo)._uiManager.editAltText($i(this,Oo)),$i(this,Ko)&&$i(this,Oo)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:$i(this,Ao,Ho)}})};return e.addEventListener("click",i,{capture:!0,signal:l}),e.addEventListener("keydown",(t=>{t.target===e&&"Enter"===t.key&&(ea(this,zo,!0),i(t))}),{signal:l}),await na(this,Ao,qo).call(this),e}finish(){$i(this,fo)&&($i(this,fo).focus({focusVisible:$i(this,zo)}),ea(this,zo,!1))}isEmpty(){return $i(this,Ko)?null===$i(this,Io):!$i(this,Io)&&!$i(this,Do)}hasData(){return $i(this,Ko)?null!==$i(this,Io)||!!$i(this,_o):this.isEmpty()}get guessedText(){return $i(this,_o)}async setGuessedText(e){null===$i(this,Io)&&(ea(this,_o,e),ea(this,jo,await t._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:e})),na(this,Ao,qo).call(this))}toggleAltTextBadge(t=!1){var e;if(!$i(this,Ko)||$i(this,Io))return null==(e=$i(this,vo))||e.remove(),void ea(this,vo,null);if(!$i(this,vo)){const t=ea(this,vo,document.createElement("div"));t.className="noAltTextBadge",$i(this,Oo).div.append(t)}$i(this,vo).classList.toggle("hidden",!t)}serialize(t){let e=$i(this,Io);return!t&&$i(this,_o)===e&&(e=$i(this,jo)),{altText:e,decorative:$i(this,Do),guessedText:$i(this,_o),textWithDisclaimer:$i(this,jo)}}get data(){return{altText:$i(this,Io),decorative:$i(this,Do)}}set data({altText:t,decorative:e,guessedText:n,textWithDisclaimer:l,cancel:i=!1}){n&&(ea(this,_o,n),ea(this,jo,l)),($i(this,Io)!==t||$i(this,Do)!==e)&&(i||(ea(this,Io,t),ea(this,Do,e)),na(this,Ao,qo).call(this))}toggle(t=!1){$i(this,fo)&&(!t&&$i(this,xo)&&(clearTimeout($i(this,xo)),ea(this,xo,null)),$i(this,fo).disabled=!t)}shown(){$i(this,Oo)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:$i(this,Ao,Ho)}})}destroy(){var t,e;null==(t=$i(this,fo))||t.remove(),ea(this,fo,null),ea(this,Lo,null),ea(this,wo,null),null==(e=$i(this,vo))||e.remove(),ea(this,vo,null)}};Io=new WeakMap,Do=new WeakMap,fo=new WeakMap,Lo=new WeakMap,wo=new WeakMap,xo=new WeakMap,zo=new WeakMap,vo=new WeakMap,Oo=new WeakMap,_o=new WeakMap,jo=new WeakMap,Ko=new WeakMap,Po=new WeakMap,Ao=new WeakSet,Ho=function(){return($i(this,Io)?"added":null===$i(this,Io)&&this.guessedText&&"review")||"missing"},qo=async function(){var t,e,n;const l=$i(this,fo);if(!l)return;if($i(this,Ko)){if(l.classList.toggle("done",!!$i(this,Io)),l.setAttribute("data-l10n-id",$i($o,Po)[$i(this,Ao,Ho)]),null==(t=$i(this,Lo))||t.setAttribute("data-l10n-id",$i($o,Po)[`${$i(this,Ao,Ho)}-label`]),!$i(this,Io))return void(null==(e=$i(this,wo))||e.remove())}else{if(!$i(this,Io)&&!$i(this,Do))return l.classList.remove("done"),void(null==(n=$i(this,wo))||n.remove());l.classList.add("done"),l.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let i=$i(this,wo);if(!i){ea(this,wo,i=document.createElement("span")),i.className="tooltip",i.setAttribute("role","tooltip"),i.id=`alt-text-tooltip-${$i(this,Oo).id}`;const t=100,e=$i(this,Oo)._uiManager._signal;e.addEventListener("abort",(()=>{clearTimeout($i(this,xo)),ea(this,xo,null)}),{once:!0}),l.addEventListener("mouseenter",(()=>{ea(this,xo,setTimeout((()=>{ea(this,xo,null),$i(this,wo).classList.add("show"),$i(this,Oo)._reportTelemetry({action:"alt_text_tooltip"})}),t))}),{signal:e}),l.addEventListener("mouseleave",(()=>{var t;$i(this,xo)&&(clearTimeout($i(this,xo)),ea(this,xo,null)),null==(t=$i(this,wo))||t.classList.remove("show")}),{signal:e})}$i(this,Do)?i.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(i.removeAttribute("data-l10n-id"),i.textContent=$i(this,Io)),i.parentNode||l.append(i);const a=$i(this,Oo).getImageForAltText();null==a||a.setAttribute("aria-describedby",i.id)},ta($o,Po,null),Hi($o,"_l10n",null);let tc=$o;var ec,nc,lc,ic,ac,sc,rc,oc,cc,dc,uc,hc,mc,Uc,pc,Fc;let bc=(Fc=class{constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:n=null,onPinchStart:l=null,onPinching:i=null,onPinchEnd:a=null,signal:s}){ta(this,hc),ta(this,ec),ta(this,nc,!1),ta(this,lc,null),ta(this,ic),ta(this,ac),ta(this,sc),ta(this,rc),ta(this,oc),ta(this,cc,null),ta(this,dc),ta(this,uc,null),ea(this,ec,t),ea(this,lc,n),ea(this,ic,e),ea(this,ac,l),ea(this,sc,i),ea(this,rc,a),ea(this,dc,new AbortController),ea(this,oc,AbortSignal.any([s,$i(this,dc).signal])),t.addEventListener("touchstart",na(this,hc,mc).bind(this),{passive:!1,signal:$i(this,oc)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return Ca(this,"MIN_TOUCH_DISTANCE_TO_PINCH",35/(window.devicePixelRatio||1))}destroy(){var t;null==(t=$i(this,dc))||t.abort(),ea(this,dc,null)}},ec=new WeakMap,nc=new WeakMap,lc=new WeakMap,ic=new WeakMap,ac=new WeakMap,sc=new WeakMap,rc=new WeakMap,oc=new WeakMap,cc=new WeakMap,dc=new WeakMap,uc=new WeakMap,hc=new WeakSet,mc=function(t){var e,n,l;if(null!=(e=$i(this,ic))&&e.call(this)||t.touches.length<2)return;if(!$i(this,uc)){ea(this,uc,new AbortController);const t=AbortSignal.any([$i(this,oc),$i(this,uc).signal]),e=$i(this,ec),l={signal:t,passive:!1};e.addEventListener("touchmove",na(this,hc,Uc).bind(this),l),e.addEventListener("touchend",na(this,hc,pc).bind(this),l),e.addEventListener("touchcancel",na(this,hc,pc).bind(this),l),null==(n=$i(this,ac))||n.call(this)}if(Vs(t),2!==t.touches.length||null!=(l=$i(this,lc))&&l.call(this))return void ea(this,cc,null);let[i,a]=t.touches;i.identifier>a.identifier&&([i,a]=[a,i]),ea(this,cc,{touch0X:i.screenX,touch0Y:i.screenY,touch1X:a.screenX,touch1Y:a.screenY})},Uc=function(t){var e;if(!$i(this,cc)||2!==t.touches.length)return;let[n,l]=t.touches;n.identifier>l.identifier&&([n,l]=[l,n]);const{screenX:i,screenY:a}=n,{screenX:s,screenY:r}=l,o=$i(this,cc),{touch0X:c,touch0Y:d,touch1X:u,touch1Y:h}=o,m=u-c,U=h-d,p=s-i,F=r-a,b=Math.hypot(p,F)||1,Z=Math.hypot(m,U)||1;if(!$i(this,nc)&&Math.abs(Z-b)<=Fc.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(o.touch0X=i,o.touch0Y=a,o.touch1X=s,o.touch1Y=r,t.preventDefault(),!$i(this,nc))return void ea(this,nc,!0);const N=[(i+s)/2,(a+r)/2];null==(e=$i(this,sc))||e.call(this,N,Z,b)},pc=function(t){var e;$i(this,uc).abort(),ea(this,uc,null),null==(e=$i(this,rc))||e.call(this),$i(this,cc)&&(t.preventDefault(),ea(this,cc,null),ea(this,nc,!1))},Fc);var Zc,Nc,Rc,Sc,Wc,Vc,Qc,yc,Tc,Mc,gc,Ec,Gc,Bc,Jc,kc,Yc,Cc,Xc,Ic,Dc,fc,Lc,wc,xc,zc,vc,Oc,_c,jc,Kc,Pc,Ac,Hc,qc,$c,td,ed,nd,ld,id,ad,sd,rd,od;const cd=class t{constructor(e){ta(this,xc),ta(this,Zc,null),ta(this,Nc,null),ta(this,Rc,null),ta(this,Sc,!1),ta(this,Wc,null),ta(this,Vc,""),ta(this,Qc,!1),ta(this,yc,null),ta(this,Tc,null),ta(this,Mc,null),ta(this,gc,null),ta(this,Ec,""),ta(this,Gc,!1),ta(this,Bc,null),ta(this,Jc,!1),ta(this,kc,!1),ta(this,Yc,!1),ta(this,Cc,null),ta(this,Xc,0),ta(this,Ic,0),ta(this,Dc,null),ta(this,fc,null),Hi(this,"_editToolbar",null),Hi(this,"_initialOptions",Object.create(null)),Hi(this,"_initialData",null),Hi(this,"_isVisible",!0),Hi(this,"_uiManager",null),Hi(this,"_focusEventsAllowed",!0),ta(this,Lc,!1),ta(this,wc,t._zIndex++),this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null;const{rotation:n,rawDims:{pageWidth:l,pageHeight:i,pageX:a,pageY:s}}=this.parent.viewport;this.rotation=n,this.pageRotation=(360+n-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[l,i],this.pageTranslation=[a,s];const[r,o]=this.parentDimensions;this.x=e.x/r,this.y=e.y/o,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const e=t.prototype._resizeWithKeyboard,n=Xo.TRANSLATE_SMALL,l=Xo.TRANSLATE_BIG;return Ca(this,"_resizerKeyboardManager",new Sr([[["ArrowLeft","mac+ArrowLeft"],e,{args:[-n,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e,{args:[-l,0]}],[["ArrowRight","mac+ArrowRight"],e,{args:[n,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e,{args:[l,0]}],[["ArrowUp","mac+ArrowUp"],e,{args:[0,-n]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e,{args:[0,-l]}],[["ArrowDown","mac+ArrowDown"],e,{args:[0,n]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e,{args:[0,l]}],[["Escape","mac+Escape"],t.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get isDrawer(){return!1}static get _defaultLineColor(){return Ca(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new ud({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(e,n){if(t._l10n??(t._l10n=e),t._l10nResizer||(t._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),-1!==t._borderLineWidth)return;const l=getComputedStyle(document.documentElement);t._borderLineWidth=parseFloat(l.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){Ba("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return $i(this,Lc)}set _isDraggable(t){var e;ea(this,Lc,t),null==(e=this.div)||e.classList.toggle("draggable",t)}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(2*t),this.y+=this.width*t/(2*e);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(2*t),this.y-=this.width*t/(2*e);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=$i(this,wc)}setParent(t){null!==t?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):na(this,xc,od).call(this),this.parent=t}focusin(t){this._focusEventsAllowed&&($i(this,Gc)?ea(this,Gc,!1):this.parent.setSelected(this))}focusout(t){var e;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const n=t.relatedTarget;null!=n&&n.closest(`#${this.id}`)||(t.preventDefault(),null!=(e=this.parent)&&e.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,n,l){const[i,a]=this.parentDimensions;[n,l]=this.screenToPageTranslation(n,l),this.x=(t+n)/i,this.y=(e+l)/a,this.fixAndSetPosition()}translate(t,e){na(this,xc,zc).call(this,this.parentDimensions,t,e)}translateInPage(t,e){$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]),na(this,xc,zc).call(this,this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}drag(t,e){$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]);const{div:n,parentDimensions:[l,i]}=this;if(this.x+=t/l,this.y+=e/i,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:t,y:e}=this.div.getBoundingClientRect();this.parent.findNewParent(this,t,e)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:s}=this;const[r,o]=this.getBaseTranslation();a+=r,s+=o;const{style:c}=n;c.left=`${(100*a).toFixed(2)}%`,c.top=`${(100*s).toFixed(2)}%`,this._onTranslating(a,s),n.scrollIntoView({block:"nearest"})}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!$i(this,Bc)&&($i(this,Bc)[0]!==this.x||$i(this,Bc)[1]!==this.y)}get _hasBeenResized(){return!!$i(this,Bc)&&($i(this,Bc)[2]!==this.width||$i(this,Bc)[3]!==this.height)}getBaseTranslation(){const[e,n]=this.parentDimensions,{_borderLineWidth:l}=t,i=l/e,a=l/n;switch(this.rotation){case 90:return[-i,a];case 180:return[i,a];case 270:return[i,-a];default:return[-i,-a]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[n,l]}=this;let{x:i,y:a,width:s,height:r}=this;if(s*=n,r*=l,i*=n,a*=l,this._mustFixPosition)switch(t){case 0:i=Math.max(0,Math.min(n-s,i)),a=Math.max(0,Math.min(l-r,a));break;case 90:i=Math.max(0,Math.min(n-r,i)),a=Math.min(l,Math.max(s,a));break;case 180:i=Math.min(n,Math.max(s,i)),a=Math.min(l,Math.max(r,a));break;case 270:i=Math.min(n,Math.max(r,i)),a=Math.max(0,Math.min(l-s,a));break}this.x=i/=n,this.y=a/=l;const[o,c]=this.getBaseTranslation();i+=o,a+=c,e.left=`${(100*i).toFixed(2)}%`,e.top=`${(100*a).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(e,n){var l;return na(l=t,vc,Oc).call(l,e,n,this.parentRotation)}pageTranslationToScreen(e,n){var l;return na(l=t,vc,Oc).call(l,e,n,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,n]}=this;return[e*t,n*t]}setDims(t,e){const[n,l]=this.parentDimensions,{style:i}=this.div;i.width=`${(100*t/n).toFixed(2)}%`,$i(this,Qc)||(i.height=`${(100*e/l).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:n}=t,l=n.endsWith("%"),i=!$i(this,Qc)&&e.endsWith("%");if(l&&i)return;const[a,s]=this.parentDimensions;l||(t.width=`${(100*parseFloat(n)/a).toFixed(2)}%`),!$i(this,Qc)&&!i&&(t.height=`${(100*parseFloat(e)/s).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}_onResized(){}static _round(t){return Math.round(1e4*t)/1e4}_onResizing(){}altTextFinish(){var t;null==(t=$i(this,Rc))||t.finish()}async addEditToolbar(){return this._editToolbar||$i(this,kc)||(this._editToolbar=new Ps(this),this.div.append(this._editToolbar.render()),$i(this,Rc)&&await this._editToolbar.addAltText($i(this,Rc))),this._editToolbar}removeEditToolbar(){var t;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,null==(t=$i(this,Rc))||t.destroy())}addContainer(t){var e;const n=null==(e=this._editToolbar)?void 0:e.div;n?n.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){$i(this,Rc)||(tc.initialize(t._l10n),ea(this,Rc,new tc(this)),$i(this,Zc)&&($i(this,Rc).data=$i(this,Zc),ea(this,Zc,null)),await this.addEditToolbar())}get altTextData(){var t;return null==(t=$i(this,Rc))?void 0:t.data}set altTextData(t){$i(this,Rc)&&($i(this,Rc).data=t)}get guessedAltText(){var t;return null==(t=$i(this,Rc))?void 0:t.guessedText}async setGuessedAltText(t){var e;await(null==(e=$i(this,Rc))?void 0:e.setGuessedText(t))}serializeAltText(t){var e;return null==(e=$i(this,Rc))?void 0:e.serialize(t)}hasAltText(){return!!$i(this,Rc)&&!$i(this,Rc).isEmpty()}hasAltTextData(){var t;return(null==(t=$i(this,Rc))?void 0:t.hasData())??!1}render(){var t;this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=$i(this,Sc)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),na(this,xc,ld).call(this);const[e,n]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*n/e).toFixed(2)}%`,this.div.style.maxHeight=`${(100*e/n).toFixed(2)}%`);const[l,i]=this.getInitialTranslation();return this.translate(l,i),dr(this,this.div,["pointerdown"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&($i(this,fc)||ea(this,fc,new bc({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:na(this,xc,qc).bind(this),onPinching:na(this,xc,$c).bind(this),onPinchEnd:na(this,xc,td).bind(this),signal:this._uiManager._signal}))),null==(t=this._uiManager._editorUndoBar)||t.hide(),this.div}pointerdown(t){const{isMac:e}=Aa.platform;0!==t.button||t.ctrlKey&&e?t.preventDefault():(ea(this,Gc,!0),this._isDraggable?na(this,xc,nd).call(this,t):na(this,xc,ed).call(this,t))}get isSelected(){return this._uiManager.isSelected(this)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){$i(this,Cc)&&clearTimeout($i(this,Cc)),ea(this,Cc,setTimeout((()=>{var t;ea(this,Cc,null),null==(t=this.parent)||t.moveEditorInDOM(this)}),0))}_setParentAndPosition(t,e,n){t.changeParent(this),this.x=e,this.y=n,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,n=this.rotation){const l=this.parentScale,[i,a]=this.pageDimensions,[s,r]=this.pageTranslation,o=t/l,c=e/l,d=this.x*i,u=this.y*a,h=this.width*i,m=this.height*a;switch(n){case 0:return[d+o+s,a-u-c-m+r,d+o+h+s,a-u-c+r];case 90:return[d+c+s,a-u+o+r,d+c+m+s,a-u+o+h+r];case 180:return[d-o-h+s,a-u+c+r,d-o+s,a-u+c+m+r];case 270:return[d-c-m+s,a-u-o-h+r,d-c+s,a-u-o+r];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[n,l,i,a]=t,s=i-n,r=a-l;switch(this.rotation){case 0:return[n,e-a,s,r];case 90:return[n,e-l,r,s];case 180:return[i,e-l,s,r];case 270:return[i,e-a,r,s];default:throw new Error("Invalid rotation")}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){ea(this,kc,!0)}disableEditMode(){ea(this,kc,!1)}isInEditMode(){return $i(this,kc)}shouldGetKeyboardEvents(){return $i(this,Yc)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:n,right:l}=this.getClientDimensions(),{innerHeight:i,innerWidth:a}=window;return e0&&t0}rebuild(){na(this,xc,ld).call(this)}rotate(t){}resize(){}serializeDeleted(){var t;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:(null==(t=this._initialData)?void 0:t.popupRef)||""}}serialize(t=!1,e=null){Ba("An editor must be serializable")}static async deserialize(t,e,n){const l=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:n});l.rotation=t.rotation,ea(l,Zc,t.accessibilityData);const[i,a]=l.pageDimensions,[s,r,o,c]=l.getRectInCurrentCoords(t.rect,a);return l.x=s/i,l.y=r/a,l.width=o/i,l.height=c/a,l}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||null!==this.serialize())}remove(){var t,e;if(null==(t=$i(this,gc))||t.abort(),ea(this,gc,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),$i(this,Cc)&&(clearTimeout($i(this,Cc)),ea(this,Cc,null)),na(this,xc,od).call(this),this.removeEditToolbar(),$i(this,Dc)){for(const t of $i(this,Dc).values())clearTimeout(t);ea(this,Dc,null)}this.parent=null,null==(e=$i(this,fc))||e.destroy(),ea(this,fc,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(na(this,xc,jc).call(this),$i(this,yc).classList.remove("hidden"),dr(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(e){if(!this.isResizable||e.target!==this.div||"Enter"!==e.key)return;this._uiManager.setSelected(this),ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const n=$i(this,yc).children;if(!$i(this,Nc)){ea(this,Nc,Array.from(n));const e=na(this,xc,id).bind(this),l=na(this,xc,ad).bind(this),i=this._uiManager._signal;for(const n of $i(this,Nc)){const a=n.getAttribute("data-resizer-name");n.setAttribute("role","spinbutton"),n.addEventListener("keydown",e,{signal:i}),n.addEventListener("blur",l,{signal:i}),n.addEventListener("focus",na(this,xc,sd).bind(this,a),{signal:i}),n.setAttribute("data-l10n-id",t._l10nResizer[a])}}const l=$i(this,Nc)[0];let i=0;for(const t of n){if(t===l)break;i++}const a=(360-this.rotation+this.parentRotation)%360/90*($i(this,Nc).length/4);if(a!==i){if(ai)for(let t=0;t{var t,e;null!=(t=this.div)&&t.classList.contains("selectedEditor")&&(null==(e=this._editToolbar)||e.show())}))}unselect(){var t,e,n,l,i;null==(t=$i(this,yc))||t.classList.add("hidden"),null==(e=this.div)||e.classList.remove("selectedEditor"),null!=(n=this.div)&&n.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),null==(l=this._editToolbar)||l.hide(),null==(i=$i(this,Rc))||i.toggleAltTextBadge(!0)}updateParams(t,e){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return $i(this,Jc)}set isEditing(t){ea(this,Jc,t),this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(t,e){ea(this,Qc,!0);const n=t/e,{style:l}=this.div;l.aspectRatio=n,l.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(e,n=!1){if(n){$i(this,Dc)||ea(this,Dc,new Map);const{action:n}=e;let l=$i(this,Dc).get(n);return l&&clearTimeout(l),l=setTimeout((()=>{this._reportTelemetry(e),$i(this,Dc).delete(n),0===$i(this,Dc).size&&ea(this,Dc,null)}),t._telemetryTimeout),void $i(this,Dc).set(n,l)}e.type||(e.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:e}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),ea(this,Sc,!1)}disable(){this.div&&(this.div.tabIndex=-1),ea(this,Sc,!0)}renderAnnotationElement(t){let e=t.container.querySelector(".annotationContent");if(e){if("CANVAS"===e.nodeName){const t=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.before(e)}}else e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);return e}resetAnnotationElement(t){const{firstChild:e}=t.container;"DIV"===(null==e?void 0:e.nodeName)&&e.classList.contains("annotationContent")&&e.remove()}};Zc=new WeakMap,Nc=new WeakMap,Rc=new WeakMap,Sc=new WeakMap,Wc=new WeakMap,Vc=new WeakMap,Qc=new WeakMap,yc=new WeakMap,Tc=new WeakMap,Mc=new WeakMap,gc=new WeakMap,Ec=new WeakMap,Gc=new WeakMap,Bc=new WeakMap,Jc=new WeakMap,kc=new WeakMap,Yc=new WeakMap,Cc=new WeakMap,Xc=new WeakMap,Ic=new WeakMap,Dc=new WeakMap,fc=new WeakMap,Lc=new WeakMap,wc=new WeakMap,xc=new WeakSet,zc=function([t,e],n,l){[n,l]=this.screenToPageTranslation(n,l),this.x+=n/t,this.y+=l/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},vc=new WeakSet,Oc=function(t,e,n){switch(n){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}},_c=function(t){switch(t){case 90:{const[t,e]=this.pageDimensions;return[0,-t/e,e/t,0]}case 180:return[-1,0,0,-1];case 270:{const[t,e]=this.pageDimensions;return[0,t/e,-e/t,0]}default:return[1,0,0,1]}},jc=function(){if($i(this,yc))return;ea(this,yc,document.createElement("div")),$i(this,yc).classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const n of t){const t=document.createElement("div");$i(this,yc).append(t),t.classList.add("resizer",n),t.setAttribute("data-resizer-name",n),t.addEventListener("pointerdown",na(this,xc,Kc).bind(this,n),{signal:e}),t.addEventListener("contextmenu",Ws,{signal:e}),t.tabIndex=-1}this.div.prepend($i(this,yc))},Kc=function(t,e){var n;e.preventDefault();const{isMac:l}=Aa.platform;if(0!==e.button||e.ctrlKey&&l)return;null==(n=$i(this,Rc))||n.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,ea(this,Tc,[e.screenX,e.screenY]);const a=new AbortController,s=this._uiManager.combinedSignal(a);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",na(this,xc,Hc).bind(this,t),{passive:!0,capture:!0,signal:s}),window.addEventListener("touchmove",Vs,{passive:!1,signal:s}),window.addEventListener("contextmenu",Ws,{signal:s}),ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const r=this.parent.div.style.cursor,o=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const c=()=>{var t;a.abort(),this.parent.togglePointerEvents(!0),null==(t=$i(this,Rc))||t.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=r,this.div.style.cursor=o,na(this,xc,Ac).call(this)};window.addEventListener("pointerup",c,{signal:s}),window.addEventListener("blur",c,{signal:s})},Pc=function(t,e,n,l){this.width=n,this.height=l,this.x=t,this.y=e;const[i,a]=this.parentDimensions;this.setDims(i*n,a*l),this.fixAndSetPosition(),this._onResized()},Ac=function(){if(!$i(this,Mc))return;const{savedX:t,savedY:e,savedWidth:n,savedHeight:l}=$i(this,Mc);ea(this,Mc,null);const i=this.x,a=this.y,s=this.width,r=this.height;i===t&&a===e&&s===n&&r===l||this.addCommands({cmd:na(this,xc,Pc).bind(this,i,a,s,r),undo:na(this,xc,Pc).bind(this,t,e,n,l),mustExec:!0})},Hc=function(t,e){const[n,l]=this.parentDimensions,i=this.x,a=this.y,s=this.width,r=this.height,o=cd.MIN_SIZE/n,c=cd.MIN_SIZE/l,d=na(this,xc,_c).call(this,this.rotation),u=(t,e)=>[d[0]*t+d[2]*e,d[1]*t+d[3]*e],h=na(this,xc,_c).call(this,360-this.rotation),m=(t,e)=>[h[0]*t+h[2]*e,h[1]*t+h[3]*e];let U,p,F=!1,b=!1;switch(t){case"topLeft":F=!0,U=(t,e)=>[0,0],p=(t,e)=>[t,e];break;case"topMiddle":U=(t,e)=>[t/2,0],p=(t,e)=>[t/2,e];break;case"topRight":F=!0,U=(t,e)=>[t,0],p=(t,e)=>[0,e];break;case"middleRight":b=!0,U=(t,e)=>[t,e/2],p=(t,e)=>[0,e/2];break;case"bottomRight":F=!0,U=(t,e)=>[t,e],p=(t,e)=>[0,0];break;case"bottomMiddle":U=(t,e)=>[t/2,e],p=(t,e)=>[t/2,0];break;case"bottomLeft":F=!0,U=(t,e)=>[0,e],p=(t,e)=>[t,0];break;case"middleLeft":b=!0,U=(t,e)=>[0,e/2],p=(t,e)=>[t,e/2];break}const Z=U(s,r),N=p(s,r);let R=u(...N);const S=cd._round(i+R[0]),W=cd._round(a+R[1]);let V,Q,y=1,T=1;if(e.fromKeyboard)({deltaX:V,deltaY:Q}=e);else{const{screenX:t,screenY:n}=e,[l,i]=$i(this,Tc);[V,Q]=this.screenToPageTranslation(t-l,n-i),$i(this,Tc)[0]=t,$i(this,Tc)[1]=n}if([V,Q]=m(V/n,Q/l),F){const t=Math.hypot(s,r);y=T=Math.max(Math.min(Math.hypot(N[0]-Z[0]-V,N[1]-Z[1]-Q)/t,1/s,1/r),o/s,c/r)}else b?y=Math.max(o,Math.min(1,Math.abs(N[0]-Z[0]-V)))/s:T=Math.max(c,Math.min(1,Math.abs(N[1]-Z[1]-Q)))/r;const M=cd._round(s*y),g=cd._round(r*T);R=u(...p(M,g));const E=S-R[0],G=W-R[1];$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]),this.width=M,this.height=g,this.x=E,this.y=G,this.setDims(n*M,l*g),this.fixAndSetPosition(),this._onResizing()},qc=function(){var t;ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),null==(t=$i(this,Rc))||t.toggle(!1),this.parent.togglePointerEvents(!1)},$c=function(t,e,n){let l=n/e*.7+1-.7;if(1===l)return;const i=na(this,xc,_c).call(this,this.rotation),a=(t,e)=>[i[0]*t+i[2]*e,i[1]*t+i[3]*e],[s,r]=this.parentDimensions,o=this.x,c=this.y,d=this.width,u=this.height,h=cd.MIN_SIZE/s,m=cd.MIN_SIZE/r;l=Math.max(Math.min(l,1/d,1/u),h/d,m/u);const U=cd._round(d*l),p=cd._round(u*l);if(U===d&&p===u)return;$i(this,Bc)||ea(this,Bc,[o,c,d,u]);const F=a(d/2,u/2),b=cd._round(o+F[0]),Z=cd._round(c+F[1]),N=a(U/2,p/2);this.x=b-N[0],this.y=Z-N[1],this.width=U,this.height=p,this.setDims(s*U,r*p),this.fixAndSetPosition(),this._onResizing()},td=function(){var t;null==(t=$i(this,Rc))||t.toggle(!0),this.parent.togglePointerEvents(!0),na(this,xc,Ac).call(this)},ed=function(t){const{isMac:e}=Aa.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)},nd=function(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let n=!1;const l=new AbortController,i=this._uiManager.combinedSignal(l),a={capture:!0,passive:!1,signal:i},s=t=>{l.abort(),ea(this,Wc,null),ea(this,Gc,!1),this._uiManager.endDragSession()||na(this,xc,ed).call(this,t),n&&this._onStopDragging()};e&&(ea(this,Xc,t.clientX),ea(this,Ic,t.clientY),ea(this,Wc,t.pointerId),ea(this,Vc,t.pointerType),window.addEventListener("pointermove",(t=>{n||(n=!0,this._onStartDragging());const{clientX:e,clientY:l,pointerId:i}=t;if(i!==$i(this,Wc))return void Vs(t);const[a,s]=this.screenToPageTranslation(e-$i(this,Xc),l-$i(this,Ic));ea(this,Xc,e),ea(this,Ic,l),this._uiManager.dragSelectedEditors(a,s)}),a),window.addEventListener("touchmove",Vs,a),window.addEventListener("pointerdown",(t=>{t.pointerType===$i(this,Vc)&&($i(this,fc)||t.isPrimary)&&s(t),Vs(t)}),a));const r=t=>{$i(this,Wc)&&$i(this,Wc)!==t.pointerId?Vs(t):s(t)};window.addEventListener("pointerup",r,{signal:i}),window.addEventListener("blur",r,{signal:i})},ld=function(){if($i(this,gc)||!this.div)return;ea(this,gc,new AbortController);const t=this._uiManager.combinedSignal($i(this,gc));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})},id=function(t){cd._resizerKeyboardManager.exec(this,t)},ad=function(t){var e;$i(this,Yc)&&(null==(e=t.relatedTarget)?void 0:e.parentNode)!==$i(this,yc)&&na(this,xc,od).call(this)},sd=function(t){ea(this,Ec,$i(this,Yc)?t:"")},rd=function(t){if($i(this,Nc))for(const e of $i(this,Nc))e.tabIndex=t},od=function(){ea(this,Yc,!1),na(this,xc,rd).call(this,-1),na(this,xc,Ac).call(this)},ta(cd,vc),Hi(cd,"_l10n",null),Hi(cd,"_l10nResizer",null),Hi(cd,"_borderLineWidth",-1),Hi(cd,"_colorManager",new Vr),Hi(cd,"_zIndex",1),Hi(cd,"_telemetryTimeout",1e3);let dd=cd;class ud extends dd{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const hd=3285377520,md=4294901760,Ud=65535;class pd{constructor(t){this.h1=t?4294967295&t:hd,this.h2=t?4294967295&t:hd}update(t){let e,n;if("string"==typeof t){e=new Uint8Array(2*t.length),n=0;for(let l=0,i=t.length;l>>8,e[n++]=255&i)}}else{if(!ArrayBuffer.isView(t))throw new Error("Invalid data format, must be a string or TypedArray.");e=t.slice(),n=e.byteLength}const l=n>>2,i=n-4*l,a=new Uint32Array(e.buffer,0,l);let s=0,r=0,o=this.h1,c=this.h2;const d=3432918353,u=461845907,h=d&Ud,m=u&Ud;for(let U=0;U>>17,s=s*u&md|s*m&Ud,o^=s,o=o<<13|o>>>19,o=5*o+3864292196):(r=a[U],r=r*d&md|r*h&Ud,r=r<<15|r>>>17,r=r*u&md|r*m&Ud,c^=r,c=c<<13|c>>>19,c=5*c+3864292196);switch(s=0,i){case 3:s^=e[4*l+2]<<16;case 2:s^=e[4*l+1]<<8;case 1:s^=e[4*l],s=s*d&md|s*h&Ud,s=s<<15|s>>>17,s=s*u&md|s*m&Ud,1&l?o^=s:c^=s}this.h1=o,this.h2=c}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=3981806797*t&md|36045*t&Ud,e=4283543511*e&md|(2950163797*(e<<16|t>>>16)&md)>>>16,t^=e>>>1,t=444984403*t&md|60499*t&Ud,e=3301882366*e&md|(3120437893*(e<<16|t>>>16)&md)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const Fd=Object.freeze({map:null,hash:"",transfer:void 0});var bd,Zd,Nd,Rd,Sd,Wd,Vd;class Qd{constructor(){ta(this,Rd),ta(this,bd,!1),ta(this,Zd,null),ta(this,Nd,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(t,e){const n=$i(this,Nd).get(t);return void 0===n?e:Object.assign(e,n)}getRawValue(t){return $i(this,Nd).get(t)}remove(t){if($i(this,Nd).delete(t),0===$i(this,Nd).size&&this.resetModified(),"function"==typeof this.onAnnotationEditor){for(const t of $i(this,Nd).values())if(t instanceof dd)return;this.onAnnotationEditor(null)}}setValue(t,e){const n=$i(this,Nd).get(t);let l=!1;if(void 0!==n)for(const[i,a]of Object.entries(e))n[i]!==a&&(l=!0,n[i]=a);else l=!0,$i(this,Nd).set(t,e);l&&na(this,Rd,Sd).call(this),e instanceof dd&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(e.constructor._type)}has(t){return $i(this,Nd).has(t)}getAll(){return $i(this,Nd).size>0?ja($i(this,Nd)):null}setAll(t){for(const[e,n]of Object.entries(t))this.setValue(e,n)}get size(){return $i(this,Nd).size}resetModified(){$i(this,bd)&&(ea(this,bd,!1),"function"==typeof this.onResetModified&&this.onResetModified())}get print(){return new yd(this)}get serializable(){if(0===$i(this,Nd).size)return Fd;const t=new Map,e=new pd,n=[],l=Object.create(null);let i=!1;for(const[a,s]of $i(this,Nd)){const n=s instanceof dd?s.serialize(!1,l):s;n&&(t.set(a,n),e.update(`${a}:${JSON.stringify(n)}`),i||(i=!!n.bitmap))}if(i)for(const a of t.values())a.bitmap&&n.push(a.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:n}:Fd}get editorStats(){let t=null;const e=new Map;for(const n of $i(this,Nd).values()){if(!(n instanceof dd))continue;const l=n.telemetryFinalData;if(!l)continue;const{type:i}=l;e.has(i)||e.set(i,Object.getPrototypeOf(n).constructor),t||(t=Object.create(null));const a=t[i]||(t[i]=new Map);for(const[t,e]of Object.entries(l)){if("type"===t)continue;let n=a.get(t);n||(n=new Map,a.set(t,n));const l=n.get(e)??0;n.set(e,l+1)}}for(const[n,l]of e)t[n]=l.computeTelemetryFinalData(t[n]);return t}resetModifiedIds(){ea(this,Zd,null)}get modifiedIds(){if($i(this,Zd))return $i(this,Zd);const t=[];for(const e of $i(this,Nd).values())!(e instanceof dd)||!e.annotationElementId||!e.serialize()||t.push(e.annotationElementId);return ea(this,Zd,{ids:new Set(t),hash:t.join(",")})}}bd=new WeakMap,Zd=new WeakMap,Nd=new WeakMap,Rd=new WeakSet,Sd=function(){$i(this,bd)||(ea(this,bd,!0),"function"==typeof this.onSetModified&&this.onSetModified())};class yd extends Qd{constructor(t){super(),ta(this,Wd);const{map:e,hash:n,transfer:l}=t.serializable,i=structuredClone(e,l?{transfer:l}:null);ea(this,Wd,{map:i,hash:n,transfer:l})}get print(){Ba("Should not call PrintAnnotationStorage.print")}get serializable(){return $i(this,Wd)}get modifiedIds(){return Ca(this,"modifiedIds",{ids:new Set,hash:""})}}Wd=new WeakMap;class Td{constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){ta(this,Vd,new Set),this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear(),$i(this,Vd).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,_inspectFont:e}){if(t&&!$i(this,Vd).has(t.loadedName)){if(Ja(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:n,src:l,style:i}=t,a=new FontFace(n,l,i);this.addNativeFontFace(a);try{await a.load(),$i(this,Vd).add(n),null==e||e(t)}catch{Ga(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}Ba("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo)return void await this.loadSystemFont(t);if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(eG){throw Ga(`Failed to load font '${e.family}': '${eG}'.`),t.disableFontFace=!0,eG}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise((e=>{const n=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,n)}))}}get isFontLoadingAPISupported(){var t;const e=!(null==(t=this._document)||!t.fonts);return Ca(this,"isFontLoadingAPISupported",e)}get isSyncFontLoadingSupported(){let t=!1;return(oa||typeof navigator<"u"&&"string"==typeof(null==navigator?void 0:navigator.userAgent)&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(t=!0),Ca(this,"isSyncFontLoadingSupported",t)}_queueLoadingCallback(t){function e(){for(Ja(!l.done,"completeRequest() cannot be called twice."),l.done=!0;n.length>0&&n[0].done;){const t=n.shift();setTimeout(t.callback,0)}}const{loadingRequests:n}=this,l={done:!1,complete:e,callback:t};return n.push(l),l}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Ca(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function n(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function l(t,e,n,l){const i=t.substring(0,e),a=t.substring(e+n);return i+l+a}let i,a;const s=this._document.createElement("canvas");s.width=1,s.height=1;const r=s.getContext("2d");let o=0;function c(t,e){if(++o>30)return Ga("Load test font never loaded."),void e();r.font="30px "+t,r.fillText(".",0,20),r.getImageData(0,0,1,1).data[3]>0?e():setTimeout(c.bind(null,t,e))}const d=`lt${Date.now()}${this.loadTestFontId++}`;let u=this._loadTestFont;u=l(u,976,d.length,d);const h=16,m=1482184792;let U=n(u,h);for(i=0,a=d.length-3;i{b.remove(),e.complete()}))}}Vd=new WeakMap;class Md{constructor(t,{disableFontFace:e=!1,fontExtraProperties:n=!1,inspectFont:l=null}){this.compiledGlyphs=Object.create(null);for(const i in t)this[i]=t[i];this.disableFontFace=!0===e,this.fontExtraProperties=!0===n,this._inspectFont=l}createNativeFontFace(){var t;if(!this.data||this.disableFontFace)return null;let e;if(this.cssFontInfo){const t={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`),e=new FontFace(this.cssFontInfo.fontFamily,this.data,t)}else e=new FontFace(this.loadedName,this.data,{});return null==(t=this._inspectFont)||t.call(this,this),e}createFontFaceRule(){var t;if(!this.data||this.disableFontFace)return null;const e=`url(data:${this.mimetype};base64,${cs(this.data)});`;let n;if(this.cssFontInfo){let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),n=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${e}}`}else n=`@font-face {font-family:"${this.loadedName}";src:${e}}`;return null==(t=this._inspectFont)||t.call(this,this,e),n}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];const n=this.loadedName+"_path_"+e;let l;try{l=t.get(n)}catch(a){Ga(`getPathGenerator - ignoring character: "${a}".`)}const i=new Path2D(l||"");return this.fontExtraProperties||t.delete(n),this.compiledGlyphs[e]=i}}const gd={DATA:1,ERROR:2},Ed={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Gd(){}function Bd(t){if(t instanceof za||t instanceof fa||t instanceof La||t instanceof Ia||t instanceof wa||t instanceof Da)return t;switch(t instanceof Error||"object"==typeof t&&null!==t||Ba('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),t.name){case"AbortException":return new za(t.message);case"InvalidPDFException":return new fa(t.message);case"MissingPDFException":return new La(t.message);case"PasswordException":return new Ia(t.message,t.code);case"UnexpectedResponseException":return new wa(t.message,t.status);case"UnknownErrorException":return new Da(t.message,t.details)}return new Da(t.message,t.toString())}var Jd,kd,Yd,Cd,Xd,Id,Dd,fd,Ld,wd,xd,zd,vd,Od,_d,jd,Kd,Pd,Ad,Hd,qd,$d,tu,eu,nu,lu,iu;class au{constructor(t,e,n){ta(this,kd),ta(this,Jd,new AbortController),this.sourceName=t,this.targetName=e,this.comObj=n,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),n.addEventListener("message",na(this,kd,Yd).bind(this),{signal:$i(this,Jd).signal})}on(t,e){const n=this.actionHandler;if(n[t])throw new Error(`There is already an actionName called "${t}"`);n[t]=e}send(t,e,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},n)}sendWithPromise(t,e,n){const l=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[l]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:l,data:e},n)}catch(a){i.reject(a)}return i.promise}sendWithStream(t,e,n,l){const i=this.streamId++,a=this.sourceName,s=this.targetName,r=this.comObj;return new ReadableStream({start:n=>{const o=Promise.withResolvers();return this.streamControllers[i]={controller:n,startCall:o,pullCall:null,cancelCall:null,isClosed:!1},r.postMessage({sourceName:a,targetName:s,action:t,streamId:i,data:e,desiredSize:n.desiredSize},l),o.promise},pull:t=>{const e=Promise.withResolvers();return this.streamControllers[i].pullCall=e,r.postMessage({sourceName:a,targetName:s,stream:Ed.PULL,streamId:i,desiredSize:t.desiredSize}),e.promise},cancel:t=>{Ja(t instanceof Error,"cancel must have a valid reason");const e=Promise.withResolvers();return this.streamControllers[i].cancelCall=e,this.streamControllers[i].isClosed=!0,r.postMessage({sourceName:a,targetName:s,stream:Ed.CANCEL,streamId:i,reason:Bd(t)}),e.promise}},n)}destroy(){var t;null==(t=$i(this,Jd))||t.abort(),ea(this,Jd,null)}}Jd=new WeakMap,kd=new WeakSet,Yd=function({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream)return void na(this,kd,Xd).call(this,t);if(t.callback){const e=t.callbackId,n=this.callbackCapabilities[e];if(!n)throw new Error(`Cannot resolve callback ${e}`);if(delete this.callbackCapabilities[e],t.callback===gd.DATA)n.resolve(t.data);else{if(t.callback!==gd.ERROR)throw new Error("Unexpected callback case");n.reject(Bd(t.reason))}return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const n=this.sourceName,l=t.sourceName,i=this.comObj;Promise.try(e,t.data).then((function(e){i.postMessage({sourceName:n,targetName:l,callback:gd.DATA,callbackId:t.callbackId,data:e})}),(function(e){i.postMessage({sourceName:n,targetName:l,callback:gd.ERROR,callbackId:t.callbackId,reason:Bd(e)})}))}else t.streamId?na(this,kd,Cd).call(this,t):e(t.data)},Cd=function(t){const e=t.streamId,n=this.sourceName,l=t.sourceName,i=this.comObj,a=this,s=this.actionHandler[t.action],r={enqueue(t,a=1,s){if(this.isCancelled)return;const r=this.desiredSize;this.desiredSize-=a,r>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:n,targetName:l,stream:Ed.ENQUEUE,streamId:e,chunk:t},s)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:l,stream:Ed.CLOSE,streamId:e}),delete a.streamSinks[e])},error(t){Ja(t instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:l,stream:Ed.ERROR,streamId:e,reason:Bd(t)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};r.sinkCapability.resolve(),r.ready=r.sinkCapability.promise,this.streamSinks[e]=r,Promise.try(s,t.data,r).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.START_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.START_COMPLETE,streamId:e,reason:Bd(t)})}))},Xd=function(t){const e=t.streamId,n=this.sourceName,l=t.sourceName,i=this.comObj,a=this.streamControllers[e],s=this.streamSinks[e];switch(t.stream){case Ed.START_COMPLETE:t.success?a.startCall.resolve():a.startCall.reject(Bd(t.reason));break;case Ed.PULL_COMPLETE:t.success?a.pullCall.resolve():a.pullCall.reject(Bd(t.reason));break;case Ed.PULL:if(!s){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,success:!0});break}s.desiredSize<=0&&t.desiredSize>0&&s.sinkCapability.resolve(),s.desiredSize=t.desiredSize,Promise.try(s.onPull||Gd).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,reason:Bd(t)})}));break;case Ed.ENQUEUE:if(Ja(a,"enqueue should have stream controller"),a.isClosed)break;a.controller.enqueue(t.chunk);break;case Ed.CLOSE:if(Ja(a,"close should have stream controller"),a.isClosed)break;a.isClosed=!0,a.controller.close(),na(this,kd,Id).call(this,a,e);break;case Ed.ERROR:Ja(a,"error should have stream controller"),a.controller.error(Bd(t.reason)),na(this,kd,Id).call(this,a,e);break;case Ed.CANCEL_COMPLETE:t.success?a.cancelCall.resolve():a.cancelCall.reject(Bd(t.reason)),na(this,kd,Id).call(this,a,e);break;case Ed.CANCEL:if(!s)break;const r=Bd(t.reason);Promise.try(s.onCancel||Gd,r).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.CANCEL_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.CANCEL_COMPLETE,streamId:e,reason:Bd(t)})})),s.sinkCapability.reject(r),s.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}},Id=async function(t,e){var n,l,i;await Promise.allSettled([null==(n=t.startCall)?void 0:n.promise,null==(l=t.pullCall)?void 0:l.promise,null==(i=t.cancelCall)?void 0:i.promise]),delete this.streamControllers[e]};class su{constructor({enableHWA:t=!1}){ta(this,Dd,!1),ea(this,Dd,t)}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const n=this._createCanvas(t,e);return{canvas:n,context:n.getContext("2d",{willReadFrequently:!$i(this,Dd)})}}reset(t,e,n){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||n<=0)throw new Error("Invalid canvas size");t.canvas.width=e,t.canvas.height=n}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0,t.canvas.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){Ba("Abstract method `_createCanvas` called.")}}Dd=new WeakMap;class ru extends su{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const n=this._document.createElement("canvas");return n.width=t,n.height=e,n}}class ou{constructor({baseUrl:t=null,isCompressed:e=!0}){this.baseUrl=t,this.isCompressed=e}async fetch({name:t}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!t)throw new Error("CMap name must be specified.");const e=this.baseUrl+t+(this.isCompressed?".bcmap":"");return this._fetch(e).then((t=>({cMapData:t,isCompressed:this.isCompressed}))).catch((t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${e}`)}))}async _fetch(t){Ba("Abstract method `_fetch` called.")}}class cu extends ou{async _fetch(t){const e=await ms(t,this.isCompressed?"arraybuffer":"text");return e instanceof ArrayBuffer?new Uint8Array(e):Oa(e)}}sa(4520);class du{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addHighlightHCMFilter(t,e,n,l,i){return"none"}destroy(t=!1){}}class uu extends du{constructor({docId:t,ownerDocument:e=globalThis.document}){super(),ta(this,_d),ta(this,fd),ta(this,Ld),ta(this,wd),ta(this,xd),ta(this,zd),ta(this,vd),ta(this,Od,0),ea(this,xd,t),ea(this,zd,e)}addFilter(t){if(!t)return"none";let e=$i(this,_d,jd).get(t);if(e)return e;const[n,l,i]=na(this,_d,Ad).call(this,t),a=1===t.length?n:`${n}${l}${i}`;if(e=$i(this,_d,jd).get(a),e)return $i(this,_d,jd).set(t,e),e;const s=`g_${$i(this,xd)}_transfer_map_${la(this,Od)._++}`,r=na(this,_d,Hd).call(this,s);$i(this,_d,jd).set(t,r),$i(this,_d,jd).set(a,r);const o=na(this,_d,tu).call(this,s);return na(this,_d,nu).call(this,n,l,i,o),r}addHCMFilter(t,e){var n;const l=`${t}-${e}`,i="base";let a=$i(this,_d,Kd).get(i);if((null==a?void 0:a.key)===l||(a?(null==(n=a.filter)||n.remove(),a.key=l,a.url="none",a.filter=null):(a={key:l,url:"none",filter:null},$i(this,_d,Kd).set(i,a)),!t||!e))return a.url;const s=na(this,_d,iu).call(this,t);t=ns.makeHexColor(...s);const r=na(this,_d,iu).call(this,e);if(e=ns.makeHexColor(...r),$i(this,_d,Pd).style.color="","#000000"===t&&"#ffffff"===e||t===e)return a.url;const o=new Array(256);for(let m=0;m<=255;m++){const t=m/255;o[m]=t<=.03928?t/12.92:((t+.055)/1.055)**2.4}const c=o.join(","),d=`g_${$i(this,xd)}_hcm_filter`,u=a.filter=na(this,_d,tu).call(this,d);na(this,_d,nu).call(this,c,c,c,u),na(this,_d,$d).call(this,u);const h=(t,e)=>{const n=s[t]/255,l=r[t]/255,i=new Array(e+1);for(let a=0;a<=e;a++)i[a]=n+a/e*(l-n);return i.join(",")};return na(this,_d,nu).call(this,h(0,5),h(1,5),h(2,5),u),a.url=na(this,_d,Hd).call(this,d),a.url}addAlphaFilter(t){let e=$i(this,_d,jd).get(t);if(e)return e;const[n]=na(this,_d,Ad).call(this,[t]),l=`alpha_${n}`;if(e=$i(this,_d,jd).get(l),e)return $i(this,_d,jd).set(t,e),e;const i=`g_${$i(this,xd)}_alpha_map_${la(this,Od)._++}`,a=na(this,_d,Hd).call(this,i);$i(this,_d,jd).set(t,a),$i(this,_d,jd).set(l,a);const s=na(this,_d,tu).call(this,i);return na(this,_d,lu).call(this,n,s),a}addLuminosityFilter(t){let e,n,l=$i(this,_d,jd).get(t||"luminosity");if(l)return l;if(t?([e]=na(this,_d,Ad).call(this,[t]),n=`luminosity_${e}`):n="luminosity",l=$i(this,_d,jd).get(n),l)return $i(this,_d,jd).set(t,l),l;const i=`g_${$i(this,xd)}_luminosity_map_${la(this,Od)._++}`,a=na(this,_d,Hd).call(this,i);$i(this,_d,jd).set(t,a),$i(this,_d,jd).set(n,a);const s=na(this,_d,tu).call(this,i);return na(this,_d,qd).call(this,s),t&&na(this,_d,lu).call(this,e,s),a}addHighlightHCMFilter(t,e,n,l,i){var a;const s=`${e}-${n}-${l}-${i}`;let r=$i(this,_d,Kd).get(t);if((null==r?void 0:r.key)===s||(r?(null==(a=r.filter)||a.remove(),r.key=s,r.url="none",r.filter=null):(r={key:s,url:"none",filter:null},$i(this,_d,Kd).set(t,r)),!e||!n))return r.url;const[o,c]=[e,n].map(na(this,_d,iu).bind(this));let d=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[h,m]=[l,i].map(na(this,_d,iu).bind(this));u{const l=new Array(256),i=(u-d)/n,a=t/255,s=(e-t)/(255*n);let r=0;for(let o=0;o<=n;o++){const t=Math.round(d+o*i),e=a+o*s;for(let n=r;n<=t;n++)l[n]=e;r=t+1}for(let o=r;o<256;o++)l[o]=l[r-1];return l.join(",")},p=`g_${$i(this,xd)}_hcm_${t}_filter`,F=r.filter=na(this,_d,tu).call(this,p);return na(this,_d,$d).call(this,F),na(this,_d,nu).call(this,U(h[0],m[0],5),U(h[1],m[1],5),U(h[2],m[2],5),F),r.url=na(this,_d,Hd).call(this,p),r.url}destroy(t=!1){var e,n,l,i;t&&null!=(e=$i(this,vd))&&e.size||(null==(n=$i(this,wd))||n.parentNode.parentNode.remove(),ea(this,wd,null),null==(l=$i(this,Ld))||l.clear(),ea(this,Ld,null),null==(i=$i(this,vd))||i.clear(),ea(this,vd,null),ea(this,Od,0))}}fd=new WeakMap,Ld=new WeakMap,wd=new WeakMap,xd=new WeakMap,zd=new WeakMap,vd=new WeakMap,Od=new WeakMap,_d=new WeakSet,jd=function(){return $i(this,Ld)||ea(this,Ld,new Map)},Kd=function(){return $i(this,vd)||ea(this,vd,new Map)},Pd=function(){if(!$i(this,wd)){const t=$i(this,zd).createElement("div"),{style:e}=t;e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const n=$i(this,zd).createElementNS(ds,"svg");n.setAttribute("width",0),n.setAttribute("height",0),ea(this,wd,$i(this,zd).createElementNS(ds,"defs")),t.append(n),n.append($i(this,wd)),$i(this,zd).body.append(t)}return $i(this,wd)},Ad=function(t){if(1===t.length){const e=t[0],n=new Array(256);for(let t=0;t<256;t++)n[t]=e[t]/255;const l=n.join(",");return[l,l,l]}const[e,n,l]=t,i=new Array(256),a=new Array(256),s=new Array(256);for(let r=0;r<256;r++)i[r]=e[r]/255,a[r]=n[r]/255,s[r]=l[r]/255;return[i.join(","),a.join(","),s.join(",")]},Hd=function(t){if(void 0===$i(this,fd)){ea(this,fd,"");const t=$i(this,zd).URL;t!==$i(this,zd).baseURI&&(Fs(t)?Ga('#createUrl: ignore "data:"-URL for performance reasons.'):ea(this,fd,t.split("#",1)[0]))}return`url(${$i(this,fd)}#${t})`},qd=function(t){const e=$i(this,zd).createElementNS(ds,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)},$d=function(t){const e=$i(this,zd).createElementNS(ds,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)},tu=function(t){const e=$i(this,zd).createElementNS(ds,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),$i(this,_d,Pd).append(e),e},eu=function(t,e,n){const l=$i(this,zd).createElementNS(ds,e);l.setAttribute("type","discrete"),l.setAttribute("tableValues",n),t.append(l)},nu=function(t,e,n,l){const i=$i(this,zd).createElementNS(ds,"feComponentTransfer");l.append(i),na(this,_d,eu).call(this,i,"feFuncR",t),na(this,_d,eu).call(this,i,"feFuncG",e),na(this,_d,eu).call(this,i,"feFuncB",n)},lu=function(t,e){const n=$i(this,zd).createElementNS(ds,"feComponentTransfer");e.append(n),na(this,_d,eu).call(this,n,"feFuncA",t)},iu=function(t){return $i(this,_d,Pd).style.color=t,gs(getComputedStyle($i(this,_d,Pd)).getPropertyValue("color"))};class hu{constructor({baseUrl:t=null}){this.baseUrl=t}async fetch({filename:t}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!t)throw new Error("Font filename must be specified.");const e=`${this.baseUrl}${t}`;return this._fetch(e).catch((t=>{throw new Error(`Unable to load font data at: ${e}`)}))}async _fetch(t){Ba("Abstract method `_fetch` called.")}}class mu extends hu{async _fetch(t){const e=await ms(t,"arraybuffer");return new Uint8Array(e)}}if(oa){let t;try{const e=process.getBuiltinModule("module").createRequire("file:///D:/vue/newfront/node_modules/vue-pdf-embed/dist/index.mjs");try{t=e("@napi-rs/canvas")}catch(TB){Ga(`Cannot load "@napi-rs/canvas" package: "${TB}".`)}}catch(MB){Ga(`Cannot access the \`require\` function: "${MB}".`)}globalThis.DOMMatrix||(null!=t&&t.DOMMatrix?globalThis.DOMMatrix=t.DOMMatrix:Ga("Cannot polyfill `DOMMatrix`, rendering may be broken.")),globalThis.ImageData||(null!=t&&t.ImageData?globalThis.ImageData=t.ImageData:Ga("Cannot polyfill `ImageData`, rendering may be broken.")),globalThis.Path2D||(null!=t&&t.Path2D?globalThis.Path2D=t.Path2D:Ga("Cannot polyfill `Path2D`, rendering may be broken."))}async function Uu(t){const e=await process.getBuiltinModule("fs").promises.readFile(t);return new Uint8Array(e)}class pu extends du{}class Fu extends su{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire("file:///D:/vue/newfront/node_modules/vue-pdf-embed/dist/index.mjs")("@napi-rs/canvas").createCanvas(t,e)}}class bu extends ou{async _fetch(t){return Uu(t)}}class Zu extends hu{async _fetch(t){return Uu(t)}}const Nu={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function Ru(t,e){if(!e)return;const n=e[2]-e[0],l=e[3]-e[1],i=new Path2D;i.rect(e[0],e[1],n,l),t.clip(i)}class Su{getPattern(){Ba("Abstract method `getPattern` called.")}}class Wu extends Su{constructor(t){super(),this._type=t[1],this._bbox=t[2],this._colorStops=t[3],this._p0=t[4],this._p1=t[5],this._r0=t[6],this._r1=t[7],this.matrix=null}_createGradient(t){let e;"axial"===this._type?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const n of this._colorStops)e.addColorStop(n[0],n[1]);return e}getPattern(t,e,n,l){let i;if(l===Nu.STROKE||l===Nu.FILL){const a=e.current.getClippedPathBoundingBox(l,Gs(t))||[0,0,0,0],s=Math.ceil(a[2]-a[0])||1,r=Math.ceil(a[3]-a[1])||1,o=e.cachedCanvases.getCanvas("pattern",s,r),c=o.context;c.clearRect(0,0,c.canvas.width,c.canvas.height),c.beginPath(),c.rect(0,0,c.canvas.width,c.canvas.height),c.translate(-a[0],-a[1]),n=ns.transform(n,[1,0,0,1,a[0],a[1]]),c.transform(...e.baseTransform),this.matrix&&c.transform(...this.matrix),Ru(c,this._bbox),c.fillStyle=this._createGradient(c),c.fill(),i=t.createPattern(o.canvas,"no-repeat");const d=new DOMMatrix(n);i.setTransform(d)}else Ru(t,this._bbox),i=this._createGradient(t);return i}}function Vu(t,e,n,l,i,a,s,r){const o=e.coords,c=e.colors,d=t.data,u=4*t.width;let h;o[n+1]>o[l+1]&&(h=n,n=l,l=h,h=a,a=s,s=h),o[l+1]>o[i+1]&&(h=l,l=i,i=h,h=s,s=r,r=h),o[n+1]>o[l+1]&&(h=n,n=l,l=h,h=a,a=s,s=h);const m=(o[n]+e.offsetX)*e.scaleX,U=(o[n+1]+e.offsetY)*e.scaleY,p=(o[l]+e.offsetX)*e.scaleX,F=(o[l+1]+e.offsetY)*e.scaleY,b=(o[i]+e.offsetX)*e.scaleX,Z=(o[i+1]+e.offsetY)*e.scaleY;if(U>=Z)return;const N=c[a],R=c[a+1],S=c[a+2],W=c[s],V=c[s+1],Q=c[s+2],y=c[r],T=c[r+1],M=c[r+2],g=Math.round(U),E=Math.round(Z);let G,B,J,k,Y,C,X,I;for(let D=g;D<=E;D++){if(DZ?1:F===Z?0:(F-D)/(F-Z),G=p-(p-b)*t,B=W-(W-y)*t,J=V-(V-T)*t,k=Q-(Q-M)*t}let t;t=DZ?1:(U-D)/(U-Z),Y=m-(m-b)*t,C=N-(N-y)*t,X=R-(R-T)*t,I=S-(S-M)*t;const e=Math.round(Math.min(G,Y)),n=Math.round(Math.max(G,Y));let l=u*D+4*e;for(let i=e;i<=n;i++)t=(G-i)/(G-Y),t<0?t=0:t>1&&(t=1),d[l++]=B-(B-C)*t|0,d[l++]=J-(J-X)*t|0,d[l++]=k-(k-I)*t|0,d[l++]=255}}function Qu(t,e,n){const l=e.coords,i=e.colors;let a,s;switch(e.type){case"lattice":const r=e.verticesPerRow,o=Math.floor(l.length/r)-1,c=r-1;for(a=0;a=y?N=r:S=!0,Q>=T?R=o:W=!0;const M=this.getSizeAndScale(N,this.ctx.canvas.width,b),g=this.getSizeAndScale(R,this.ctx.canvas.height,Z),E=t.cachedCanvases.getCanvas("pattern",M.size,g.size),G=E.context,B=s.createCanvasGraphics(G);if(B.groupLevel=t.groupLevel,this.setFillAndStrokeStyleToContext(B,l,a),G.translate(-M.scale*c,-g.scale*d),B.transform(M.scale,0,0,g.scale,0,0),G.save(),this.clipBbox(B,c,d,u,h),B.baseTransform=Gs(B.ctx),B.executeOperatorList(n),B.endDrawing(),G.restore(),S||W){const e=E.canvas;S&&(N=r),W&&(R=o);const n=this.getSizeAndScale(N,this.ctx.canvas.width,b),l=this.getSizeAndScale(R,this.ctx.canvas.height,Z),i=n.size,a=l.size,s=t.cachedCanvases.getCanvas("pattern-workaround",i,a),u=s.context,h=S?Math.floor(m/r):0,p=W?Math.floor(U/o):0;for(let t=0;t<=h;t++)for(let n=0;n<=p;n++)u.drawImage(e,i*t,a*n,i,a,0,0,i,a);return{canvas:s.canvas,scaleX:n.scale,scaleY:l.scale,offsetX:c,offsetY:d}}return{canvas:E.canvas,scaleX:M.scale,scaleY:g.scale,offsetX:c,offsetY:d}}getSizeAndScale(e,n,l){const i=Math.max(t.MAX_PATTERN_SIZE,n);let a=Math.ceil(e*l);return a>=i?a=i:l=a/e,{scale:l,size:a}}clipBbox(t,e,n,l,i){const a=l-e,s=i-n;t.ctx.rect(e,n,a,s),t.current.updateRectMinMax(Gs(t.ctx),[e,n,l,i]),t.clip(),t.endPath()}setFillAndStrokeStyleToContext(t,e,n){const l=t.ctx,i=t.current;switch(e){case gu.COLORED:const t=this.ctx;l.fillStyle=t.fillStyle,l.strokeStyle=t.strokeStyle,i.fillColor=t.fillStyle,i.strokeColor=t.strokeStyle;break;case gu.UNCOLORED:const a=ns.makeHexColor(n[0],n[1],n[2]);l.fillStyle=a,l.strokeStyle=a,i.fillColor=a,i.strokeColor=a;break;default:throw new xa(`Unsupported paint type: ${e}`)}}getPattern(t,e,n,l){let i=n;l!==Nu.SHADING&&(i=ns.transform(i,e.baseTransform),this.matrix&&(i=ns.transform(i,this.matrix)));const a=this.createPatternCanvas(e);let s=new DOMMatrix(i);s=s.translate(a.offsetX,a.offsetY),s=s.scale(1/a.scaleX,1/a.scaleY);const r=t.createPattern(a.canvas,"repeat");return r.setTransform(s),r}};Hi(Eu,"MAX_PATTERN_SIZE",3e3);let Gu=Eu;function Bu({src:t,srcPos:e=0,dest:n,width:l,height:i,nonBlackColor:a=4294967295,inverseDecode:s=!1}){const r=Aa.isLittleEndian?4278190080:255,[o,c]=s?[a,r]:[r,a],d=l>>3,u=7&l,h=t.length;n=new Uint32Array(n.buffer);let m=0;for(let U=0;U{t.save=t.__originalSave,t.restore=t.__originalRestore,t.rotate=t.__originalRotate,t.scale=t.__originalScale,t.translate=t.__originalTranslate,t.transform=t.__originalTransform,t.setTransform=t.__originalSetTransform,t.resetTransform=t.__originalResetTransform,t.clip=t.__originalClip,t.moveTo=t.__originalMoveTo,t.lineTo=t.__originalLineTo,t.bezierCurveTo=t.__originalBezierCurveTo,t.rect=t.__originalRect,t.closePath=t.__originalClosePath,t.beginPath=t.__originalBeginPath,delete t._removeMirroring},t.save=function(){e.save(),this.__originalSave()},t.restore=function(){e.restore(),this.__originalRestore()},t.translate=function(t,n){e.translate(t,n),this.__originalTranslate(t,n)},t.scale=function(t,n){e.scale(t,n),this.__originalScale(t,n)},t.transform=function(t,n,l,i,a,s){e.transform(t,n,l,i,a,s),this.__originalTransform(t,n,l,i,a,s)},t.setTransform=function(t,n,l,i,a,s){e.setTransform(t,n,l,i,a,s),this.__originalSetTransform(t,n,l,i,a,s)},t.resetTransform=function(){e.resetTransform(),this.__originalResetTransform()},t.rotate=function(t){e.rotate(t),this.__originalRotate(t)},t.clip=function(t){e.clip(t),this.__originalClip(t)},t.moveTo=function(t,n){e.moveTo(t,n),this.__originalMoveTo(t,n)},t.lineTo=function(t,n){e.lineTo(t,n),this.__originalLineTo(t,n)},t.bezierCurveTo=function(t,n,l,i,a,s){e.bezierCurveTo(t,n,l,i,a,s),this.__originalBezierCurveTo(t,n,l,i,a,s)},t.rect=function(t,n,l,i){e.rect(t,n,l,i),this.__originalRect(t,n,l,i)},t.closePath=function(){e.closePath(),this.__originalClosePath()},t.beginPath=function(){e.beginPath(),this.__originalBeginPath()}}class fu{constructor(t){this.canvasFactory=t,this.cache=Object.create(null)}getCanvas(t,e,n){let l;return void 0!==this.cache[t]?(l=this.cache[t],this.canvasFactory.reset(l,e,n)):(l=this.canvasFactory.create(e,n),this.cache[t]=l),l}delete(t){delete this.cache[t]}clear(){for(const t in this.cache){const e=this.cache[t];this.canvasFactory.destroy(e),delete this.cache[t]}}}function Lu(t,e,n,l,i,a,s,r,o,c){const[d,u,h,m,U,p]=Gs(t);if(0===u&&0===h){const F=s*d+U,b=Math.round(F),Z=r*m+p,N=Math.round(Z),R=(s+o)*d+U,S=Math.abs(Math.round(R)-b)||1,W=(r+c)*m+p,V=Math.abs(Math.round(W)-N)||1;return t.setTransform(Math.sign(d),0,0,Math.sign(m),b,N),t.drawImage(e,n,l,i,a,0,0,S,V),t.setTransform(d,u,h,m,U,p),[S,V]}if(0===d&&0===m){const F=r*h+U,b=Math.round(F),Z=s*u+p,N=Math.round(Z),R=(r+c)*h+U,S=Math.abs(Math.round(R)-b)||1,W=(s+o)*u+p,V=Math.abs(Math.round(W)-N)||1;return t.setTransform(0,Math.sign(u),Math.sign(h),0,b,N),t.drawImage(e,n,l,i,a,0,0,V,S),t.setTransform(d,u,h,m,U,p),[V,S]}t.drawImage(e,n,l,i,a,s,r,o,c);const F=Math.hypot(d,u),b=Math.hypot(h,m);return[F*o,b*c]}function wu(t){const{width:e,height:n}=t;if(e>Xu||n>Xu)return null;const l=1e3,i=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),a=e+1;let s,r,o,c=new Uint8Array(a*(n+1));const d=e+7&-8;let u=new Uint8Array(d*n),h=0;for(const F of t.data){let t=128;for(;t>0;)u[h++]=F&t?0:255,t>>=1}let m=0;for(h=0,0!==u[h]&&(c[0]=1,++m),r=1;r>2)+(u[h+1]?4:0)+(u[h-d+1]?8:0),i[t]&&(c[o+r]=i[t],++m),h++;if(u[h-d]!==u[h]&&(c[o+r]=u[h]?2:4,++m),m>l)return null}for(h=d*(n-1),o=s*a,0!==u[h]&&(c[o]=8,++m),r=1;rl)return null;const U=new Int32Array([0,a,-1,0,-a,0,0,0,1]),p=new Path2D;for(s=0;m&&s<=n;s++){let t=s*a;const n=t+e;for(;t>4,c[t]&=i>>2|i<<2),p.lineTo(t%a,t/a|0),c[t]||--m}while(l!==t);--s}return u=null,c=null,function(t){t.save(),t.scale(1/e,-1/n),t.translate(0,-n),t.fill(p),t.beginPath(),t.restore()}}class xu{constructor(t,e){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=ca,this.textMatrixScale=1,this.fontMatrix=da,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=Na.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.patternStroke=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,t,e])}clone(){const t=Object.create(this);return t.clipBox=this.clipBox.slice(),t}setCurrentPoint(t,e){this.x=t,this.y=e}updatePathMinMax(t,e,n){[e,n]=ns.applyTransform([e,n],t),this.minX=Math.min(this.minX,e),this.minY=Math.min(this.minY,n),this.maxX=Math.max(this.maxX,e),this.maxY=Math.max(this.maxY,n)}updateRectMinMax(t,e){const n=ns.applyTransform(e,t),l=ns.applyTransform(e.slice(2),t),i=ns.applyTransform([e[0],e[3]],t),a=ns.applyTransform([e[2],e[1]],t);this.minX=Math.min(this.minX,n[0],l[0],i[0],a[0]),this.minY=Math.min(this.minY,n[1],l[1],i[1],a[1]),this.maxX=Math.max(this.maxX,n[0],l[0],i[0],a[0]),this.maxY=Math.max(this.maxY,n[1],l[1],i[1],a[1])}updateScalingPathMinMax(t,e){ns.scaleMinMax(t,e),this.minX=Math.min(this.minX,e[0]),this.minY=Math.min(this.minY,e[1]),this.maxX=Math.max(this.maxX,e[2]),this.maxY=Math.max(this.maxY,e[3])}updateCurvePathMinMax(t,e,n,l,i,a,s,r,o,c){const d=ns.bezierBoundingBox(e,n,l,i,a,s,r,o,c);c||this.updateRectMinMax(t,d)}getPathBoundingBox(t=Nu.FILL,e=null){const n=[this.minX,this.minY,this.maxX,this.maxY];if(t===Nu.STROKE){e||Ba("Stroke bounding box must include transform.");const t=ns.singularValueDecompose2dScale(e),l=t[0]*this.lineWidth/2,i=t[1]*this.lineWidth/2;n[0]-=l,n[1]-=i,n[2]+=l,n[3]+=i}return n}updateClipFromPath(){const t=ns.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(t){this.clipBox=t,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(t=Nu.FILL,e=null){return ns.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function zu(t,e){if(e instanceof ImageData)return void t.putImageData(e,0,0);const n=e.height,l=e.width,i=n%Iu,a=(n-i)/Iu,s=0===i?a:a+1,r=t.createImageData(l,Iu);let o,c=0;const d=e.data,u=r.data;let h,m,U,p;if(e.kind===Ra.GRAYSCALE_1BPP){const e=d.byteLength,n=new Uint32Array(u.buffer,0,u.byteLength>>2),p=n.length,F=l+7>>3,b=4294967295,Z=Aa.isLittleEndian?4278190080:255;for(h=0;hF?l:8*t-7,s=-8&a;let r=0,u=0;for(;i>=1}for(;o=a&&(U=i,p=l*U),o=0,m=p;m--;)u[o++]=d[c++],u[o++]=d[c++],u[o++]=d[c++],u[o++]=255;t.putImageData(r,0,h*Iu)}}}function vu(t,e){if(e.bitmap)return void t.drawImage(e.bitmap,0,0);const n=e.height,l=e.width,i=n%Iu,a=(n-i)/Iu,s=0===i?a:a+1,r=t.createImageData(l,Iu);let o=0;const c=e.data,d=r.data;for(let u=0;uCu&&"function"==typeof n,c=o?Date.now()+Yu:0;let d=0;const u=this.commonObjs,h=this.objs;let m;for(;;){if(void 0!==l&&s===l.nextBreakPoint)return l.breakIt(s,n),s;if(m=a[s],m!==Qa.dependency)this[m].apply(this,i[s]);else for(const t of i[s]){const e=t.startsWith("g_")?u:h;if(!e.has(t))return e.get(t,n),s}if(s++,s===r)return s;if(o&&++d>Cu){if(Date.now()>c)return n(),s;d=0}}}endDrawing(){na(this,qu,$u).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear(),na(this,qu,th).call(this)}_scaleImage(t,e){const n=t.width??t.displayWidth,l=t.height??t.displayHeight;let i,a,s=Math.max(Math.hypot(e[0],e[1]),1),r=Math.max(Math.hypot(e[2],e[3]),1),o=n,c=l,d="prescale1";for(;s>2&&o>1||r>2&&c>1;){let e=o,n=c;s>2&&o>1&&(e=o>=16384?Math.floor(o/2)-1||1:Math.ceil(o/2),s/=o/e),r>2&&c>1&&(n=c>=16384?Math.floor(c/2)-1||1:Math.ceil(c)/2,r/=c/n),i=this.cachedCanvases.getCanvas(d,e,n),a=i.context,a.clearRect(0,0,e,n),a.drawImage(t,0,0,o,c,0,0,e,n),t=i.canvas,o=e,c=n,d="prescale1"===d?"prescale2":"prescale1"}return{img:t,paintWidth:o,paintHeight:c}}_createMaskCanvas(t){const e=this.ctx,{width:n,height:l}=t,i=this.current.fillColor,a=this.current.patternFill,s=Gs(e);let r,o,c,d;if((t.bitmap||t.data)&&t.count>1){const e=t.bitmap||t.data.buffer;o=JSON.stringify(a?s:[s.slice(0,4),i]),r=this._cachedBitmapsMap.get(e),r||(r=new Map,this._cachedBitmapsMap.set(e,r));const n=r.get(o);if(n&&!a){const t=Math.round(Math.min(s[0],s[2])+s[4]),e=Math.round(Math.min(s[1],s[3])+s[5]);return{canvas:n,offsetX:t,offsetY:e}}c=n}c||(d=this.cachedCanvases.getCanvas("maskCanvas",n,l),vu(d.context,t));let u=ns.transform(s,[1/n,0,0,-1/l,0,0]);u=ns.transform(u,[1,0,0,1,0,-l]);const[h,m,U,p]=ns.getAxialAlignedBoundingBox([0,0,n,l],u),F=Math.round(U-h)||1,b=Math.round(p-m)||1,Z=this.cachedCanvases.getCanvas("fillCanvas",F,b),N=Z.context,R=h,S=m;N.translate(-R,-S),N.transform(...u),c||(c=this._scaleImage(d.canvas,Bs(N)),c=c.img,r&&a&&r.set(o,c)),N.imageSmoothingEnabled=ju(Gs(N),t.interpolate),Lu(N,c,0,0,c.width,c.height,0,0,n,l),N.globalCompositeOperation="source-in";const W=ns.transform(Bs(N),[1,0,0,1,-R,-S]);return N.fillStyle=a?i.getPattern(e,this,W,Nu.FILL):i,N.fillRect(0,0,n,l),r&&!a&&(this.cachedCanvases.delete("fillCanvas"),r.set(o,Z.canvas)),{canvas:Z.canvas,offsetX:Math.round(R),offsetY:Math.round(S)}}setLineWidth(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=t,this.ctx.lineWidth=t}setLineCap(t){this.ctx.lineCap=Ku[t]}setLineJoin(t){this.ctx.lineJoin=Pu[t]}setMiterLimit(t){this.ctx.miterLimit=t}setDash(t,e){const n=this.ctx;void 0!==n.setLineDash&&(n.setLineDash(t),n.lineDashOffset=e)}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n[0],n[1]);break;case"CA":this.current.strokeAlpha=n;break;case"ca":this.current.fillAlpha=n,this.ctx.globalAlpha=n;break;case"BM":this.ctx.globalCompositeOperation=n;break;case"SMask":this.current.activeSMask=n?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(n);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,n="smaskGroupAt"+this.groupLevel,l=this.cachedCanvases.getCanvas(n,t,e);this.suspendedCtx=this.ctx,this.ctx=l.context;const i=this.ctx;i.setTransform(...Gs(this.suspendedCtx)),Ou(this.suspendedCtx,i),Du(i,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),Ou(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;t?(t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.ceil(t[2]),t[3]=Math.ceil(t[3])):t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask,n=this.suspendedCtx;this.composeSMask(n,e,this.ctx,t),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(t,e,n,l){const i=l[0],a=l[1],s=l[2]-i,r=l[3]-a;0===s||0===r||(this.genericComposeSMask(e.context,n,s,r,e.subtype,e.backdrop,e.transferMap,i,a,e.offsetX,e.offsetY),t.save(),t.globalAlpha=1,t.globalCompositeOperation="source-over",t.setTransform(1,0,0,1,0,0),t.drawImage(n.canvas,0,0),t.restore())}genericComposeSMask(t,e,n,l,i,a,s,r,o,c,d){let u=t.canvas,h=r-c,m=o-d;if(a){const e=ns.makeHexColor(...a);if(h<0||m<0||h+n>u.width||m+l>u.height){const t=this.cachedCanvases.getCanvas("maskExtension",n,l),i=t.context;i.drawImage(u,-h,-m),i.globalCompositeOperation="destination-atop",i.fillStyle=e,i.fillRect(0,0,n,l),i.globalCompositeOperation="source-over",u=t.canvas,h=m=0}else{t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0);const i=new Path2D;i.rect(h,m,n,l),t.clip(i),t.globalCompositeOperation="destination-atop",t.fillStyle=e,t.fillRect(h,m,n,l),t.restore()}}e.save(),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0),"Alpha"===i&&s?e.filter=this.filterFactory.addAlphaFilter(s):"Luminosity"===i&&(e.filter=this.filterFactory.addLuminosityFilter(s));const U=new Path2D;U.rect(r,o,n,l),e.clip(U),e.globalCompositeOperation="destination-in",e.drawImage(u,h,m,n,l,r,o,n,l),e.restore()}save(){this.inSMaskMode?(Ou(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const t=this.current;this.stateStack.push(t),this.current=t.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode(),0!==this.stateStack.length&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),Ou(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(t,e,n,l,i,a){this.ctx.transform(t,e,n,l,i,a),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(t,e,n){const l=this.ctx,i=this.current;let a,s,r=i.x,o=i.y;const c=Gs(l),d=0===c[0]&&0===c[3]||0===c[1]&&0===c[2],u=d?n.slice(0):null;for(let h=0,m=0,U=t.length;hku&&(c=ku),this.current.fontSizeScale=e/c,this.ctx.font=`${o} ${r} ${c}px ${s}`}setTextRenderingMode(t){this.current.textRenderingMode=t}setTextRise(t){this.current.textRise=t}moveText(t,e){this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e}setLeadingMoveText(t,e){this.setLeading(-e),this.moveText(t,e)}setTextMatrix(t,e,n,l,i,a){this.current.textMatrix=[t,e,n,l,i,a],this.current.textMatrixScale=Math.hypot(t,e),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(t,e,n,l,i){const a=this.ctx,s=this.current,r=s.font,o=s.textRenderingMode,c=s.fontSize/s.fontSizeScale,d=o&Na.FILL_STROKE_MASK,u=!!(o&Na.ADD_TO_PATH_FLAG),h=s.patternFill&&!r.missingFile,m=s.patternStroke&&!r.missingFile;let U;if((r.disableFontFace||u||h||m)&&(U=r.getPathGenerator(this.commonObjs,t)),r.disableFontFace||h||m){if(a.save(),a.translate(e,n),a.scale(c,-c),d===Na.FILL||d===Na.FILL_STROKE)if(l){const t=a.getTransform();a.setTransform(...l),a.fill(na(this,qu,eh).call(this,U,t,l))}else a.fill(U);if(d===Na.STROKE||d===Na.FILL_STROKE)if(i){const t=a.getTransform();a.setTransform(...i),a.stroke(na(this,qu,eh).call(this,U,t,i))}else a.lineWidth/=c,a.stroke(U);a.restore()}else(d===Na.FILL||d===Na.FILL_STROKE)&&a.fillText(t,e,n),(d===Na.STROKE||d===Na.FILL_STROKE)&&a.strokeText(t,e,n);u&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:Gs(a),x:e,y:n,fontSize:c,path:U})}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1),t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let n=!1;for(let l=3;l0&&e[l]<255){n=!0;break}return Ca(this,"isFontSubpixelAAEnabled",n)}showText(t){const e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);const l=e.fontSize;if(0===l)return;const i=this.ctx,a=e.fontSizeScale,s=e.charSpacing,r=e.wordSpacing,o=e.fontDirection,c=e.textHScale*o,d=t.length,u=n.vertical,h=u?1:-1,m=n.defaultVMetrics,U=l*e.fontMatrix[0],p=e.textRenderingMode===Na.FILL&&!n.disableFontFace&&!e.patternFill;let F,b;if(i.save(),i.transform(...e.textMatrix),i.translate(e.x,e.y+e.textRise),o>0?i.scale(c,-1):i.scale(c,1),e.patternFill){i.save();const t=e.fillColor.getPattern(i,this,Bs(i),Nu.FILL);F=Gs(i),i.restore(),i.fillStyle=t}if(e.patternStroke){i.save();const t=e.strokeColor.getPattern(i,this,Bs(i),Nu.STROKE);b=Gs(i),i.restore(),i.strokeStyle=t}let Z=e.lineWidth;const N=e.textMatrixScale;if(0===N||0===Z){const t=e.textRenderingMode&Na.FILL_STROKE_MASK;(t===Na.STROKE||t===Na.FILL_STROKE)&&(Z=this.getSinglePixelWidth())}else Z/=N;if(1!==a&&(i.scale(a,a),Z/=a),i.lineWidth=Z,n.isInvalidPDFjsFont){const n=[];let l=0;for(const e of t)n.push(e.unicode),l+=e.width;return i.fillText(n.join(""),0,0),e.x+=l*U*c,i.restore(),void this.compose()}let R,S=0;for(R=0;R0){const t=1e3*i.measureText(Z).width/l*a;if(Qnew t(e,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};n=new Gu(e,l,this.ctx,a,i)}else n=this._getPattern(e[1],e[2]);return n}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments),this.current.patternStroke=!0}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(t,e,n){this.ctx.strokeStyle=this.current.strokeColor=ns.makeHexColor(t,e,n),this.current.patternStroke=!1}setStrokeTransparent(){this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(t,e,n){this.ctx.fillStyle=this.current.fillColor=ns.makeHexColor(t,e,n),this.current.patternFill=!1}setFillTransparent(){this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(t,e=null){let n;return this.cachedPatterns.has(t)?n=this.cachedPatterns.get(t):(n=Mu(this.getObject(t)),this.cachedPatterns.set(t,n)),e&&(n.matrix=e),n}shadingFill(t){if(!this.contentVisible)return;const e=this.ctx;this.save();const n=this._getPattern(t);e.fillStyle=n.getPattern(e,this,Bs(e),Nu.SHADING);const l=Bs(e);if(l){const{width:t,height:n}=e.canvas,[i,a,s,r]=ns.getAxialAlignedBoundingBox([0,0,t,n],l);this.ctx.fillRect(i,a,s-i,r-a)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){Ba("Should not call beginInlineImage")}beginImageData(){Ba("Should not call beginImageData")}paintFormXObjectBegin(t,e){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),t&&this.transform(...t),this.baseTransform=Gs(this.ctx),e)){const t=e[2]-e[0],n=e[3]-e[1];this.ctx.rect(e[0],e[1],t,n),this.current.updateRectMinMax(Gs(this.ctx),e),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(t){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const e=this.ctx;t.isolated||Ea("TODO: Support non-isolated groups."),t.knockout&&Ga("Knockout groups not supported.");const n=Gs(e);if(t.matrix&&e.transform(...t.matrix),!t.bbox)throw new Error("Bounding box is required.");let l=ns.getAxialAlignedBoundingBox(t.bbox,Gs(e));const i=[0,0,e.canvas.width,e.canvas.height];l=ns.intersect(l,i)||[0,0,0,0];const a=Math.floor(l[0]),s=Math.floor(l[1]),r=Math.max(Math.ceil(l[2])-a,1),o=Math.max(Math.ceil(l[3])-s,1);this.current.startNewPathAndClipBox([0,0,r,o]);let c="groupAt"+this.groupLevel;t.smask&&(c+="_smask_"+this.smaskCounter++%2);const d=this.cachedCanvases.getCanvas(c,r,o),u=d.context;u.translate(-a,-s),u.transform(...n),t.smask?this.smaskStack.push({canvas:d.canvas,context:u,offsetX:a,offsetY:s,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}):(e.setTransform(1,0,0,1,0,0),e.translate(a,s),e.save()),Ou(e,u),this.ctx=u,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++}endGroup(t){if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,n=this.groupStack.pop();if(this.ctx=n,this.ctx.imageSmoothingEnabled=!1,t.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const t=Gs(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...t);const n=ns.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],t);this.ctx.drawImage(e.canvas,0,0),this.ctx.restore(),this.compose(n)}}beginAnnotation(t,e,n,l,i){if(na(this,qu,$u).call(this),_u(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),e){const l=e[2]-e[0],a=e[3]-e[1];if(i&&this.annotationCanvasMap){n=n.slice(),n[4]-=e[0],n[5]-=e[1],e=e.slice(),e[0]=e[1]=0,e[2]=l,e[3]=a;const[i,s]=ns.singularValueDecompose2dScale(Gs(this.ctx)),{viewportScale:r}=this,o=Math.ceil(l*this.outputScaleX*r),c=Math.ceil(a*this.outputScaleY*r);this.annotationCanvas=this.canvasFactory.create(o,c);const{canvas:d,context:u}=this.annotationCanvas;this.annotationCanvasMap.set(t,d),this.annotationCanvas.savedCtx=this.ctx,this.ctx=u,this.ctx.save(),this.ctx.setTransform(i,0,0,-s,0,a*s),_u(this.ctx)}else _u(this.ctx),this.endPath(),this.ctx.rect(e[0],e[1],l,a),this.ctx.clip(),this.ctx.beginPath()}this.current=new xu(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...n),this.transform(...l)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),na(this,qu,th).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(t){if(!this.contentVisible)return;const e=t.count;t=this.getObject(t.data,t),t.count=e;const n=this.ctx,l=this.processingType3;if(l&&(void 0===l.compiled&&(l.compiled=wu(t)),l.compiled))return void l.compiled(n);const i=this._createMaskCanvas(t),a=i.canvas;n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(a,i.offsetX,i.offsetY),n.restore(),this.compose()}paintImageMaskXObjectRepeat(t,e,n=0,l=0,i,a){if(!this.contentVisible)return;t=this.getObject(t.data,t);const s=this.ctx;s.save();const r=Gs(s);s.transform(e,n,l,i,0,0);const o=this._createMaskCanvas(t);s.setTransform(1,0,0,1,o.offsetX-r[4],o.offsetY-r[5]);for(let c=0,d=a.length;ce?c/e:1,s=o>e?o/e:1}}this._cachedScaleForStroking[0]=a,this._cachedScaleForStroking[1]=s}return this._cachedScaleForStroking}rescaleAndStroke(t){const{ctx:e}=this,{lineWidth:n}=this.current,[l,i]=this.getScaleForStroking();if(e.lineWidth=n||1,1===l&&1===i)return void e.stroke();const a=e.getLineDash();if(t&&e.save(),e.scale(l,i),a.length>0){const t=Math.max(l,i);e.setLineDash(a.map((e=>e/t))),e.lineDashOffset/=t}e.stroke(),t&&e.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}};qu=new WeakSet,$u=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},th=function(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){const e=this.ctx.filter;this.ctx.filter=t,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}},eh=function(t,e,n){const l=new Path2D;return l.addPath(t,new DOMMatrix(n).invertSelf().multiplySelf(e)),l};let lh=nh;for(const gB in Qa)void 0!==lh.prototype[gB]&&(lh.prototype[Qa[gB]]=lh.prototype[gB]);var ih,ah,sh;let rh=(ih=class{static get workerPort(){return $i(this,ah)}static set workerPort(t){if(!(typeof Worker<"u"&&t instanceof Worker)&&null!==t)throw new Error("Invalid `workerPort` type.");ea(this,ah,t)}static get workerSrc(){return $i(this,sh)}static set workerSrc(t){if("string"!=typeof t)throw new Error("Invalid `workerSrc` type.");ea(this,sh,t)}},ah=new WeakMap,sh=new WeakMap,ta(ih,ah,null),ta(ih,sh,""),ih);var oh,ch;class dh{constructor({parsedData:t,rawData:e}){ta(this,oh),ta(this,ch),ea(this,oh,t),ea(this,ch,e)}getRaw(){return $i(this,ch)}get(t){return $i(this,oh).get(t)??null}getAll(){return ja($i(this,oh))}has(t){return $i(this,oh).has(t)}}oh=new WeakMap,ch=new WeakMap;const uh=Symbol("INTERNAL");var hh,mh,Uh,ph,Fh,bh,Zh,Nh,Rh,Sh;class Wh{constructor(t,{name:e,intent:n,usage:l,rbGroups:i}){ta(this,hh,!1),ta(this,mh,!1),ta(this,Uh,!1),ta(this,ph,!0),ea(this,hh,!!(t&ma.DISPLAY)),ea(this,mh,!!(t&ma.PRINT)),this.name=e,this.intent=n,this.usage=l,this.rbGroups=i}get visible(){if($i(this,Uh))return $i(this,ph);if(!$i(this,ph))return!1;const{print:t,view:e}=this.usage;return $i(this,hh)?"OFF"!==(null==e?void 0:e.viewState):!$i(this,mh)||"OFF"!==(null==t?void 0:t.printState)}_setVisible(t,e,n=!1){t!==uh&&Ba("Internal method `_setVisible` called."),ea(this,Uh,n),ea(this,ph,e)}}hh=new WeakMap,mh=new WeakMap,Uh=new WeakMap,ph=new WeakMap;class Vh{constructor(t,e=ma.DISPLAY){if(ta(this,Rh),ta(this,Fh,null),ta(this,bh,new Map),ta(this,Zh,null),ta(this,Nh,null),this.renderingIntent=e,this.name=null,this.creator=null,null!==t){this.name=t.name,this.creator=t.creator,ea(this,Nh,t.order);for(const n of t.groups)$i(this,bh).set(n.id,new Wh(e,n));if("OFF"===t.baseState)for(const t of $i(this,bh).values())t._setVisible(uh,!1);for(const e of t.on)$i(this,bh).get(e)._setVisible(uh,!0);for(const e of t.off)$i(this,bh).get(e)._setVisible(uh,!1);ea(this,Zh,this.getHash())}}isVisible(t){if(0===$i(this,bh).size)return!0;if(!t)return Ea("Optional content group not defined."),!0;if("OCG"===t.type)return $i(this,bh).has(t.id)?$i(this,bh).get(t.id).visible:(Ga(`Optional content group not found: ${t.id}`),!0);if("OCMD"===t.type){if(t.expression)return na(this,Rh,Sh).call(this,t.expression);if(!t.policy||"AnyOn"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if($i(this,bh).get(e).visible)return!0}return!1}if("AllOn"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if(!$i(this,bh).get(e).visible)return!1}return!0}if("AnyOff"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if(!$i(this,bh).get(e).visible)return!0}return!1}if("AllOff"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if($i(this,bh).get(e).visible)return!1}return!0}return Ga(`Unknown optional content policy ${t.policy}.`),!0}return Ga(`Unknown group type ${t.type}.`),!0}setVisibility(t,e=!0,n=!0){var l;const i=$i(this,bh).get(t);if(i){if(n&&e&&i.rbGroups.length)for(const e of i.rbGroups)for(const n of e)n!==t&&(null==(l=$i(this,bh).get(n))||l._setVisible(uh,!1,!0));i._setVisible(uh,!!e,!0),ea(this,Fh,null)}else Ga(`Optional content group not found: ${t}`)}setOCGState({state:t,preserveRB:e}){let n;for(const l of t){switch(l){case"ON":case"OFF":case"Toggle":n=l;continue}const t=$i(this,bh).get(l);if(t)switch(n){case"ON":this.setVisibility(l,!0,e);break;case"OFF":this.setVisibility(l,!1,e);break;case"Toggle":this.setVisibility(l,!t.visible,e);break}}ea(this,Fh,null)}get hasInitialVisibility(){return null===$i(this,Zh)||this.getHash()===$i(this,Zh)}getOrder(){return $i(this,bh).size?$i(this,Nh)?$i(this,Nh).slice():[...$i(this,bh).keys()]:null}getGroups(){return $i(this,bh).size>0?ja($i(this,bh)):null}getGroup(t){return $i(this,bh).get(t)||null}getHash(){if(null!==$i(this,Fh))return $i(this,Fh);const t=new pd;for(const[e,n]of $i(this,bh))t.update(`${e}:${n.visible}`);return ea(this,Fh,t.hexdigest())}}Fh=new WeakMap,bh=new WeakMap,Zh=new WeakMap,Nh=new WeakMap,Rh=new WeakSet,Sh=function(t){const e=t.length;if(e<2)return!0;const n=t[0];for(let l=1;l0){const t=i instanceof Uint8Array&&i.byteLength===i.buffer.byteLength?i.buffer:new Uint8Array(i).buffer;this._queuedChunks.push(t)}this._pdfDataRangeTransport=t,this._isStreamingSupported=!n,this._isRangeSupported=!e,this._contentLength=l,this._fullRequestReader=null,this._rangeReaders=[],t.addRangeListener(((t,e)=>{this._onReceiveData({begin:t,chunk:e})})),t.addProgressListener(((t,e)=>{this._onProgress({loaded:t,total:e})})),t.addProgressiveReadListener((t=>{this._onReceiveData({chunk:t})})),t.addProgressiveDoneListener((()=>{this._onProgressiveDone()})),t.transportReady()}_onReceiveData({begin:t,chunk:e}){const n=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;if(void 0===t)this._fullRequestReader?this._fullRequestReader._enqueue(n):this._queuedChunks.push(n);else{const e=this._rangeReaders.some((function(e){return e._begin===t&&(e._enqueue(n),!0)}));Ja(e,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var t;return(null==(t=this._fullRequestReader)?void 0:t._loaded)??0}_onProgress(t){var e,n,l,i;void 0===t.total?null==(n=null==(e=this._rangeReaders[0])?void 0:e.onProgress)||n.call(e,{loaded:t.loaded}):null==(i=null==(l=this._fullRequestReader)?void 0:l.onProgress)||i.call(l,{loaded:t.loaded,total:t.total})}_onProgressiveDone(){var t;null==(t=this._fullRequestReader)||t.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){Ja(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;return this._queuedChunks=null,new yh(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new Th(this,t,e);return this._pdfDataRangeTransport.requestDataRange(t,e),this._rangeReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeReaders.slice(0))n.cancel(t);this._pdfDataRangeTransport.abort()}}class yh{constructor(t,e,n=!1,l=null){this._stream=t,this._done=n||!1,this._filename=bs(l)?l:null,this._queuedChunks=e||[],this._loaded=0;for(const i of this._queuedChunks)this._loaded+=i.byteLength;this._requests=[],this._headersReady=Promise.resolve(),t._fullRequestReader=this,this.onProgress=null}_enqueue(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class Th{constructor(t,e,n){this._stream=t,this._begin=e,this._end=n,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function Mh(t){let e=!0,n=l("filename\\*","i").exec(t);if(n){n=n[1];let t=r(n);return t=unescape(t),t=o(t),t=c(t),a(t)}if(n=s(t),n){const t=c(n);return a(t)}if(n=l("filename","i").exec(t),n){n=n[1];let t=r(n);return t=c(t),a(t)}function l(t,e){return new RegExp("(?:^|;)\\s*"+t+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',e)}function i(t,n){if(t){if(!/^[\x00-\xFF]+$/.test(n))return n;try{const l=new TextDecoder(t,{fatal:!0}),i=Oa(n);n=l.decode(i),e=!1}catch{}}return n}function a(t){return e&&/[\x80-\xff]/.test(t)&&(t=i("utf-8",t),e&&(t=i("iso-8859-1",t))),t}function s(t){const e=[];let n;const i=l("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(n=i.exec(t));){let[,t,l,i]=n;if(t=parseInt(t,10),t in e){if(0===t)break}else e[t]=[l,i]}const a=[];for(let l=0;l{if(t._responseOrigin=Eh(e.url),!kh(e.status))throw Jh(e.status,l);this._reader=e.body.getReader(),this._headersCapability.resolve();const n=e.headers,{allowRangeRequests:i,suggestedLength:a}=Gh({responseHeaders:n,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=i,this._contentLength=a||this._contentLength,this._filename=Bh(n),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new za("Streaming is disabled."))})).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;await this._headersCapability.promise;const{value:e,done:n}=await this._reader.read();return n?{value:e,done:n}:(this._loaded+=e.byteLength,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded,total:this._contentLength}),{value:Ch(e),done:!1})}cancel(t){var e;null==(e=this._reader)||e.cancel(t),this._abortController.abort()}}class Dh{constructor(t,e,n){this._stream=t,this._reader=null,this._loaded=0;const l=t.source;this._withCredentials=l.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!l.disableStream,this._abortController=new AbortController;const i=new Headers(t.headers);i.append("Range",`bytes=${e}-${n-1}`);const a=l.url;fetch(a,Yh(i,this._withCredentials,this._abortController)).then((e=>{const n=Eh(e.url);if(n!==t._responseOrigin)throw new Error(`Expected range response-origin "${n}" to match "${t._responseOrigin}".`);if(!kh(e.status))throw Jh(e.status,a);this._readCapability.resolve(),this._reader=e.body.getReader()})).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;await this._readCapability.promise;const{value:e,done:n}=await this._reader.read();return n?{value:e,done:n}:(this._loaded+=e.byteLength,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded}),{value:Ch(e),done:!1})}cancel(t){var e;null==(e=this._reader)||e.cancel(t),this._abortController.abort()}}const fh=200,Lh=206;function wh(t){const e=t.response;return"string"!=typeof e?e:Oa(e).buffer}class xh{constructor({url:t,httpHeaders:e,withCredentials:n}){Hi(this,"_responseOrigin",null),this.url=t,this.isHttp=/^https?:/i.test(t),this.headers=gh(this.isHttp,e),this.withCredentials=n||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(t){const e=new XMLHttpRequest,n=this.currXhrId++,l=this.pendingRequests[n]={xhr:e};e.open("GET",this.url),e.withCredentials=this.withCredentials;for(const[i,a]of this.headers)e.setRequestHeader(i,a);return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`),l.expectedStatus=Lh):l.expectedStatus=fh,e.responseType="arraybuffer",Ja(t.onError,"Expected `onError` callback to be provided."),e.onerror=()=>{t.onError(e.status)},e.onreadystatechange=this.onStateChange.bind(this,n),e.onprogress=this.onProgress.bind(this,n),l.onHeadersReceived=t.onHeadersReceived,l.onDone=t.onDone,l.onError=t.onError,l.onProgress=t.onProgress,e.send(null),n}onProgress(t,e){var n;const l=this.pendingRequests[t];l&&(null==(n=l.onProgress)||n.call(l,e))}onStateChange(t,e){const n=this.pendingRequests[t];if(!n)return;const l=n.xhr;if(l.readyState>=2&&n.onHeadersReceived&&(n.onHeadersReceived(),delete n.onHeadersReceived),4!==l.readyState||!(t in this.pendingRequests))return;if(delete this.pendingRequests[t],0===l.status&&this.isHttp)return void n.onError(l.status);const i=l.status||fh;if((i!==fh||n.expectedStatus!==Lh)&&i!==n.expectedStatus)return void n.onError(l.status);const a=wh(l);if(i===Lh){const t=l.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(t);e?n.onDone({begin:parseInt(e[1],10),chunk:a}):(Ga('Missing or invalid "Content-Range" header.'),n.onError(0))}else a?n.onDone({begin:0,chunk:a}):n.onError(l.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t],e.abort()}}class zh{constructor(t){this._source=t,this._manager=new xh(t),this._rangeChunkSize=t.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){return Ja(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new vh(this._manager,this._source),this._fullRequestReader}getRangeReader(t,e){const n=new Oh(this._manager,t,e);return n.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeRequestReaders.slice(0))n.cancel(t)}}class vh{constructor(t,e){this._manager=t,this._url=e.url,this._fullRequestId=t.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=e.disableRange||!1,this._contentLength=e.length,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t);this._manager._responseOrigin=Eh(e.responseURL);const n=e.getAllResponseHeaders(),l=new Headers(n?n.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map((t=>{const[e,...n]=t.split(": ");return[e,n.join(": ")]})):[]),{allowRangeRequests:i,suggestedLength:a}=Gh({responseHeaders:l,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});i&&(this._isRangeSupported=!0),this._contentLength=a||this._contentLength,this._filename=Bh(l),this._isRangeSupported&&this._manager.abortRequest(t),this._headersCapability.resolve()}_onDone(t){if(t&&(this._requests.length>0?this._requests.shift().resolve({value:t.chunk,done:!1}):this._cachedChunks.push(t.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=Jh(t,this._url),this._headersCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(t){var e;null==(e=this.onProgress)||e.call(this,{loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this._headersCapability.reject(t);for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class Oh{constructor(t,e,n){this._manager=t,this._url=t.url,this._requestId=t.request({begin:e,end:n,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var t;const e=Eh(null==(t=this._manager.getRequestXhr(this._requestId))?void 0:t.responseURL);e!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${e}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var t;null==(t=this.onClosed)||t.call(this,this)}_onDone(t){const e=t.chunk;this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0;for(const n of this._requests)n.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(t){this._storedError??(this._storedError=Jh(t,this._url));for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(t){var e;this.isStreamingSupported||null==(e=this.onProgress)||e.call(this,{loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const _h=/^[a-z][a-z0-9\-+.]+:/i;function jh(t){if(_h.test(t))return new URL(t);const e=process.getBuiltinModule("url");return new URL(e.pathToFileURL(t))}class Kh{constructor(t){this.source=t,this.url=jh(t.url),Ja("file:"===this.url.protocol,"PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var t;return(null==(t=this._fullRequestReader)?void 0:t._loaded)??0}getFullReader(){return Ja(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new Ph(this),this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new Ah(this,t,e);return this._rangeRequestReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeRequestReaders.slice(0))n.cancel(t)}}class Ph{constructor(t){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null;const e=t.source;this._contentLength=e.length,this._loaded=0,this._filename=null,this._disableRange=e.disableRange||!1,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const n=process.getBuiltinModule("fs");n.promises.lstat(this._url).then((t=>{this._contentLength=t.size,this._setReadableStream(n.createReadStream(this._url)),this._headersCapability.resolve()}),(t=>{"ENOENT"===t.code&&(t=new La(`Missing PDF "${this._url}".`)),this._storedError=t,this._headersCapability.reject(t)}))}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();return null===e?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=e.length,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(e).buffer,done:!1})}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",(()=>{this._readCapability.resolve()})),t.on("end",(()=>{t.destroy(),this._done=!0,this._readCapability.resolve()})),t.on("error",(t=>{this._error(t)})),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new za("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class Ah{constructor(t,e,n){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const l=t.source;this._isStreamingSupported=!l.disableStream;const i=process.getBuiltinModule("fs");this._setReadableStream(i.createReadStream(this._url,{start:e,end:n-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();return null===e?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=e.length,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded}),{value:new Uint8Array(e).buffer,done:!1})}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",(()=>{this._readCapability.resolve()})),t.on("end",(()=>{t.destroy(),this._done=!0,this._readCapability.resolve()})),t.on("error",(t=>{this._error(t)})),this._storedError&&this._readableStream.destroy(this._storedError)}}const Hh=1e5,qh=30,$h=.8;var tm,em,nm,lm,im,am,sm,rm,om,cm,dm,um,hm,mm,Um,pm,Fm,bm,Zm,Nm,Rm,Sm,Wm,Vm,Qm,ym,Tm,Mm,gm,Em,Gm,Bm,Jm,km;let Ym=(Nm=class{constructor({textContentSource:t,container:e,viewport:n}){var l;if(ta(this,ym),ta(this,em,Promise.withResolvers()),ta(this,nm,null),ta(this,lm,!1),ta(this,im,!(null==(tm=globalThis.FontInspector)||!tm.enabled)),ta(this,am,null),ta(this,sm,null),ta(this,rm,0),ta(this,om,0),ta(this,cm,null),ta(this,dm,null),ta(this,um,0),ta(this,hm,0),ta(this,mm,Object.create(null)),ta(this,Um,[]),ta(this,pm,null),ta(this,Fm,[]),ta(this,bm,new WeakMap),ta(this,Zm,null),t instanceof ReadableStream)ea(this,pm,t);else{if("object"!=typeof t)throw new Error('No "textContentSource" parameter specified.');ea(this,pm,new ReadableStream({start(e){e.enqueue(t),e.close()}}))}ea(this,nm,ea(this,dm,e)),ea(this,hm,n.scale*(globalThis.devicePixelRatio||1)),ea(this,um,n.rotation),ea(this,sm,{div:null,properties:null,ctx:null});const{pageWidth:i,pageHeight:a,pageX:s,pageY:r}=n.rawDims;ea(this,Zm,[1,0,0,-1,-s,r+a]),ea(this,om,i),ea(this,rm,a),na(l=Nm,Em,Jm).call(l),Js(e,n),$i(this,em).promise.finally((()=>{$i(Nm,Qm).delete(this),ea(this,sm,null),ea(this,mm,null)})).catch((()=>{}))}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=Aa.platform;return Ca(this,"fontFamilyMap",new Map([["sans-serif",(t&&e?"Calibri, ":"")+"sans-serif"],["monospace",(t&&e?"Lucida Console, ":"")+"monospace"]]))}render(){const t=()=>{$i(this,cm).read().then((({value:e,done:n})=>{n?$i(this,em).resolve():($i(this,am)??ea(this,am,e.lang),Object.assign($i(this,mm),e.styles),na(this,ym,Tm).call(this,e.items),t())}),$i(this,em).reject)};return ea(this,cm,$i(this,pm).getReader()),$i(Nm,Qm).add(this),t(),$i(this,em).promise}update({viewport:t,onBefore:e=null}){var n;const l=t.scale*(globalThis.devicePixelRatio||1),i=t.rotation;if(i!==$i(this,um)&&(null==e||e(),ea(this,um,i),Js($i(this,dm),{rotation:i})),l!==$i(this,hm)){null==e||e(),ea(this,hm,l);const t={div:null,properties:null,ctx:na(n=Nm,Em,Gm).call(n,$i(this,am))};for(const e of $i(this,Fm))t.properties=$i(this,bm).get(e),t.div=e,na(this,ym,gm).call(this,t)}}cancel(){var t;const e=new za("TextLayer task cancelled.");null==(t=$i(this,cm))||t.cancel(e).catch((()=>{})),ea(this,cm,null),$i(this,em).reject(e)}get textDivs(){return $i(this,Fm)}get textContentItemsStr(){return $i(this,Um)}static cleanup(){if(!($i(this,Qm).size>0)){$i(this,Rm).clear();for(const{canvas:t}of $i(this,Sm).values())t.remove();$i(this,Sm).clear()}}},em=new WeakMap,nm=new WeakMap,lm=new WeakMap,im=new WeakMap,am=new WeakMap,sm=new WeakMap,rm=new WeakMap,om=new WeakMap,cm=new WeakMap,dm=new WeakMap,um=new WeakMap,hm=new WeakMap,mm=new WeakMap,Um=new WeakMap,pm=new WeakMap,Fm=new WeakMap,bm=new WeakMap,Zm=new WeakMap,Rm=new WeakMap,Sm=new WeakMap,Wm=new WeakMap,Vm=new WeakMap,Qm=new WeakMap,ym=new WeakSet,Tm=function(t){var e,n;if($i(this,lm))return;(n=$i(this,sm)).ctx??(n.ctx=na(e=Nm,Em,Gm).call(e,$i(this,am)));const l=$i(this,Fm),i=$i(this,Um);for(const a of t){if(l.length>Hh)return Ga("Ignoring additional textDivs for performance reasons."),void ea(this,lm,!0);if(void 0!==a.str)i.push(a.str),na(this,ym,Mm).call(this,a);else if("beginMarkedContentProps"===a.type||"beginMarkedContent"===a.type){const t=$i(this,nm);ea(this,nm,document.createElement("span")),$i(this,nm).classList.add("markedContent"),null!==a.id&&$i(this,nm).setAttribute("id",`${a.id}`),t.append($i(this,nm))}else"endMarkedContent"===a.type&&ea(this,nm,$i(this,nm).parentNode)}},Mm=function(t){var e;const n=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==t.str,hasEOL:t.hasEOL,fontSize:0};$i(this,Fm).push(n);const i=ns.transform($i(this,Zm),t.transform);let a=Math.atan2(i[1],i[0]);const s=$i(this,mm)[t.fontName];s.vertical&&(a+=Math.PI/2);let r=$i(this,im)&&s.fontSubstitution||s.fontFamily;r=Nm.fontFamilyMap.get(r)||r;const o=Math.hypot(i[2],i[3]),c=o*na(e=Nm,Em,km).call(e,r,$i(this,am));let d,u;0===a?(d=i[4],u=i[5]-c):(d=i[4]+c*Math.sin(a),u=i[5]-c*Math.cos(a));const h="calc(var(--scale-factor)*",m=n.style;$i(this,nm)===$i(this,dm)?(m.left=`${(100*d/$i(this,om)).toFixed(2)}%`,m.top=`${(100*u/$i(this,rm)).toFixed(2)}%`):(m.left=`${h}${d.toFixed(2)}px)`,m.top=`${h}${u.toFixed(2)}px)`),m.fontSize=`${h}${($i(Nm,Vm)*o).toFixed(2)}px)`,m.fontFamily=r,l.fontSize=o,n.setAttribute("role","presentation"),n.textContent=t.str,n.dir=t.dir,$i(this,im)&&(n.dataset.fontName=s.fontSubstitutionLoadedName||t.fontName),0!==a&&(l.angle=a*(180/Math.PI));let U=!1;if(t.str.length>1)U=!0;else if(" "!==t.str&&t.transform[0]!==t.transform[3]){const e=Math.abs(t.transform[0]),n=Math.abs(t.transform[3]);e!==n&&Math.max(e,n)/Math.min(e,n)>1.5&&(U=!0)}if(U&&(l.canvasWidth=s.vertical?t.height:t.width),$i(this,bm).set(n,l),$i(this,sm).div=n,$i(this,sm).properties=l,na(this,ym,gm).call(this,$i(this,sm)),l.hasText&&$i(this,nm).append(n),l.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation"),$i(this,nm).append(t)}},gm=function(t){var e;const{div:n,properties:l,ctx:i}=t,{style:a}=n;let s="";if($i(Nm,Vm)>1&&(s=`scale(${1/$i(Nm,Vm)})`),0!==l.canvasWidth&&l.hasText){const{fontFamily:t}=a,{canvasWidth:r,fontSize:o}=l;na(e=Nm,Em,Bm).call(e,i,o*$i(this,hm),t);const{width:c}=i.measureText(n.textContent);c>0&&(s=`scaleX(${r*$i(this,hm)/c}) ${s}`)}0!==l.angle&&(s=`rotate(${l.angle}deg) ${s}`),s.length>0&&(a.transform=s)},Em=new WeakSet,Gm=function(t=null){let e=$i(this,Sm).get(t||(t=""));if(!e){const n=document.createElement("canvas");n.className="hiddenCanvasElement",n.lang=t,document.body.append(n),e=n.getContext("2d",{alpha:!1,willReadFrequently:!0}),$i(this,Sm).set(t,e),$i(this,Wm).set(e,{size:0,family:""})}return e},Bm=function(t,e,n){const l=$i(this,Wm).get(t);e===l.size&&n===l.family||(t.font=`${e}px ${n}`,l.size=e,l.family=n)},Jm=function(){if(null!==$i(this,Vm))return;const t=document.createElement("div");t.style.opacity=0,t.style.lineHeight=1,t.style.fontSize="1px",t.style.position="absolute",t.textContent="X",document.body.append(t),ea(this,Vm,t.getBoundingClientRect().height),t.remove()},km=function(t,e){const n=$i(this,Rm).get(t);if(n)return n;const l=na(this,Em,Gm).call(this,e);l.canvas.width=l.canvas.height=qh,na(this,Em,Bm).call(this,l,qh,t);const i=l.measureText("");let a=i.fontBoundingBoxAscent,s=Math.abs(i.fontBoundingBoxDescent);if(a){const e=a/(a+s);return $i(this,Rm).set(t,e),l.canvas.width=l.canvas.height=0,e}l.strokeStyle="red",l.clearRect(0,0,qh,qh),l.strokeText("g",0,0);let r=l.getImageData(0,0,qh,qh).data;s=0;for(let c=r.length-1-3;c>=0;c-=4)if(r[c]>0){s=Math.ceil(c/4/qh);break}l.clearRect(0,0,qh,qh),l.strokeText("A",0,qh),r=l.getImageData(0,0,qh,qh).data,a=0;for(let c=0,d=r.length;c0){a=qh-Math.floor(c/4/qh);break}l.canvas.width=l.canvas.height=0;const o=a?a/(a+s):$h;return $i(this,Rm).set(t,o),o},ta(Nm,Em),ta(Nm,Rm,new Map),ta(Nm,Sm,new Map),ta(Nm,Wm,new WeakMap),ta(Nm,Vm,null),ta(Nm,Qm,new Set),Nm);class Cm{static textContent(t){const e=[],n={items:e,styles:Object.create(null)};function l(t){var n;if(!t)return;let i=null;const a=t.name;if("#text"===a)i=t.value;else{if(!Cm.shouldBuildText(a))return;null!=(n=null==t?void 0:t.attributes)&&n.textContent?i=t.attributes.textContent:t.value&&(i=t.value)}if(null!==i&&e.push({str:i}),t.children)for(const e of t.children)l(e)}return l(t),n}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}const Xm=65536,Im=100,Dm=5e3,fm=oa?Fu:ru,Lm=oa?bu:cu,wm=oa?pu:uu,xm=oa?Zu:mu;function zm(t={}){"string"==typeof t||t instanceof URL?t={url:t}:(t instanceof ArrayBuffer||ArrayBuffer.isView(t))&&(t={data:t});const e=new Pm,{docId:n}=e,l=t.url?vm(t.url):null,i=t.data?Om(t.data):null,a=t.httpHeaders||null,s=!0===t.withCredentials,r=t.password??null,o=t.range instanceof Am?t.range:null,c=Number.isInteger(t.rangeChunkSize)&&t.rangeChunkSize>0?t.rangeChunkSize:Xm;let d=t.worker instanceof pU?t.worker:null;const u=t.verbosity,h="string"!=typeof t.docBaseUrl||Fs(t.docBaseUrl)?null:t.docBaseUrl,m="string"==typeof t.cMapUrl?t.cMapUrl:null,U=!1!==t.cMapPacked,p=t.CMapReaderFactory||Lm,F="string"==typeof t.standardFontDataUrl?t.standardFontDataUrl:null,b=t.StandardFontDataFactory||xm,Z=!0!==t.stopAtErrors,N=Number.isInteger(t.maxImageSize)&&t.maxImageSize>-1?t.maxImageSize:-1,R=!1!==t.isEvalSupported,S="boolean"==typeof t.isOffscreenCanvasSupported?t.isOffscreenCanvasSupported:!oa,W="boolean"==typeof t.isImageDecoderSupported?t.isImageDecoderSupported:!oa&&(Aa.platform.isFirefox||!globalThis.chrome),V=Number.isInteger(t.canvasMaxAreaInBytes)?t.canvasMaxAreaInBytes:-1,Q="boolean"==typeof t.disableFontFace?t.disableFontFace:oa,y=!0===t.fontExtraProperties,T=!0===t.enableXfa,M=t.ownerDocument||globalThis.document,g=!0===t.disableRange,E=!0===t.disableStream,G=!0===t.disableAutoFetch,B=!0===t.pdfBug,J=t.CanvasFactory||fm,k=t.FilterFactory||wm,Y=!0===t.enableHWA,C=o?o.length:t.length??NaN,X="boolean"==typeof t.useSystemFonts?t.useSystemFonts:!oa&&!Q,I="boolean"==typeof t.useWorkerFetch?t.useWorkerFetch:p===cu&&b===mu&&m&&F&&Ss(m,document.baseURI)&&Ss(F,document.baseURI),D=null;Ma(u);const f={canvasFactory:new J({ownerDocument:M,enableHWA:Y}),filterFactory:new k({docId:n,ownerDocument:M}),cMapReaderFactory:I?null:new p({baseUrl:m,isCompressed:U}),standardFontDataFactory:I?null:new b({baseUrl:F})};if(!d){const t={verbosity:u,port:rh.workerPort};d=t.port?pU.fromPort(t):new pU(t),e._worker=d}const L={docId:n,apiVersion:"4.10.38",data:i,password:r,disableAutoFetch:G,rangeChunkSize:c,length:C,docBaseUrl:h,enableXfa:T,evaluatorOptions:{maxImageSize:N,disableFontFace:Q,ignoreErrors:Z,isEvalSupported:R,isOffscreenCanvasSupported:S,isImageDecoderSupported:W,canvasMaxAreaInBytes:V,fontExtraProperties:y,useSystemFonts:X,cMapUrl:I?m:null,standardFontDataUrl:I?F:null}},w={disableFontFace:Q,fontExtraProperties:y,ownerDocument:M,pdfBug:B,styleElement:D,loadingParams:{disableAutoFetch:G,enableXfa:T}};return d.promise.then((function(){if(e.destroyed)throw new Error("Loading aborted");if(d.destroyed)throw new Error("Worker was destroyed");const t=d.messageHandler.sendWithPromise("GetDocRequest",L,i?[i.buffer]:null);let r;if(o)r=new Qh(o,{disableRange:g,disableStream:E});else if(!i){if(!l)throw new Error("getDocument - no `url` parameter provided.");let t;if(oa)if(Ss(l)){if(typeof fetch>"u"||typeof Response>"u"||!("body"in Response.prototype))throw new Error("getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.");t=Xh}else t=Kh;else t=Ss(l)?Xh:zh;r=new t({url:l,length:C,httpHeaders:a,withCredentials:s,rangeChunkSize:c,disableRange:g,disableStream:E})}return t.then((t=>{if(e.destroyed)throw new Error("Loading aborted");if(d.destroyed)throw new Error("Worker was destroyed");const l=new au(n,t,d.port),i=new VU(l,e,r,w,f);e._transport=i,l.send("Ready",null)}))})).catch(e._capability.reject),e}function vm(t){if(t instanceof URL)return t.href;try{return new URL(t,window.location).href}catch{if(oa&&"string"==typeof t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function Om(t){if(oa&&typeof Buffer<"u"&&t instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength)return t;if("string"==typeof t)return Oa(t);if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)||"object"==typeof t&&!isNaN(null==t?void 0:t.length))return new Uint8Array(t);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function _m(t){return"object"==typeof t&&Number.isInteger(null==t?void 0:t.num)&&t.num>=0&&Number.isInteger(null==t?void 0:t.gen)&&t.gen>=0}var jm;const Km=class t{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId="d"+la(t,jm)._++,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){var t,e,n,l;this.destroyed=!0;try{null!=(t=this._worker)&&t.port&&(this._worker._pendingDestroy=!0),await(null==(e=this._transport)?void 0:e.destroy())}catch(i){throw null!=(n=this._worker)&&n.port&&delete this._worker._pendingDestroy,i}this._transport=null,null==(l=this._worker)||l.destroy(),this._worker=null}};jm=new WeakMap,ta(Km,jm,0);let Pm=Km,Am=class{constructor(t,e,n=!1,l=null){this.length=t,this.initialData=e,this.progressiveDone=n,this.contentDispositionFilename=l,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(t){this._rangeListeners.push(t)}addProgressListener(t){this._progressListeners.push(t)}addProgressiveReadListener(t){this._progressiveReadListeners.push(t)}addProgressiveDoneListener(t){this._progressiveDoneListeners.push(t)}onDataRange(t,e){for(const n of this._rangeListeners)n(t,e)}onDataProgress(t,e){this._readyCapability.promise.then((()=>{for(const n of this._progressListeners)n(t,e)}))}onDataProgressiveRead(t){this._readyCapability.promise.then((()=>{for(const e of this._progressiveReadListeners)e(t)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const t of this._progressiveDoneListeners)t()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(t,e){Ba("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class Hm{constructor(t,e){this._pdfInfo=t,this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return Ca(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getOptionalContentConfig(e)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(t){return this._transport.cachedPageNumber(t)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var qm,$m,tU,eU,nU,lU,iU,aU,sU,rU,oU,cU,dU,uU,hU;class mU{constructor(t,e,n,l=!1){ta(this,tU),ta(this,qm,null),ta(this,$m,!1),this._pageIndex=t,this._pageInfo=e,this._transport=n,this._stats=l?new Rs:null,this._pdfBug=l,this.commonObjs=n.commonObjs,this.objs=new BU,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:n=0,offsetY:l=0,dontFlip:i=!1}={}){return new Us({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:n,offsetY:l,dontFlip:i})}getAnnotations({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return Ca(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var t;return(null==(t=this._transport._htmlForXfa)?void 0:t.children[this._pageIndex])||null}render({canvasContext:t,viewport:e,intent:n="display",annotationMode:l=Ua.ENABLE,transform:i=null,background:a=null,optionalContentConfigPromise:s=null,annotationCanvasMap:r=null,pageColors:o=null,printAnnotationStorage:c=null,isEditing:d=!1}){var u,h;null==(u=this._stats)||u.time("Overall");const m=this._transport.getRenderingIntent(n,l,c,d),{renderingIntent:U,cacheKey:p}=m;ea(this,$m,!1),na(this,tU,nU).call(this),s||(s=this._transport.getOptionalContentConfig(U));let F=this._intentStates.get(p);F||(F=Object.create(null),this._intentStates.set(p,F)),F.streamReaderCancelTimeout&&(clearTimeout(F.streamReaderCancelTimeout),F.streamReaderCancelTimeout=null);const b=!!(U&ma.PRINT);F.displayReadyCapability||(F.displayReadyCapability=Promise.withResolvers(),F.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null==(h=this._stats)||h.time("Page Request"),this._pumpOperatorList(m));const Z=t=>{var e;F.renderTasks.delete(N),(this._maybeCleanupAfterRender||b)&&ea(this,$m,!0),na(this,tU,eU).call(this,!b),t?(N.capability.reject(t),this._abortOperatorList({intentState:F,reason:t instanceof Error?t:new Error(t)})):N.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),null!=(e=globalThis.Stats)&&e.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},N=new YU({callback:Z,params:{canvasContext:t,viewport:e,transform:i,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:r,operatorList:F.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!b,pdfBug:this._pdfBug,pageColors:o});(F.renderTasks||(F.renderTasks=new Set)).add(N);const R=N.task;return Promise.all([F.displayReadyCapability.promise,s]).then((([t,e])=>{var n;if(this.destroyed)Z();else{if(null==(n=this._stats)||n.time("Rendering"),!(e.renderingIntent&U))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");N.initializeGraphics({transparency:t,optionalContentConfig:e}),N.operatorListChanged()}})).catch(Z),R}getOperatorList({intent:t="display",annotationMode:e=Ua.ENABLE,printAnnotationStorage:n=null,isEditing:l=!1}={}){var i;function a(){o.operatorList.lastChunk&&(o.opListReadCapability.resolve(o.operatorList),o.renderTasks.delete(r))}const s=this._transport.getRenderingIntent(t,e,n,l,!0);let r,o=this._intentStates.get(s.cacheKey);return o||(o=Object.create(null),this._intentStates.set(s.cacheKey,o)),o.opListReadCapability||(r=Object.create(null),r.operatorListChanged=a,o.opListReadCapability=Promise.withResolvers(),(o.renderTasks||(o.renderTasks=new Set)).add(r),o.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null==(i=this._stats)||i.time("Page Request"),this._pumpOperatorList(s)),o.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size(t){return t.items.length}})}getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then((t=>Cm.textContent(t)));const e=this.streamTextContent(t);return new Promise((function(t,n){function l(){i.read().then((function({value:e,done:n}){n?t(a):(a.lang??(a.lang=e.lang),Object.assign(a.styles,e.styles),a.items.push(...e.items),l())}),n)}const i=e.getReader(),a={items:[],styles:Object.create(null),lang:null};l()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values())if(this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0}),!e.opListReadCapability)for(const n of e.renderTasks)t.push(n.completed),n.cancel();return this.objs.clear(),ea(this,$m,!1),na(this,tU,nU).call(this),Promise.all(t)}cleanup(t=!1){ea(this,$m,!0);const e=na(this,tU,eU).call(this,!1);return t&&e&&this._stats&&(this._stats=new Rs),e}_startRenderPage(t,e){var n,l;const i=this._intentStates.get(e);i&&(null==(n=this._stats)||n.timeEnd("Page Request"),null==(l=i.displayReadyCapability)||l.resolve(t))}_renderPageChunk(t,e){for(let n=0,l=t.length;n{s.read().then((({value:t,done:e})=>{e?r.streamReader=null:this._transport.destroyed||(this._renderPageChunk(t,r),o())}),(t=>{if(r.streamReader=null,!this._transport.destroyed){if(r.operatorList){r.operatorList.lastChunk=!0;for(const t of r.renderTasks)t.operatorListChanged();na(this,tU,eU).call(this,!0)}if(r.displayReadyCapability)r.displayReadyCapability.reject(t);else{if(!r.opListReadCapability)throw t;r.opListReadCapability.reject(t)}}}))};o()}_abortOperatorList({intentState:t,reason:e,force:n=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout&&(clearTimeout(t.streamReaderCancelTimeout),t.streamReaderCancelTimeout=null),!n){if(t.renderTasks.size>0)return;if(e instanceof ps){let n=Im;return e.extraDelay>0&&e.extraDelay<1e3&&(n+=e.extraDelay),void(t.streamReaderCancelTimeout=setTimeout((()=>{t.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:t,reason:e,force:!0})}),n))}}if(t.streamReader.cancel(new za(e.message)).catch((()=>{})),t.streamReader=null,!this._transport.destroyed){for(const[e,n]of this._intentStates)if(n===t){this._intentStates.delete(e);break}this.cleanup()}}}get stats(){return this._stats}}qm=new WeakMap,$m=new WeakMap,tU=new WeakSet,eU=function(t=!1){if(na(this,tU,nU).call(this),!$i(this,$m)||this.destroyed)return!1;if(t)return ea(this,qm,setTimeout((()=>{ea(this,qm,null),na(this,tU,eU).call(this,!1)}),Dm)),!1;for(const{renderTasks:e,operatorList:n}of this._intentStates.values())if(e.size>0||!n.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),ea(this,$m,!1),!0},nU=function(){$i(this,qm)&&(clearTimeout($i(this,qm)),ea(this,qm,null))};class UU{constructor(){ta(this,lU,new Map),ta(this,iU,Promise.resolve())}postMessage(t,e){const n={data:structuredClone(t,e?{transfer:e}:null)};$i(this,iU).then((()=>{for(const[t]of $i(this,lU))t.call(this,n)}))}addEventListener(t,e,n=null){let l=null;if((null==n?void 0:n.signal)instanceof AbortSignal){const{signal:i}=n;if(i.aborted)return void Ga("LoopbackPort - cannot use an `aborted` signal.");const a=()=>this.removeEventListener(t,e);l=()=>i.removeEventListener("abort",a),i.addEventListener("abort",a)}$i(this,lU).set(e,l)}removeEventListener(t,e){const n=$i(this,lU).get(e);null==n||n(),$i(this,lU).delete(e)}terminate(){for(const[,t]of $i(this,lU))null==t||t();$i(this,lU).clear()}}lU=new WeakMap,iU=new WeakMap;let pU=(aU=class{constructor({name:t=null,port:e=null,verbosity:n=ga()}={}){var l;if(ta(this,cU),this.name=t,this.destroyed=!1,this.verbosity=n,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,e){if(null!=(l=$i(aU,oU))&&l.has(e))throw new Error("Cannot use more than one PDFWorker per port.");return($i(aU,oU)||ea(aU,oU,new WeakMap)).set(e,this),void this._initializeFromPort(e)}this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(t){this._port=t,this._messageHandler=new au("main","worker",t),this._messageHandler.on("ready",(function(){})),na(this,cU,dU).call(this)}_initialize(){if($i(aU,rU)||$i(aU,uU,hU))return void this._setupFakeWorker();let{workerSrc:t}=aU;try{aU._isSameOrigin(window.location.href,t)||(t=aU._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),n=new au("main","worker",e),l=()=>{i.abort(),n.destroy(),e.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},i=new AbortController;e.addEventListener("error",(()=>{this._webWorker||l()}),{signal:i.signal}),n.on("test",(t=>{i.abort(),!this.destroyed&&t?(this._messageHandler=n,this._port=e,this._webWorker=e,na(this,cU,dU).call(this)):l()})),n.on("ready",(t=>{if(i.abort(),this.destroyed)l();else try{a()}catch{this._setupFakeWorker()}}));const a=()=>{const t=new Uint8Array;n.send("test",t,[t.buffer])};return void a()}catch{Ea("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){$i(aU,rU)||(Ga("Setting up fake worker."),ea(aU,rU,!0)),aU._setupFakeWorkerGlobal.then((t=>{if(this.destroyed)return void this._readyCapability.reject(new Error("Worker was destroyed"));const e=new UU;this._port=e;const n="fake"+la(aU,sU)._++,l=new au(n+"_worker",n,e);t.setup(l,e),this._messageHandler=new au(n,n+"_worker",e),na(this,cU,dU).call(this)})).catch((t=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`))}))}destroy(){var t,e,n;this.destroyed=!0,null==(t=this._webWorker)||t.terminate(),this._webWorker=null,null==(e=$i(aU,oU))||e.delete(this._port),this._port=null,null==(n=this._messageHandler)||n.destroy(),this._messageHandler=null}static fromPort(t){var e;if(null==t||!t.port)throw new Error("PDFWorker.fromPort - invalid method signature.");const n=null==(e=$i(this,oU))?void 0:e.get(t.port);if(n){if(n._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return n}return new aU(t)}static get workerSrc(){if(rh.workerSrc)return rh.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Ca(this,"_setupFakeWorkerGlobal",(async()=>$i(this,uU,hU)?$i(this,uU,hU):(await import(this.workerSrc)).WorkerMessageHandler)())}},sU=new WeakMap,rU=new WeakMap,oU=new WeakMap,cU=new WeakSet,dU=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},uU=new WeakSet,hU=function(){var t;try{return(null==(t=globalThis.pdfjsWorker)?void 0:t.WorkerMessageHandler)||null}catch{return null}},ta(aU,uU),ta(aU,sU,0),ta(aU,rU,!1),ta(aU,oU),oa&&(ea(aU,rU,!0),rh.workerSrc||(rh.workerSrc="./pdf.worker.mjs")),aU._isSameOrigin=(t,e)=>{let n;try{if(n=new URL(t),!n.origin||"null"===n.origin)return!1}catch{return!1}const l=new URL(e,n);return n.origin===l.origin},aU._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},aU);var FU,bU,ZU,NU,RU,SU,WU;class VU{constructor(t,e,n,l,i){ta(this,SU),ta(this,FU,new Map),ta(this,bU,new Map),ta(this,ZU,new Map),ta(this,NU,new Map),ta(this,RU,null),this.messageHandler=t,this.loadingTask=e,this.commonObjs=new BU,this.fontLoader=new Td({ownerDocument:l.ownerDocument,styleElement:l.styleElement}),this.loadingParams=l.loadingParams,this._params=l,this.canvasFactory=i.canvasFactory,this.filterFactory=i.filterFactory,this.cMapReaderFactory=i.cMapReaderFactory,this.standardFontDataFactory=i.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=n,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return Ca(this,"annotationStorage",new Qd)}getRenderingIntent(t,e=Ua.ENABLE,n=null,l=!1,i=!1){let a=ma.DISPLAY,s=Fd;switch(t){case"any":a=ma.ANY;break;case"display":break;case"print":a=ma.PRINT;break;default:Ga(`getRenderingIntent - invalid intent: ${t}`)}const r=a&ma.PRINT&&n instanceof yd?n:this.annotationStorage;switch(e){case Ua.DISABLE:a+=ma.ANNOTATIONS_DISABLE;break;case Ua.ENABLE:break;case Ua.ENABLE_FORMS:a+=ma.ANNOTATIONS_FORMS;break;case Ua.ENABLE_STORAGE:a+=ma.ANNOTATIONS_STORAGE,s=r.serializable;break;default:Ga(`getRenderingIntent - invalid annotationMode: ${e}`)}l&&(a+=ma.IS_EDITING),i&&(a+=ma.OPLIST);const{ids:o,hash:c}=r.modifiedIds,d=[a,s.hash,c];return{renderingIntent:a,cacheKey:d.join("_"),annotationStorageSerializable:s,modifiedIds:o}}destroy(){var t;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),null==(t=$i(this,RU))||t.reject(new Error("Worker was destroyed during onPassword callback"));const e=[];for(const l of $i(this,bU).values())e.push(l._destroy());$i(this,bU).clear(),$i(this,ZU).clear(),$i(this,NU).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const n=this.messageHandler.sendWithPromise("Terminate",null);return e.push(n),Promise.all(e).then((()=>{var t,e;this.commonObjs.clear(),this.fontLoader.clear(),$i(this,FU).clear(),this.filterFactory.destroy(),Ym.cleanup(),null==(t=this._networkStream)||t.cancelAllRequests(new za("Worker was terminated.")),null==(e=this.messageHandler)||e.destroy(),this.messageHandler=null,this.destroyCapability.resolve()}),this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",((t,e)=>{Ja(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}},e.onPull=()=>{this._fullReader.read().then((function({value:t,done:n}){n?e.close():(Ja(t instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),e.enqueue(new Uint8Array(t),1,[t]))})).catch((t=>{e.error(t)}))},e.onCancel=t=>{this._fullReader.cancel(t),e.ready.catch((t=>{if(!this.destroyed)throw t}))}})),t.on("ReaderHeadersReady",(async t=>{var n;await this._fullReader.headersReady;const{isStreamingSupported:l,isRangeSupported:i,contentLength:a}=this._fullReader;return(!l||!i)&&(this._lastProgress&&(null==(n=e.onProgress)||n.call(e,this._lastProgress)),this._fullReader.onProgress=t=>{var n;null==(n=e.onProgress)||n.call(e,{loaded:t.loaded,total:t.total})}),{isStreamingSupported:l,isRangeSupported:i,contentLength:a}})),t.on("GetRangeReader",((t,e)=>{Ja(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const n=this._networkStream.getRangeReader(t.begin,t.end);n?(e.onPull=()=>{n.read().then((function({value:t,done:n}){n?e.close():(Ja(t instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),e.enqueue(new Uint8Array(t),1,[t]))})).catch((t=>{e.error(t)}))},e.onCancel=t=>{n.cancel(t),e.ready.catch((t=>{if(!this.destroyed)throw t}))}):e.close()})),t.on("GetDoc",(({pdfInfo:t})=>{this._numPages=t.numPages,this._htmlForXfa=t.htmlForXfa,delete t.htmlForXfa,e._capability.resolve(new Hm(t,this))})),t.on("DocException",(t=>{e._capability.reject(Bd(t))})),t.on("PasswordRequest",(t=>{ea(this,RU,Promise.withResolvers());try{if(!e.onPassword)throw Bd(t);const n=t=>{t instanceof Error?$i(this,RU).reject(t):$i(this,RU).resolve({password:t})};e.onPassword(n,t.code)}catch(eG){$i(this,RU).reject(eG)}return $i(this,RU).promise})),t.on("DataLoaded",(t=>{var n;null==(n=e.onProgress)||n.call(e,{loaded:t.length,total:t.length}),this.downloadInfoCapability.resolve(t)})),t.on("StartRenderPage",(t=>{this.destroyed||$i(this,bU).get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)})),t.on("commonobj",(([e,n,l])=>{var i;if(this.destroyed||this.commonObjs.has(e))return null;switch(n){case"Font":const{disableFontFace:a,fontExtraProperties:s,pdfBug:r}=this._params;if("error"in l){const t=l.error;Ga(`Error during font loading: ${t}`),this.commonObjs.resolve(e,t);break}const o=r&&null!=(i=globalThis.FontInspector)&&i.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,c=new Md(l,{disableFontFace:a,fontExtraProperties:s,inspectFont:o});this.fontLoader.bind(c).catch((()=>t.sendWithPromise("FontFallback",{id:e}))).finally((()=>{!s&&c.data&&(c.data=null),this.commonObjs.resolve(e,c)}));break;case"CopyLocalImage":const{imageRef:d}=l;Ja(d,"The imageRef must be defined.");for(const t of $i(this,bU).values())for(const[,n]of t.objs)if((null==n?void 0:n.ref)===d)return n.dataLen?(this.commonObjs.resolve(e,structuredClone(n)),n.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(e,l);break;default:throw new Error(`Got unknown common object type ${n}`)}return null})),t.on("obj",(([t,e,n,l])=>{var i;if(this.destroyed)return;const a=$i(this,bU).get(e);if(!a.objs.has(t)){if(0===a._intentStates.size)return void(null==(i=null==l?void 0:l.bitmap)||i.close());switch(n){case"Image":a.objs.resolve(t,l),(null==l?void 0:l.dataLen)>ua&&(a._maybeCleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(t,l);break;default:throw new Error(`Got unknown object type ${n}`)}}})),t.on("DocProgress",(t=>{var n;this.destroyed||null==(n=e.onProgress)||n.call(e,{loaded:t.loaded,total:t.total})})),t.on("FetchBuiltInCMap",(async t=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.cMapReaderFactory)throw new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.");return this.cMapReaderFactory.fetch(t)})),t.on("FetchStandardFontData",(async t=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.standardFontDataFactory)throw new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.");return this.standardFontDataFactory.fetch(t)}))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var t;this.annotationStorage.size<=0&&Ga("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:e,transfer:n}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:e,filename:(null==(t=this._fullReader)?void 0:t.filename)??null},n).finally((()=>{this.annotationStorage.resetModified()}))}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,n=$i(this,ZU).get(e);if(n)return n;const l=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then((n=>{if(this.destroyed)throw new Error("Transport destroyed");n.refStr&&$i(this,NU).set(n.refStr,t);const l=new mU(e,n,this,this._params.pdfBug);return $i(this,bU).set(e,l),l}));return $i(this,ZU).set(e,l),l}getPageIndex(t){return _m(t)?this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return na(this,SU,WU).call(this,"GetFieldObjects")}hasJSActions(){return na(this,SU,WU).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return na(this,SU,WU).call(this,"GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(t){return na(this,SU,WU).call(this,"GetOptionalContentConfig").then((e=>new Vh(e,t)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=$i(this,FU).get(t);if(e)return e;const n=this.messageHandler.sendWithPromise(t,null).then((t=>{var e,n;return{info:t[0],metadata:t[1]?new dh(t[1]):null,contentDispositionFilename:(null==(e=this._fullReader)?void 0:e.filename)??null,contentLength:(null==(n=this._fullReader)?void 0:n.contentLength)??null}}));return $i(this,FU).set(t,n),n}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of $i(this,bU).values())if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`);this.commonObjs.clear(),t||this.fontLoader.clear(),$i(this,FU).clear(),this.filterFactory.destroy(!0),Ym.cleanup()}}cachedPageNumber(t){if(!_m(t))return null;const e=0===t.gen?`${t.num}R`:`${t.num}R${t.gen}`;return $i(this,NU).get(e)??null}}FU=new WeakMap,bU=new WeakMap,ZU=new WeakMap,NU=new WeakMap,RU=new WeakMap,SU=new WeakSet,WU=function(t,e=null){const n=$i(this,FU).get(t);if(n)return n;const l=this.messageHandler.sendWithPromise(t,e);return $i(this,FU).set(t,l),l};const QU=Symbol("INITIAL_DATA");var yU,TU,MU,gU,EU,GU;class BU{constructor(){ta(this,TU),ta(this,yU,Object.create(null))}get(t,e=null){if(e){const n=na(this,TU,MU).call(this,t);return n.promise.then((()=>e(n.data))),null}const n=$i(this,yU)[t];if(!n||n.data===QU)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return n.data}has(t){const e=$i(this,yU)[t];return!!e&&e.data!==QU}delete(t){const e=$i(this,yU)[t];return!(!e||e.data===QU)&&(delete $i(this,yU)[t],!0)}resolve(t,e=null){const n=na(this,TU,MU).call(this,t);n.data=e,n.resolve()}clear(){var t;for(const e in $i(this,yU)){const{data:n}=$i(this,yU)[e];null==(t=null==n?void 0:n.bitmap)||t.close()}ea(this,yU,Object.create(null))}*[Symbol.iterator](){for(const t in $i(this,yU)){const{data:e}=$i(this,yU)[t];e!==QU&&(yield[t,e])}}}yU=new WeakMap,TU=new WeakSet,MU=function(t){var e;return(e=$i(this,yU))[t]||(e[t]={...Promise.withResolvers(),data:QU})};class JU{constructor(t){ta(this,gU,null),ea(this,gU,t),this.onContinue=null}get promise(){return $i(this,gU).capability.promise}cancel(t=0){$i(this,gU).cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=$i(this,gU).operatorList;if(!t)return!1;const{annotationCanvasMap:e}=$i(this,gU);return t.form||t.canvas&&(null==e?void 0:e.size)>0}}gU=new WeakMap;const kU=class t{constructor({callback:t,params:e,objs:n,commonObjs:l,annotationCanvasMap:i,operatorList:a,pageIndex:s,canvasFactory:r,filterFactory:o,useRequestAnimationFrame:c=!1,pdfBug:d=!1,pageColors:u=null}){ta(this,EU,null),this.callback=t,this.params=e,this.objs=n,this.commonObjs=l,this.annotationCanvasMap=i,this.operatorListIdx=null,this.operatorList=a,this._pageIndex=s,this.canvasFactory=r,this.filterFactory=o,this._pdfBug=d,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=!0===c&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new JU(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=e.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics({transparency:e=!1,optionalContentConfig:n}){var l,i;if(this.cancelled)return;if(this._canvas){if($i(t,GU).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");$i(t,GU).add(this._canvas)}this._pdfBug&&null!=(l=globalThis.StepperManager)&&l.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:a,viewport:s,transform:r,background:o}=this.params;this.gfx=new lh(a,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:r,viewport:s,transparency:e,background:o}),this.operatorListIdx=0,this.graphicsReady=!0,null==(i=this.graphicsReadyCallback)||i.call(this)}cancel(e=null,n=0){var l;this.running=!1,this.cancelled=!0,null==(l=this.gfx)||l.endDrawing(),$i(this,EU)&&(window.cancelAnimationFrame($i(this,EU)),ea(this,EU,null)),$i(t,GU).delete(this._canvas),this.callback(e||new ps(`Rendering cancelled, page ${this._pageIndex+1}`,n))}operatorListChanged(){var t;this.graphicsReady?(null==(t=this.stepper)||t.updateOperatorList(this.operatorList),!this.running&&this._continue()):this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound)}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?ea(this,EU,window.requestAnimationFrame((()=>{ea(this,EU,null),this._nextBound().catch(this._cancelBound)}))):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),$i(t,GU).delete(this._canvas),this.callback())))}};EU=new WeakMap,GU=new WeakMap,ta(kU,GU,new WeakSet);let YU=kU;const CU="4.10.38",XU="f9bea397f";function IU(t){return Math.floor(255*Math.max(0,Math.min(1,t))).toString(16).padStart(2,"0")}function DU(t){return Math.max(0,Math.min(255,255*t))}sa(670);class fU{static CMYK_G([t,e,n,l]){return["G",1-Math.min(1,.3*t+.59*n+.11*e+l)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return t=DU(t),[t,t,t]}static G_HTML([t]){const e=IU(t);return`#${e}${e}${e}`}static RGB_G([t,e,n]){return["G",.3*t+.59*e+.11*n]}static RGB_rgb(t){return t.map(DU)}static RGB_HTML(t){return`#${t.map(IU).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,n,l]){return["RGB",1-Math.min(1,t+l),1-Math.min(1,n+l),1-Math.min(1,e+l)]}static CMYK_rgb([t,e,n,l]){return[DU(1-Math.min(1,t+l)),DU(1-Math.min(1,n+l)),DU(1-Math.min(1,e+l))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,n]){const l=1-t,i=1-e,a=1-n,s=Math.min(l,i,a);return["CMYK",l,i,a,s]}}class LU{create(t,e,n=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const l=this._createSVG("svg:svg");return l.setAttribute("version","1.1"),n||(l.setAttribute("width",`${t}px`),l.setAttribute("height",`${e}px`)),l.setAttribute("preserveAspectRatio","none"),l.setAttribute("viewBox",`0 0 ${t} ${e}`),l}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){Ba("Abstract method `_createSVG` called.")}}let wU=class extends LU{_createSVG(t){return document.createElementNS(ds,t)}},xU=class{static setupStorage(t,e,n,l,i){const a=l.getValue(e,{value:null});switch(n.name){case"textarea":if(null!==a.value&&(t.textContent=a.value),"print"===i)break;t.addEventListener("input",(t=>{l.setValue(e,{value:t.target.value})}));break;case"input":if("radio"===n.attributes.type||"checkbox"===n.attributes.type){if(a.value===n.attributes.xfaOn?t.setAttribute("checked",!0):a.value===n.attributes.xfaOff&&t.removeAttribute("checked"),"print"===i)break;t.addEventListener("change",(t=>{l.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})}))}else{if(null!==a.value&&t.setAttribute("value",a.value),"print"===i)break;t.addEventListener("input",(t=>{l.setValue(e,{value:t.target.value})}))}break;case"select":if(null!==a.value){t.setAttribute("value",a.value);for(const t of n.children)t.attributes.value===a.value?t.attributes.selected=!0:t.attributes.hasOwnProperty("selected")&&delete t.attributes.selected}t.addEventListener("input",(t=>{const n=t.target.options,i=-1===n.selectedIndex?"":n[n.selectedIndex].value;l.setValue(e,{value:i})}));break}}static setAttributes({html:t,element:e,storage:n=null,intent:l,linkService:i}){const{attributes:a}=e,s=t instanceof HTMLAnchorElement;"radio"===a.type&&(a.name=`${a.name}-${l}`);for(const[r,o]of Object.entries(a))if(null!=o)switch(r){case"class":o.length&&t.setAttribute(r,o.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",o);break;case"style":Object.assign(t.style,o);break;case"textContent":t.textContent=o;break;default:(!s||"href"!==r&&"newWindow"!==r)&&t.setAttribute(r,o)}s&&i.addLinkAttributes(t,a.href,a.newWindow),n&&a.dataId&&this.setupStorage(t,a.dataId,e,n)}static render(t){var e,n;const l=t.annotationStorage,i=t.linkService,a=t.xfaHtml,s=t.intent||"display",r=document.createElement(a.name);a.attributes&&this.setAttributes({html:r,element:a,intent:s,linkService:i});const o="richText"!==s,c=t.div;if(c.append(r),t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;c.style.transform=e}o&&c.setAttribute("class","xfaLayer xfaFont");const d=[];if(0===a.children.length){if(a.value){const t=document.createTextNode(a.value);r.append(t),o&&Cm.shouldBuildText(a.name)&&d.push(t)}return{textDivs:d}}const u=[[a,-1,r]];for(;u.length>0;){const[t,a,r]=u.at(-1);if(a+1===t.children.length){u.pop();continue}const c=t.children[++u.at(-1)[1]];if(null===c)continue;const{name:h}=c;if("#text"===h){const t=document.createTextNode(c.value);d.push(t),r.append(t);continue}const m=null!=(e=null==c?void 0:c.attributes)&&e.xmlns?document.createElementNS(c.attributes.xmlns,h):document.createElement(h);if(r.append(m),c.attributes&&this.setAttributes({html:m,element:c,storage:l,intent:s,linkService:i}),(null==(n=c.children)?void 0:n.length)>0)u.push([c,-1,m]);else if(c.value){const t=document.createTextNode(c.value);o&&Cm.shouldBuildText(h)&&d.push(t),m.append(t)}}for(const h of c.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))h.setAttribute("readOnly",!0);return{textDivs:d}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}};const zU=1e3,vU=9,OU=new WeakSet;function _U(t){return{width:t[2]-t[0],height:t[3]-t[1]}}class jU{static create(t){switch(t.data.annotationType){case Sa.LINK:return new $p(t);case Sa.TEXT:return new tF(t);case Sa.WIDGET:switch(t.data.fieldType){case"Tx":return new nF(t);case"Btn":return t.data.radioButton?new aF(t):t.data.checkBox?new iF(t):new sF(t);case"Ch":return new rF(t);case"Sig":return new lF(t)}return new eF(t);case Sa.POPUP:return new oF(t);case Sa.FREETEXT:return new dF(t);case Sa.LINE:return new uF(t);case Sa.SQUARE:return new hF(t);case Sa.CIRCLE:return new mF(t);case Sa.POLYLINE:return new UF(t);case Sa.CARET:return new FF(t);case Sa.INK:return new bF(t);case Sa.POLYGON:return new pF(t);case Sa.HIGHLIGHT:return new ZF(t);case Sa.UNDERLINE:return new NF(t);case Sa.SQUIGGLY:return new RF(t);case Sa.STRIKEOUT:return new SF(t);case Sa.STAMP:return new WF(t);case Sa.FILEATTACHMENT:return new VF(t);default:return new tp(t)}}}var KU,PU,AU,HU,qU;const $U=class t{constructor(t,{isRenderable:e=!1,ignoreBorder:n=!1,createQuadrilaterals:l=!1}={}){ta(this,HU),ta(this,KU,null),ta(this,PU,!1),ta(this,AU,null),this.isRenderable=e,this.data=t.data,this.layer=t.layer,this.linkService=t.linkService,this.downloadManager=t.downloadManager,this.imageResourcesPath=t.imageResourcesPath,this.renderForms=t.renderForms,this.svgFactory=t.svgFactory,this.annotationStorage=t.annotationStorage,this.enableScripting=t.enableScripting,this.hasJSActions=t.hasJSActions,this._fieldObjects=t.fieldObjects,this.parent=t.parent,e&&(this.container=this._createContainer(n)),l&&this._createQuadrilaterals()}static _hasPopupData({titleObj:t,contentsObj:e,richText:n}){return!!(null!=t&&t.str||null!=e&&e.str||null!=n&&n.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return t._hasPopupData(this.data)}updateEdited(t){var e;if(!this.container)return;$i(this,KU)||ea(this,KU,{rect:this.data.rect.slice(0)});const{rect:n}=t;n&&na(this,HU,qU).call(this,n),null==(e=$i(this,AU))||e.popup.updateEdited(t)}resetEdited(){var t;$i(this,KU)&&(na(this,HU,qU).call(this,$i(this,KU).rect),null==(t=$i(this,AU))||t.popup.resetEdited(),ea(this,KU,null))}_createContainer(t){const{data:e,parent:{page:n,viewport:l}}=this,i=document.createElement("section");i.setAttribute("data-annotation-id",e.id),this instanceof eF||(i.tabIndex=zU);const{style:a}=i;if(a.zIndex=this.parent.zIndex++,e.alternativeText&&(i.title=e.alternativeText),e.noRotate&&i.classList.add("norotate"),!e.rect||this instanceof oF){const{rotation:t}=e;return!e.hasOwnCanvas&&0!==t&&this.setRotation(t,i),i}const{width:s,height:r}=_U(e.rect);if(!t&&e.borderStyle.width>0){a.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,n=e.borderStyle.verticalCornerRadius;if(t>0||n>0){const e=`calc(${t}px * var(--scale-factor)) / calc(${n}px * var(--scale-factor))`;a.borderRadius=e}else if(this instanceof aF){const t=`calc(${s}px * var(--scale-factor)) / calc(${r}px * var(--scale-factor))`;a.borderRadius=t}switch(e.borderStyle.style){case Wa.SOLID:a.borderStyle="solid";break;case Wa.DASHED:a.borderStyle="dashed";break;case Wa.BEVELED:Ga("Unimplemented border style: beveled");break;case Wa.INSET:Ga("Unimplemented border style: inset");break;case Wa.UNDERLINE:a.borderBottomStyle="solid";break}const l=e.borderColor||null;l?(ea(this,PU,!0),a.borderColor=ns.makeHexColor(0|l[0],0|l[1],0|l[2])):a.borderWidth=0}const o=ns.normalizeRect([e.rect[0],n.view[3]-e.rect[1]+n.view[1],e.rect[2],n.view[3]-e.rect[3]+n.view[1]]),{pageWidth:c,pageHeight:d,pageX:u,pageY:h}=l.rawDims;a.left=100*(o[0]-u)/c+"%",a.top=100*(o[1]-h)/d+"%";const{rotation:m}=e;return e.hasOwnCanvas||0===m?(a.width=100*s/c+"%",a.height=100*r/d+"%"):this.setRotation(m,i),i}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:n,pageHeight:l}=this.parent.viewport.rawDims,{width:i,height:a}=_U(this.data.rect);let s,r;t%180===0?(s=100*i/n,r=100*a/l):(s=100*a/n,r=100*i/l),e.style.width=`${s}%`,e.style.height=`${r}%`,e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const t=(t,e,n)=>{const l=n.detail[t],i=l[0],a=l.slice(1);n.target.style[e]=fU[`${i}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[e]:fU[`${i}_rgb`](a)})};return Ca(this,"_commonActions",{display:t=>{const{display:e}=t.detail,n=e%2===1;this.container.style.visibility=n?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:1===e||2===e})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:e}=t.detail;this.container.style.visibility=e?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:t=>{setTimeout((()=>t.target.focus({preventScroll:!1})),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:e=>{t("bgColor","backgroundColor",e)},fillColor:e=>{t("fillColor","backgroundColor",e)},fgColor:e=>{t("fgColor","color",e)},textColor:e=>{t("textColor","color",e)},borderColor:e=>{t("borderColor","borderColor",e)},strokeColor:e=>{t("strokeColor","borderColor",e)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e),this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const n=this._commonActions;for(const l of Object.keys(e.detail)){const i=t[l]||n[l];null==i||i(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const n=this._commonActions;for(const[l,i]of Object.entries(e)){const a=n[l];if(a){const n={detail:{[l]:i},target:t};a(n),delete e[l]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,n,l,i]=this.data.rect.map((t=>Math.fround(t)));if(8===t.length){const[a,s,r,o]=t.subarray(2,6);if(l===a&&i===s&&e===r&&n===o)return}const{style:a}=this.container;let s;if($i(this,PU)){const{borderColor:t,borderWidth:e}=a;a.borderWidth=0,s=["url('data:image/svg+xml;utf8,",'',``],this.container.classList.add("hasBorder")}const r=l-e,o=i-n,{svgFactory:c}=this,d=c.createElement("svg");d.classList.add("quadrilateralsContainer"),d.setAttribute("width",0),d.setAttribute("height",0);const u=c.createElement("defs");d.append(u);const h=c.createElement("clipPath"),m=`clippath_${this.data.id}`;h.setAttribute("id",m),h.setAttribute("clipPathUnits","objectBoundingBox"),u.append(h);for(let U=2,p=t.length;U`)}$i(this,PU)&&(s.push("')"),a.backgroundImage=s.join("")),this.container.append(d),this.container.style.clipPath=`url(#${m})`}_createPopup(){const{data:t}=this,e=ea(this,AU,new oF({data:{color:t.color,titleObj:t.titleObj,modificationDate:t.modificationDate,contentsObj:t.contentsObj,richText:t.richText,parentRect:t.rect,borderStyle:0,id:`popup_${t.id}`,rotation:t.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(e.render())}render(){Ba("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const n=[];if(this._fieldObjects){const l=this._fieldObjects[t];if(l)for(const{page:t,id:i,exportValues:a}of l){if(-1===t||i===e)continue;const l="string"==typeof a?a:null,s=document.querySelector(`[data-element-id="${i}"]`);!s||OU.has(s)?n.push({id:i,exportValue:l,domElement:s}):Ga(`_getElementsByName - element not allowed: ${i}`)}return n}for(const l of document.getElementsByName(t)){const{exportValue:t}=l,i=l.getAttribute("data-element-id");i!==e&&OU.has(l)&&n.push({id:i,exportValue:t,domElement:l})}return n}show(){var t;this.container&&(this.container.hidden=!1),null==(t=this.popup)||t.maybeShow()}hide(){var t;this.container&&(this.container.hidden=!0),null==(t=this.popup)||t.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",(()=>{var n;null==(n=this.linkService.eventBus)||n.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e})}))}};KU=new WeakMap,PU=new WeakMap,AU=new WeakMap,HU=new WeakSet,qU=function(t){const{container:{style:e},data:{rect:n,rotation:l},parent:{viewport:{rawDims:{pageWidth:i,pageHeight:a,pageX:s,pageY:r}}}}=this;null==n||n.splice(0,4,...t);const{width:o,height:c}=_U(t);e.left=100*(t[0]-s)/i+"%",e.top=100*(a-t[3]+r)/a+"%",0===l?(e.width=100*o/i+"%",e.height=100*c/a+"%"):this.setRotation(l)};let tp=$U;var ep,np,lp,ip,ap,sp,rp,op,cp,dp,up,hp,mp,Up,pp,Fp,bp,Zp,Np,Rp,Sp,Wp,Vp,Qp,yp,Tp,Mp,gp,Ep,Gp,Bp,Jp,kp,Yp,Cp,Xp,Ip,Dp,fp,Lp,wp,xp,zp,vp,Op,_p,jp,Kp,Pp,Ap,Hp,qp;class $p extends tp{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!(null==e||!e.ignoreBorder),createQuadrilaterals:!0}),ta(this,ep),this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,n=document.createElement("a");n.setAttribute("data-element-id",t.id);let l=!1;return t.url?(e.addLinkAttributes(n,t.url,t.newWindow),l=!0):t.action?(this._bindNamedAction(n,t.action),l=!0):t.attachment?(na(this,ep,lp).call(this,n,t.attachment,t.attachmentDest),l=!0):t.setOCGState?(na(this,ep,ip).call(this,n,t.setOCGState),l=!0):t.dest?(this._bindLink(n,t.dest),l=!0):(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(n,t),l=!0),t.resetForm?(this._bindResetFormAction(n,t.resetForm),l=!0):this.isTooltipOnly&&!l&&(this._bindLink(n,""),l=!0)),this.container.classList.add("linkAnnotation"),l&&this.container.append(n),this.container}_bindLink(t,e){t.href=this.linkService.getDestinationHash(e),t.onclick=()=>(e&&this.linkService.goToDestination(e),!1),(e||""===e)&&na(this,ep,np).call(this)}_bindNamedAction(t,e){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeNamedAction(e),!1),na(this,ep,np).call(this)}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const l of Object.keys(e.actions)){const i=n.get(l);i&&(t[i]=()=>{var t;return null==(t=this.linkService.eventBus)||t.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:l}}),!1})}t.onclick||(t.onclick=()=>!1),na(this,ep,np).call(this)}_bindResetFormAction(t,e){const n=t.onclick;if(n||(t.href=this.linkService.getAnchorUrl("")),na(this,ep,np).call(this),!this._fieldObjects)return Ga('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),void(n||(t.onclick=()=>!1));t.onclick=()=>{var t;null==n||n();const{fields:l,refs:i,include:a}=e,s=[];if(0!==l.length||0!==i.length){const t=new Set(i);for(const e of l){const n=this._fieldObjects[e]||[];for(const{id:e}of n)t.add(e)}for(const e of Object.values(this._fieldObjects))for(const n of e)t.has(n.id)===a&&s.push(n)}else for(const e of Object.values(this._fieldObjects))s.push(...e);const r=this.annotationStorage,o=[];for(const e of s){const{id:t}=e;switch(o.push(t),e.type){case"text":{const n=e.defaultValue||"";r.setValue(t,{value:n});break}case"checkbox":case"radiobutton":{const n=e.defaultValue===e.exportValues;r.setValue(t,{value:n});break}case"combobox":case"listbox":{const n=e.defaultValue||"";r.setValue(t,{value:n});break}default:continue}const n=document.querySelector(`[data-element-id="${t}"]`);n&&(OU.has(n)?n.dispatchEvent(new Event("resetform")):Ga(`_bindResetFormAction - element not allowed: ${t}`))}return this.enableScripting&&(null==(t=this.linkService.eventBus)||t.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:o,name:"ResetForm"}})),!1}}}ep=new WeakSet,np=function(){this.container.setAttribute("data-internal-link","")},lp=function(t,e,n=null){t.href=this.linkService.getAnchorUrl(""),e.description&&(t.title=e.description),t.onclick=()=>{var t;return null==(t=this.downloadManager)||t.openOrDownloadData(e.content,e.filename,n),!1},na(this,ep,np).call(this)},ip=function(t,e){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeSetOCGState(e),!1),na(this,ep,np).call(this)};class tF extends tp{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");return t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(t),this.container}}class eF extends tp{render(){return this.container}showElementAndHideCanvas(t){var e;this.data.hasOwnCanvas&&("CANVAS"===(null==(e=t.previousSibling)?void 0:e.nodeName)&&(t.previousSibling.hidden=!0),t.hidden=!1)}_getKeyModifier(t){return Aa.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,n,l,i){n.includes("mouse")?t.addEventListener(n,(t=>{var e;null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:l,value:i(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})})):t.addEventListener(n,(t=>{var a;if("blur"===n){if(!e.focused||!t.relatedTarget)return;e.focused=!1}else if("focus"===n){if(e.focused)return;e.focused=!0}i&&(null==(a=this.linkService.eventBus)||a.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:l,value:i(t)}}))}))}_setEventListeners(t,e,n,l){var i,a,s;for(const[r,o]of n)("Action"===o||null!=(i=this.data.actions)&&i[o])&&(("Focus"===o||"Blur"===o)&&(e||(e={focused:!1})),this._setEventListener(t,e,r,o,l),"Focus"!==o||null!=(a=this.data.actions)&&a.Blur?"Blur"===o&&(null==(s=this.data.actions)||!s.Focus)&&this._setEventListener(t,e,"focus","Focus",null):this._setEventListener(t,e,"blur","Blur",null))}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=null===e?"transparent":ns.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:n}=this.data.defaultAppearanceData,l=this.data.defaultAppearanceData.fontSize||vU,i=t.style;let a;const s=2,r=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-s),e=Math.round(t/(ha*l))||1,n=t/e;a=Math.min(l,r(n/ha))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-s);a=Math.min(l,r(t/ha))}i.fontSize=`calc(${a}px * var(--scale-factor))`,i.color=ns.makeHexColor(n[0],n[1],n[2]),null!==this.data.textAlignment&&(i.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required"),t.setAttribute("aria-required",e)}}class nF extends eF{constructor(t){const e=t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue;super(t,{isRenderable:e})}setPropertyOnSiblings(t,e,n,l){const i=this.annotationStorage;for(const a of this._getElementsByName(t.name,t.id))a.domElement&&(a.domElement[e]=n),i.setValue(a.id,{[l]:n})}render(){var t,e;const n=this.annotationStorage,l=this.data.id;this.container.classList.add("textWidgetAnnotation");let i=null;if(this.renderForms){const a=n.getValue(l,{value:this.data.fieldValue});let s=a.value||"";const r=n.getValue(l,{charLimit:this.data.maxLen}).charLimit;r&&s.length>r&&(s=s.slice(0,r));let o=a.formattedValue||(null==(t=this.data.textContent)?void 0:t.join("\n"))||null;o&&this.data.comb&&(o=o.replaceAll(/\s+/g,""));const c={userValue:s,formattedValue:o,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(i=document.createElement("textarea"),i.textContent=o??s,this.data.doNotScroll&&(i.style.overflowY="hidden")):(i=document.createElement("input"),i.type="text",i.setAttribute("value",o??s),this.data.doNotScroll&&(i.style.overflowX="hidden")),this.data.hasOwnCanvas&&(i.hidden=!0),OU.add(i),i.setAttribute("data-element-id",l),i.disabled=this.data.readOnly,i.name=this.data.fieldName,i.tabIndex=zU,this._setRequired(i,this.data.required),r&&(i.maxLength=r),i.addEventListener("input",(t=>{n.setValue(l,{value:t.target.value}),this.setPropertyOnSiblings(i,"value",t.target.value,"value"),c.formattedValue=null})),i.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue??"";i.value=c.userValue=e,c.formattedValue=null}));let d=t=>{const{formattedValue:e}=c;null!=e&&(t.target.value=e),t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){i.addEventListener("focus",(t=>{var e;if(c.focused)return;const{target:n}=t;c.userValue&&(n.value=c.userValue),c.lastCommittedValue=n.value,c.commitKey=1,null!=(e=this.data.actions)&&e.Focus||(c.focused=!0)})),i.addEventListener("updatefromsandbox",(t=>{this.showElementAndHideCanvas(t.target);const e={value(t){c.userValue=t.detail.value??"",n.setValue(l,{value:c.userValue.toString()}),t.target.value=c.userValue},formattedValue(t){const{formattedValue:e}=t.detail;c.formattedValue=e,null!=e&&t.target!==document.activeElement&&(t.target.value=e),n.setValue(l,{formattedValue:e})},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:t=>{var e;const{charLimit:i}=t.detail,{target:a}=t;if(0===i)return void a.removeAttribute("maxLength");a.setAttribute("maxLength",i);let s=c.userValue;!s||s.length<=i||(s=s.slice(0,i),a.value=c.userValue=s,n.setValue(l,{value:s}),null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:s,willCommit:!0,commitKey:1,selStart:a.selectionStart,selEnd:a.selectionEnd}}))}};this._dispatchEventFromSandbox(e,t)})),i.addEventListener("keydown",(t=>{var e;c.commitKey=1;let n=-1;if("Escape"===t.key?n=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(c.commitKey=3):n=2,-1===n)return;const{value:i}=t.target;c.lastCommittedValue!==i&&(c.lastCommittedValue=i,c.userValue=i,null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:i,willCommit:!0,commitKey:n,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}}))}));const t=d;d=null,i.addEventListener("blur",(e=>{var n,i;if(!c.focused||!e.relatedTarget)return;null!=(n=this.data.actions)&&n.Blur||(c.focused=!1);const{value:a}=e.target;c.userValue=a,c.lastCommittedValue!==a&&(null==(i=this.linkService.eventBus)||i.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:a,willCommit:!0,commitKey:c.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}})),t(e)})),null!=(e=this.data.actions)&&e.Keystroke&&i.addEventListener("beforeinput",(t=>{var e;c.lastCommittedValue=null;const{data:n,target:i}=t,{value:a,selectionStart:s,selectionEnd:r}=i;let o=s,d=r;switch(t.inputType){case"deleteWordBackward":{const t=a.substring(0,s).match(/\w*[^\w]*$/);t&&(o-=t[0].length);break}case"deleteWordForward":{const t=a.substring(s).match(/^[^\w]*\w*/);t&&(d+=t[0].length);break}case"deleteContentBackward":s===r&&(o-=1);break;case"deleteContentForward":s===r&&(d+=1);break}t.preventDefault(),null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:a,change:n||"",willCommit:!1,selStart:o,selEnd:d}})})),this._setEventListeners(i,c,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.value))}if(d&&i.addEventListener("blur",d),this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/r;i.classList.add("comb"),i.style.letterSpacing=`calc(${t}px * var(--scale-factor) - 1ch)`}}else i=document.createElement("div"),i.textContent=this.data.fieldValue,i.style.verticalAlign="middle",i.style.display="table-cell",this.data.hasOwnCanvas&&(i.hidden=!0);return this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class lF extends eF{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class iF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,n=e.id;let l=t.getValue(n,{value:e.exportValue===e.fieldValue}).value;"string"==typeof l&&(l="Off"!==l,t.setValue(n,{value:l})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const i=document.createElement("input");return OU.add(i),i.setAttribute("data-element-id",n),i.disabled=e.readOnly,this._setRequired(i,this.data.required),i.type="checkbox",i.name=e.fieldName,l&&i.setAttribute("checked",!0),i.setAttribute("exportValue",e.exportValue),i.tabIndex=zU,i.addEventListener("change",(l=>{const{name:i,checked:a}=l.target;for(const s of this._getElementsByName(i,n)){const n=a&&s.exportValue===e.exportValue;s.domElement&&(s.domElement.checked=n),t.setValue(s.id,{value:n})}t.setValue(n,{value:a})})),i.addEventListener("resetform",(t=>{const n=e.defaultFieldValue||"Off";t.target.checked=n===e.exportValue})),this.enableScripting&&this.hasJSActions&&(i.addEventListener("updatefromsandbox",(e=>{const l={value(e){e.target.checked="Off"!==e.detail.value,t.setValue(n,{value:e.target.checked})}};this._dispatchEventFromSandbox(l,e)})),this._setEventListeners(i,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class aF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,n=e.id;let l=t.getValue(n,{value:e.fieldValue===e.buttonValue}).value;if("string"==typeof l&&(l=l!==e.buttonValue,t.setValue(n,{value:l})),l)for(const a of this._getElementsByName(e.fieldName,n))t.setValue(a.id,{value:!1});const i=document.createElement("input");if(OU.add(i),i.setAttribute("data-element-id",n),i.disabled=e.readOnly,this._setRequired(i,this.data.required),i.type="radio",i.name=e.fieldName,l&&i.setAttribute("checked",!0),i.tabIndex=zU,i.addEventListener("change",(e=>{const{name:l,checked:i}=e.target;for(const a of this._getElementsByName(l,n))t.setValue(a.id,{value:!1});t.setValue(n,{value:i})})),i.addEventListener("resetform",(t=>{const n=e.defaultFieldValue;t.target.checked=null!=n&&n===e.buttonValue})),this.enableScripting&&this.hasJSActions){const l=e.buttonValue;i.addEventListener("updatefromsandbox",(e=>{const i={value:e=>{const i=l===e.detail.value;for(const l of this._getElementsByName(e.target.name)){const e=i&&l.id===n;l.domElement&&(l.domElement.checked=e),t.setValue(l.id,{value:e})}}};this._dispatchEventFromSandbox(i,e)})),this._setEventListeners(i,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}return this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class sF extends $p{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;return this.enableScripting&&this.hasJSActions&&e&&(this._setDefaultPropertiesFromJS(e),e.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({},t)}))),t}}class rF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,n=t.getValue(e,{value:this.data.fieldValue}),l=document.createElement("select");OU.add(l),l.setAttribute("data-element-id",e),l.disabled=this.data.readOnly,this._setRequired(l,this.data.required),l.name=this.data.fieldName,l.tabIndex=zU;let i=this.data.combo&&this.data.options.length>0;this.data.combo||(l.size=this.data.options.length,this.data.multiSelect&&(l.multiple=!0)),l.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue;for(const n of l.options)n.selected=n.value===e}));for(const c of this.data.options){const t=document.createElement("option");t.textContent=c.displayValue,t.value=c.exportValue,n.value.includes(c.exportValue)&&(t.setAttribute("selected",!0),i=!1),l.append(t)}let a=null;if(i){const t=document.createElement("option");t.value=" ",t.setAttribute("hidden",!0),t.setAttribute("selected",!0),l.prepend(t),a=()=>{t.remove(),l.removeEventListener("input",a),a=null},l.addEventListener("input",a)}const s=t=>{const e=t?"value":"textContent",{options:n,multiple:i}=l;return i?Array.prototype.filter.call(n,(t=>t.selected)).map((t=>t[e])):-1===n.selectedIndex?null:n[n.selectedIndex][e]};let r=s(!1);const o=t=>{const e=t.target.options;return Array.prototype.map.call(e,(t=>({displayValue:t.textContent,exportValue:t.value})))};return this.enableScripting&&this.hasJSActions?(l.addEventListener("updatefromsandbox",(n=>{const i={value(n){null==a||a();const i=n.detail.value,o=new Set(Array.isArray(i)?i:[i]);for(const t of l.options)t.selected=o.has(t.value);t.setValue(e,{value:s(!0)}),r=s(!1)},multipleSelection(t){l.multiple=!0},remove(n){const i=l.options,a=n.detail.remove;i[a].selected=!1,l.remove(a),i.length>0&&-1===Array.prototype.findIndex.call(i,(t=>t.selected))&&(i[0].selected=!0),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},clear(n){for(;0!==l.length;)l.remove(0);t.setValue(e,{value:null,items:[]}),r=s(!1)},insert(n){const{index:i,displayValue:a,exportValue:c}=n.detail.insert,d=l.children[i],u=document.createElement("option");u.textContent=a,u.value=c,d?d.before(u):l.append(u),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},items(n){const{items:i}=n.detail;for(;0!==l.length;)l.remove(0);for(const t of i){const{displayValue:e,exportValue:n}=t,i=document.createElement("option");i.textContent=e,i.value=n,l.append(i)}l.options.length>0&&(l.options[0].selected=!0),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},indices(n){const l=new Set(n.detail.indices);for(const t of n.target.options)t.selected=l.has(t.index);t.setValue(e,{value:s(!0)}),r=s(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(i,n)})),l.addEventListener("input",(n=>{var l;const i=s(!0),a=s(!1);t.setValue(e,{value:i}),n.preventDefault(),null==(l=this.linkService.eventBus)||l.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,change:a,changeEx:i,willCommit:!1,commitKey:1,keyDown:!1}})})),this._setEventListeners(l,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(t=>t.target.value))):l.addEventListener("input",(function(n){t.setValue(e,{value:s(!0)})})),this.data.combo&&this._setTextStyle(l),this._setBackgroundColor(l),this._setDefaultPropertiesFromJS(l),this.container.append(l),this.container}}class oF extends tp{constructor(t){const{data:e,elements:n}=t;super(t,{isRenderable:tp._hasPopupData(e)}),this.elements=n,this.popup=null}render(){this.container.classList.add("popupAnnotation");const t=this.popup=new cF({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),e=[];for(const n of this.elements)n.popup=t,n.container.ariaHasPopup="dialog",e.push(n.data.id),n.addHighlightArea();return this.container.setAttribute("aria-controls",e.map((t=>`${os}${t}`)).join(",")),this.container}}class cF{constructor({container:t,color:e,elements:n,titleObj:l,modificationDate:i,contentsObj:a,richText:s,parent:r,rect:o,parentRect:c,open:d}){var u;ta(this,Qp),ta(this,ap,na(this,Qp,Ep).bind(this)),ta(this,sp,na(this,Qp,kp).bind(this)),ta(this,rp,na(this,Qp,Jp).bind(this)),ta(this,op,na(this,Qp,Bp).bind(this)),ta(this,cp,null),ta(this,dp,null),ta(this,up,null),ta(this,hp,null),ta(this,mp,null),ta(this,Up,null),ta(this,pp,null),ta(this,Fp,!1),ta(this,bp,null),ta(this,Zp,null),ta(this,Np,null),ta(this,Rp,null),ta(this,Sp,null),ta(this,Wp,null),ta(this,Vp,!1),ea(this,dp,t),ea(this,Sp,l),ea(this,up,a),ea(this,Rp,s),ea(this,Up,r),ea(this,cp,e),ea(this,Np,o),ea(this,pp,c),ea(this,mp,n),ea(this,hp,Ts.toDateObject(i)),this.trigger=n.flatMap((t=>t.getElementsToTriggerPopup()));for(const h of this.trigger)h.addEventListener("click",$i(this,op)),h.addEventListener("mouseenter",$i(this,rp)),h.addEventListener("mouseleave",$i(this,sp)),h.classList.add("popupTriggerArea");for(const h of n)null==(u=h.container)||u.addEventListener("keydown",$i(this,ap));$i(this,dp).hidden=!0,d&&na(this,Qp,Bp).call(this)}render(){if($i(this,bp))return;const t=ea(this,bp,document.createElement("div"));if(t.className="popup",$i(this,cp)){const e=t.style.outlineColor=ns.makeHexColor(...$i(this,cp));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?t.style.backgroundColor=`color-mix(in srgb, ${e} 30%, white)`:t.style.backgroundColor=ns.makeHexColor(...$i(this,cp).map((t=>Math.floor(.7*(255-t)+t))))}const e=document.createElement("span");e.className="header";const n=document.createElement("h1");if(e.append(n),({dir:n.dir,str:n.textContent}=$i(this,Sp)),t.append(e),$i(this,hp)){const t=document.createElement("span");t.classList.add("popupDate"),t.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),t.setAttribute("data-l10n-args",JSON.stringify({dateObj:$i(this,hp).valueOf()})),e.append(t)}const l=$i(this,Qp,yp);if(l)xU.render({xfaHtml:l,intent:"richText",div:t}),t.lastChild.classList.add("richText","popupContent");else{const e=this._formatContents($i(this,up));t.append(e)}$i(this,dp).append(t)}_formatContents({str:t,dir:e}){const n=document.createElement("p");n.classList.add("popupContent"),n.dir=e;const l=t.split(/(?:\r\n?|\n)/);for(let i=0,a=l.length;i=0&&i.setAttribute("stroke-width",e||1),n)for(let a=0,s=$i(this,fp).length;a{"Enter"===t.key&&(l?t.metaKey:t.ctrlKey)&&na(this,zp,vp).call(this)})),!e.popupRef&&this.hasPopupData?this._createPopup():n.classList.add("popupTriggerArea"),t.append(n),t}getElementsToTriggerPopup(){return $i(this,xp)}addHighlightArea(){this.container.classList.add("highlightArea")}}xp=new WeakMap,zp=new WeakSet,vp=function(){var t;null==(t=this.downloadManager)||t.openOrDownloadData(this.content,this.filename)};let QF=(qp=class{constructor({div:t,accessibilityManager:e,annotationCanvasMap:n,annotationEditorUIManager:l,page:i,viewport:a,structTreeLayer:s}){ta(this,Pp),ta(this,Op,null),ta(this,_p,null),ta(this,jp,new Map),ta(this,Kp,null),this.div=t,ea(this,Op,e),ea(this,_p,n),ea(this,Kp,s||null),this.page=i,this.viewport=a,this.zIndex=0,this._annotationEditorUIManager=l}hasEditableAnnotations(){return $i(this,jp).size>0}async render(t){var e;const{annotations:n}=t,l=this.div;Js(l,this.viewport);const i=new Map,a={data:null,layer:l,linkService:t.linkService,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:!1!==t.renderForms,svgFactory:new wU,annotationStorage:t.annotationStorage||new Qd,enableScripting:!0===t.enableScripting,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const s of n){if(s.noHTML)continue;const t=s.annotationType===Sa.POPUP;if(t){const t=i.get(s.id);if(!t)continue;a.elements=t}else{const{width:t,height:e}=_U(s.rect);if(t<=0||e<=0)continue}a.data=s;const n=jU.create(a);if(!n.isRenderable)continue;if(!t&&s.popupRef){const t=i.get(s.popupRef);t?t.push(n):i.set(s.popupRef,[n])}const l=n.render();s.hidden&&(l.style.visibility="hidden"),await na(this,Pp,Ap).call(this,l,s.id),n._isEditable&&($i(this,jp).set(n.data.id,n),null==(e=this._annotationEditorUIManager)||e.renderAnnotationElement(n))}na(this,Pp,Hp).call(this)}update({viewport:t}){const e=this.div;this.viewport=t,Js(e,{rotation:t.rotation}),na(this,Pp,Hp).call(this),e.hidden=!1}getEditableAnnotations(){return Array.from($i(this,jp).values())}getEditableAnnotation(t){return $i(this,jp).get(t)}},Op=new WeakMap,_p=new WeakMap,jp=new WeakMap,Kp=new WeakMap,Pp=new WeakSet,Ap=async function(t,e){var n,l;const i=t.firstChild||t,a=i.id=`${os}${e}`,s=await(null==(n=$i(this,Kp))?void 0:n.getAriaAttributes(a));if(s)for(const[r,o]of s)i.setAttribute(r,o);this.div.append(t),null==(l=$i(this,Op))||l.moveElementInDOM(this.div,t,i,!1)},Hp=function(){if(!$i(this,_p))return;const t=this.div;for(const[e,n]of $i(this,_p)){const l=t.querySelector(`[data-annotation-id="${e}"]`);if(!l)continue;n.className="annotationContent";const{firstChild:i}=l;i?"CANVAS"===i.nodeName?i.replaceWith(n):i.classList.contains("annotationContent")?i.after(n):i.before(n):l.append(n)}$i(this,_p).clear()},qp);const yF=/\r\n?|\n/g;var TF,MF,gF,EF,GF,BF,JF,kF,YF,CF,XF,IF,DF,fF,LF,wF;const xF=class t extends dd{constructor(e){super({...e,name:"freeTextEditor"}),ta(this,BF),ta(this,TF),ta(this,MF,""),ta(this,gF,`${this.id}-editor`),ta(this,EF,null),ta(this,GF),ea(this,TF,e.color||t._defaultColor||dd._defaultLineColor),ea(this,GF,e.fontSize||t._defaultFontSize)}static get _keyboardManager(){const e=t.prototype,n=t=>t.isEmpty(),l=Xo.TRANSLATE_SMALL,i=Xo.TRANSLATE_BIG;return Ca(this,"_keyboardManager",new Sr([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-l,0],checker:n}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:n}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[l,0],checker:n}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[i,0],checker:n}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-l],checker:n}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:n}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,l],checker:n}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,i],checker:n}]]))}static initialize(t,e){dd.initialize(t,e);const n=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(n.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,n){switch(e){case ba.FREETEXT_SIZE:t._defaultFontSize=n;break;case ba.FREETEXT_COLOR:t._defaultColor=n;break}}updateParams(t,e){switch(t){case ba.FREETEXT_SIZE:na(this,BF,JF).call(this,e);break;case ba.FREETEXT_COLOR:na(this,BF,kF).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[ba.FREETEXT_SIZE,t._defaultFontSize],[ba.FREETEXT_COLOR,t._defaultColor||dd._defaultLineColor]]}get propertiesToUpdate(){return[[ba.FREETEXT_SIZE,$i(this,GF)],[ba.FREETEXT_COLOR,$i(this,TF)]]}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const e=this.parentScale;return[-t._internalPadding*e,-(t._internalPadding+$i(this,GF))*e]}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(Fa.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),ea(this,EF,new AbortController);const t=this._uiManager.combinedSignal($i(this,EF));this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:t}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:t}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:t}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:t}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:t})}disableEditMode(){var t;this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",$i(this,gF)),this._isDraggable=!0,null==(t=$i(this,EF))||t.abort(),ea(this,EF,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(t){this._focusEventsAllowed&&(super.focusin(t),t.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(t){var e;this.width||(this.enableEditMode(),t&&this.editorDiv.focus(),null!=(e=this._initialOptions)&&e.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const t=$i(this,MF),e=ea(this,MF,na(this,BF,YF).call(this).trimEnd());if(t===e)return;const n=t=>{ea(this,MF,t),t?(na(this,BF,DF).call(this),this._uiManager.rebuild(this),na(this,BF,CF).call(this)):this.remove()};this.addCommands({cmd:()=>{n(e)},undo:()=>{n(t)},mustExec:!1}),na(this,BF,CF).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(t){this.enterInEditMode()}keydown(t){t.target===this.div&&"Enter"===t.key&&(this.enterInEditMode(),t.preventDefault())}editorDivKeydown(e){t._keyboardManager.exec(this,e)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let t,e;this.width&&(t=this.x,e=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",$i(this,gF)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:n}=this.editorDiv;if(n.fontSize=`calc(${$i(this,GF)}px * var(--scale-factor))`,n.color=$i(this,TF),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),dr(this,this.div,["dblclick","keydown"]),this.width){const[n,l]=this.parentDimensions;if(this.annotationElementId){const{position:i}=this._initialData;let[a,s]=this.getInitialTranslation();[a,s]=this.pageTranslationToScreen(a,s);const[r,o]=this.pageDimensions,[c,d]=this.pageTranslation;let u,h;switch(this.rotation){case 0:u=t+(i[0]-c)/r,h=e+this.height-(i[1]-d)/o;break;case 90:u=t+(i[0]-c)/r,h=e-(i[1]-d)/o,[a,s]=[s,-a];break;case 180:u=t-this.width+(i[0]-c)/r,h=e-(i[1]-d)/o,[a,s]=[-a,-s];break;case 270:u=t+(i[0]-c-this.height*o)/r,h=e+(i[1]-d-this.width*r)/o,[a,s]=[-s,a];break}this.setAt(u*n,h*l,a,s)}else this.setAt(t*n,e*l,this.width*n,this.height*l);na(this,BF,DF).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(e){var n,l,i;const a=e.clipboardData||window.clipboardData,{types:s}=a;if(1===s.length&&"text/plain"===s[0])return;e.preventDefault();const r=na(n=t,XF,LF).call(n,a.getData("text")||"").replaceAll(yF,"\n");if(!r)return;const o=window.getSelection();if(!o.rangeCount)return;this.editorDiv.normalize(),o.deleteFromDocument();const c=o.getRangeAt(0);if(!r.includes("\n"))return c.insertNode(document.createTextNode(r)),this.editorDiv.normalize(),void o.collapseToStart();const{startContainer:d,startOffset:u}=c,h=[],m=[];if(d.nodeType===Node.TEXT_NODE){const e=d.parentElement;if(m.push(d.nodeValue.slice(u).replaceAll(yF,"")),e!==this.editorDiv){let n=h;for(const i of this.editorDiv.childNodes)i!==e?n.push(na(l=t,XF,IF).call(l,i)):n=m}h.push(d.nodeValue.slice(0,u).replaceAll(yF,""))}else if(d===this.editorDiv){let e=h,n=0;for(const l of this.editorDiv.childNodes)n++===u&&(e=m),e.push(na(i=t,XF,IF).call(i,l))}ea(this,MF,`${h.join("\n")}${r}${m.join("\n")}`),na(this,BF,DF).call(this);const U=new Range;let p=h.reduce(((t,e)=>t+e.length),0);for(const{firstChild:t}of this.editorDiv.childNodes)if(t.nodeType===Node.TEXT_NODE){const e=t.nodeValue.length;if(p<=e){U.setStart(t,p),U.setEnd(t,p);break}p-=e}o.removeAllRanges(),o.addRange(U)}get contentDiv(){return this.editorDiv}static async deserialize(e,n,l){var i;let a=null;if(e instanceof dF){const{data:{defaultAppearanceData:{fontSize:t,fontColor:n},rect:l,rotation:i,id:s,popupRef:r},textContent:o,textPosition:c,parent:{page:{pageNumber:d}}}=e;if(!o||0===o.length)return null;a=e={annotationType:Fa.FREETEXT,color:Array.from(n),fontSize:t,value:o.join("\n"),position:c,pageIndex:d-1,rect:l.slice(0),rotation:i,id:s,deleted:!1,popupRef:r}}const s=await super.deserialize(e,n,l);return ea(s,GF,e.fontSize),ea(s,TF,ns.makeHexColor(...e.color)),ea(s,MF,na(i=t,XF,LF).call(i,e.value)),s.annotationElementId=e.id||null,s._initialData=a,s}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const n=t._internalPadding*this.parentScale,l=this.getRect(n,n),i=dd._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:$i(this,TF)),a={annotationType:Fa.FREETEXT,color:i,fontSize:$i(this,GF),value:na(this,BF,fF).call(this),pageIndex:this.pageIndex,rect:l,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?a:this.annotationElementId&&!na(this,BF,wF).call(this,a)?null:(a.id=this.annotationElementId,a)}renderAnnotationElement(e){const n=super.renderAnnotationElement(e);if(this.deleted)return n;const{style:l}=n;l.fontSize=`calc(${$i(this,GF)}px * var(--scale-factor))`,l.color=$i(this,TF),n.replaceChildren();for(const t of $i(this,MF).split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),n.append(e)}const i=t._internalPadding*this.parentScale;return e.updateEdited({rect:this.getRect(i,i),popupContent:$i(this,MF)}),n}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}};TF=new WeakMap,MF=new WeakMap,gF=new WeakMap,EF=new WeakMap,GF=new WeakMap,BF=new WeakSet,JF=function(t){const e=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--scale-factor))`,this.translate(0,-(t-$i(this,GF))*this.parentScale),ea(this,GF,t),na(this,BF,CF).call(this)},n=$i(this,GF);this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},kF=function(t){const e=t=>{ea(this,TF,this.editorDiv.style.color=t)},n=$i(this,TF);this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},YF=function(){var t;const e=[];this.editorDiv.normalize();let n=null;for(const l of this.editorDiv.childNodes)(null==n?void 0:n.nodeType)===Node.TEXT_NODE&&"BR"===l.nodeName||(e.push(na(t=xF,XF,IF).call(t,l)),n=l);return e.join("\n")},CF=function(){const[t,e]=this.parentDimensions;let n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,l=e.style.display,i=e.classList.contains("hidden");e.classList.remove("hidden"),e.style.display="hidden",t.div.append(this.div),n=e.getBoundingClientRect(),e.remove(),e.style.display=l,e.classList.toggle("hidden",i)}this.rotation%180===this.parentRotation%180?(this.width=n.width/t,this.height=n.height/e):(this.width=n.height/t,this.height=n.width/e),this.fixAndSetPosition()},XF=new WeakSet,IF=function(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(yF,"")},DF=function(){if(this.editorDiv.replaceChildren(),$i(this,MF))for(const t of $i(this,MF).split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}},fF=function(){return $i(this,MF).replaceAll(" "," ")},LF=function(t){return t.replaceAll(" "," ")},wF=function(t){const{value:e,fontSize:n,color:l,pageIndex:i}=this._initialData;return this._hasBeenMoved||t.value!==e||t.fontSize!==n||t.color.some(((t,e)=>t!==l[e]))||t.pageIndex!==i},ta(xF,XF),Hi(xF,"_freeTextDefaultContent",""),Hi(xF,"_internalPadding",0),Hi(xF,"_defaultColor",null),Hi(xF,"_defaultFontSize",10),Hi(xF,"_type","freetext"),Hi(xF,"_editorType",Fa.FREETEXT);let zF=xF;class vF{toSVGPath(){Ba("Abstract method `toSVGPath` must be implemented.")}get box(){Ba("Abstract getter `box` must be implemented.")}serialize(t,e){Ba("Abstract method `serialize` must be implemented.")}static _rescale(t,e,n,l,i,a){a||(a=new Float32Array(t.length));for(let s=0,r=t.length;s=6;l-=6)isNaN(e[l])?n.push(`L${e[l+4]} ${e[l+5]}`):n.push(`C${e[l]} ${e[l+1]} ${e[l+2]} ${e[l+3]} ${e[l+4]} ${e[l+5]}`);return na(this,rb,db).call(this,n),n.join(" ")}newFreeDrawOutline(t,e,n,l,i,a){return new iZ(t,e,n,l,i,a)}getOutlines(){var t;const e=$i(this,PF),n=$i(this,_F),l=$i(this,AF),[i,a,s,r]=$i(this,OF),o=new Float32Array(((null==(t=$i(this,lb))?void 0:t.length)??0)+2);for(let u=0,h=o.length-2;u=6;u-=6)for(let t=0;t<6;t+=2)isNaN(n[u+t])?(c[d]=c[d+1]=NaN,d+=2):(c[d]=n[u+t],c[d+1]=n[u+t+1],d+=2);return na(this,rb,mb).call(this,c,d),this.newFreeDrawOutline(c,o,$i(this,OF),$i(this,eb),$i(this,jF),$i(this,KF))}};OF=new WeakMap,_F=new WeakMap,jF=new WeakMap,KF=new WeakMap,PF=new WeakMap,AF=new WeakMap,HF=new WeakMap,qF=new WeakMap,$F=new WeakMap,tb=new WeakMap,eb=new WeakMap,nb=new WeakMap,lb=new WeakMap,ib=new WeakMap,ab=new WeakMap,sb=new WeakMap,rb=new WeakSet,ob=function(){const t=$i(this,AF).subarray(4,6),e=$i(this,AF).subarray(16,18),[n,l,i,a]=$i(this,OF);return[($i(this,HF)+(t[0]-e[0])/2-n)/i,($i(this,qF)+(t[1]-e[1])/2-l)/a,($i(this,HF)+(e[0]-t[0])/2-n)/i,($i(this,qF)+(e[1]-t[1])/2-l)/a]},cb=function(){const[t,e,n,l]=$i(this,OF),[i,a,s,r]=na(this,rb,ob).call(this);return`M${($i(this,AF)[2]-t)/n} ${($i(this,AF)[3]-e)/l} L${($i(this,AF)[4]-t)/n} ${($i(this,AF)[5]-e)/l} L${i} ${a} L${s} ${r} L${($i(this,AF)[16]-t)/n} ${($i(this,AF)[17]-e)/l} L${($i(this,AF)[14]-t)/n} ${($i(this,AF)[15]-e)/l} Z`},db=function(t){const e=$i(this,_F);t.push(`L${e[4]} ${e[5]} Z`)},ub=function(t){const[e,n,l,i]=$i(this,OF),a=$i(this,AF).subarray(4,6),s=$i(this,AF).subarray(16,18),[r,o,c,d]=na(this,rb,ob).call(this);t.push(`L${(a[0]-e)/l} ${(a[1]-n)/i} L${r} ${o} L${c} ${d} L${(s[0]-e)/l} ${(s[1]-n)/i}`)},hb=function(t){const e=$i(this,AF),[n,l,i,a]=$i(this,OF),[s,r,o,c]=na(this,rb,ob).call(this),d=new Float32Array(36);return d.set([NaN,NaN,NaN,NaN,(e[2]-n)/i,(e[3]-l)/a,NaN,NaN,NaN,NaN,(e[4]-n)/i,(e[5]-l)/a,NaN,NaN,NaN,NaN,s,r,NaN,NaN,NaN,NaN,o,c,NaN,NaN,NaN,NaN,(e[16]-n)/i,(e[17]-l)/a,NaN,NaN,NaN,NaN,(e[14]-n)/i,(e[15]-l)/a],0),this.newFreeDrawOutline(d,t,$i(this,OF),$i(this,eb),$i(this,jF),$i(this,KF))},mb=function(t,e){const n=$i(this,_F);return t.set([NaN,NaN,NaN,NaN,n[4],n[5]],e),e+6},Ub=function(t,e){const n=$i(this,AF).subarray(4,6),l=$i(this,AF).subarray(16,18),[i,a,s,r]=$i(this,OF),[o,c,d,u]=na(this,rb,ob).call(this);return t.set([NaN,NaN,NaN,NaN,(n[0]-i)/s,(n[1]-a)/r,NaN,NaN,NaN,NaN,o,c,NaN,NaN,NaN,NaN,d,u,NaN,NaN,NaN,NaN,(l[0]-i)/s,(l[1]-a)/r],e),e+24},ta(pb,ib,8),ta(pb,ab,2),ta(pb,sb,$i(pb,ib)+$i(pb,ab));let Fb=pb;var bb,Zb,Nb,Rb,Sb,Wb,Vb,Qb,yb,Tb,Mb,gb,Eb,Gb,Bb,Jb,kb,Yb,Cb,Xb,Ib,Db,fb,Lb,wb,xb,zb,vb,Ob,_b,jb,Kb,Pb,Ab,Hb,qb,$b,tZ,eZ,nZ,lZ;class iZ extends vF{constructor(t,e,n,l,i,a){super(),ta(this,Qb),ta(this,bb),ta(this,Zb,new Float32Array(4)),ta(this,Nb),ta(this,Rb),ta(this,Sb),ta(this,Wb),ta(this,Vb),ea(this,Vb,t),ea(this,Sb,e),ea(this,bb,n),ea(this,Wb,l),ea(this,Nb,i),ea(this,Rb,a),this.lastPoint=[NaN,NaN],na(this,Qb,yb).call(this,a);const[s,r,o,c]=$i(this,Zb);for(let d=0,u=t.length;dt[0]-e[0]||t[1]-e[1]||t[2]-e[2]));const t=[];for(const e of $i(this,gb))e[3]?(t.push(...na(this,Gb,Cb).call(this,e)),na(this,Gb,kb).call(this,e)):(na(this,Gb,Yb).call(this,e),t.push(...na(this,Gb,Cb).call(this,e)));return na(this,Gb,Bb).call(this,t)}}Tb=new WeakMap,Mb=new WeakMap,gb=new WeakMap,Eb=new WeakMap,Gb=new WeakSet,Bb=function(t){const e=[],n=new Set;for(const a of t){const[t,n,l]=a;e.push([t,n,a],[t,l,a])}e.sort(((t,e)=>t[1]-e[1]||t[0]-e[0]));for(let a=0,s=e.length;a0;){const t=n.values().next().value;let[e,a,s,r,o]=t;n.delete(t);let c=e,d=a;for(i=[e,s],l.push(i);;){let t;if(n.has(r))t=r;else{if(!n.has(o))break;t=o}n.delete(t),[e,a,s,r,o]=t,c!==e&&(i.push(c,d,e,d===a?a:s),c=e),d=d===a?s:a}i.push(c,d)}return new sZ(l,$i(this,Tb),$i(this,Mb))},Jb=function(t){const e=$i(this,Eb);let n=0,l=e.length-1;for(;n<=l;){const i=n+l>>1,a=e[i][0];if(a===t)return i;a=0;l--){const[n,i]=$i(this,Eb)[l];if(n!==t)break;if(n===t&&i===e)return void $i(this,Eb).splice(l,1)}},Cb=function(t){const[e,n,l]=t,i=[[e,n,l]],a=na(this,Gb,Jb).call(this,l);for(let s=0;s=t){if(r>n)i[l][1]=n;else{if(1===a)return[];i.splice(l,1),l--,a--}continue}i[l][2]=t,r>n&&i.push([e,n,r])}}}return i};class sZ extends vF{constructor(t,e,n){super(),ta(this,Xb),ta(this,Ib),ea(this,Ib,t),ea(this,Xb,e),this.lastPoint=n}toSVGPath(){const t=[];for(const e of $i(this,Ib)){let[n,l]=e;t.push(`M${n} ${l}`);for(let i=2;i-1?(ea(this,SZ,!0),na(this,gZ,GZ).call(this,e),na(this,gZ,CZ).call(this)):$i(this,hZ)&&(ea(this,dZ,e.anchorNode),ea(this,uZ,e.anchorOffset),ea(this,FZ,e.focusNode),ea(this,bZ,e.focusOffset),na(this,gZ,EZ).call(this),na(this,gZ,CZ).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const e=t.prototype;return Ca(this,"_keyboardManager",new Sr([[["ArrowLeft","mac+ArrowLeft"],e._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],e._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],e._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],e._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:$i(this,SZ)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:$i(this,TZ),methodOfCreation:$i(this,MZ)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(t){return{numberOfColors:t.get("color").size}}static initialize(e,n){var l;dd.initialize(e,n),t._defaultColor||(t._defaultColor=(null==(l=n.highlightColors)?void 0:l.values().next().value)||"#fff066")}static updateDefaultParams(e,n){switch(e){case ba.HIGHLIGHT_DEFAULT_COLOR:t._defaultColor=n;break;case ba.HIGHLIGHT_THICKNESS:t._defaultThickness=n;break}}translateInPage(t,e){}get toolbarPosition(){return $i(this,WZ)}updateParams(t,e){switch(t){case ba.HIGHLIGHT_COLOR:na(this,gZ,BZ).call(this,e);break;case ba.HIGHLIGHT_THICKNESS:na(this,gZ,JZ).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[ba.HIGHLIGHT_DEFAULT_COLOR,t._defaultColor],[ba.HIGHLIGHT_THICKNESS,t._defaultThickness]]}get propertiesToUpdate(){return[[ba.HIGHLIGHT_COLOR,this.color||t._defaultColor],[ba.HIGHLIGHT_THICKNESS,$i(this,TZ)||t._defaultThickness],[ba.HIGHLIGHT_FREE,$i(this,SZ)]]}async addEditToolbar(){const t=await super.addEditToolbar();return t?(this._uiManager.highlightColors&&(ea(this,UZ,new cZ({editor:this})),t.addColorPicker($i(this,UZ))),t):null}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(na(this,gZ,LZ).call(this))}getBaseTranslation(){return[0,0]}getRect(t,e){return super.getRect(t,e,na(this,gZ,LZ).call(this))}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),t&&this.div.focus()}remove(){na(this,gZ,YZ).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(na(this,gZ,CZ).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var e;let n=!1;this.parent&&!t?na(this,gZ,YZ).call(this):t&&(na(this,gZ,CZ).call(this,t),n=!this.parent&&(null==(e=this.div)?void 0:e.classList.contains("selectedEditor"))),super.setParent(t),this.show(this._isVisible),n&&this.select()}rotate(e){var n,l,i;const{drawLayer:a}=this.parent;let s;$i(this,SZ)?(e=(e-this.rotation+360)%360,s=na(n=t,XZ,IZ).call(n,$i(this,NZ).box,e)):s=na(l=t,XZ,IZ).call(l,[this.x,this.y,this.width,this.height],e),a.updateProperties($i(this,RZ),{bbox:s,root:{"data-main-rotation":e}}),a.updateProperties($i(this,QZ),{bbox:na(i=t,XZ,IZ).call(i,$i(this,pZ).box,e),root:{"data-main-rotation":e}})}render(){if(this.div)return this.div;const t=super.render();$i(this,yZ)&&(t.setAttribute("aria-label",$i(this,yZ)),t.setAttribute("role","mark")),$i(this,SZ)?t.classList.add("free"):this.div.addEventListener("keydown",na(this,gZ,DZ).bind(this),{signal:this._uiManager._signal});const e=ea(this,ZZ,document.createElement("div"));t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal",e.style.clipPath=$i(this,mZ);const[n,l]=this.parentDimensions;return this.setDims(this.width*n,this.height*l),dr(this,$i(this,ZZ),["pointerover","pointerleave"]),this.enableEditing(),t}pointerover(){var t;this.isSelected||null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!0}})}pointerleave(){var t;this.isSelected||null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!1}})}_moveCaret(t){switch(this.parent.unselect(this),t){case 0:case 2:na(this,gZ,fZ).call(this,!0);break;case 1:case 3:na(this,gZ,fZ).call(this,!1);break}}select(){var t;super.select(),$i(this,QZ)&&(null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!1,selected:!0}}))}unselect(){var t;super.unselect(),$i(this,QZ)&&(null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{selected:!1}}),$i(this,SZ)||na(this,gZ,fZ).call(this,!1))}get _mustFixPosition(){return!$i(this,SZ)}show(t=this._isVisible){super.show(t),this.parent&&(this.parent.drawLayer.updateProperties($i(this,RZ),{rootClass:{hidden:!t}}),this.parent.drawLayer.updateProperties($i(this,QZ),{rootClass:{hidden:!t}}))}static startHighlighting(t,e,{target:n,x:l,y:i}){const{x:a,y:s,width:r,height:o}=n.getBoundingClientRect(),c=new AbortController,d=t.combinedSignal(c),u=e=>{c.abort(),na(this,XZ,vZ).call(this,t,e)};window.addEventListener("blur",u,{signal:d}),window.addEventListener("pointerup",u,{signal:d}),window.addEventListener("pointerdown",Vs,{capture:!0,passive:!1,signal:d}),window.addEventListener("contextmenu",Ws,{signal:d}),n.addEventListener("pointermove",na(this,XZ,zZ).bind(this,t),{signal:d}),this._freeHighlight=new rZ({x:l,y:i},[a,s,r,o],t.scale,this._defaultThickness/2,e,.001),({id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0))}static async deserialize(t,e,n){var l,i,a,s;let r=null;if(t instanceof ZF){const{data:{quadPoints:e,rect:n,rotation:l,id:i,color:a,opacity:s,popupRef:o},parent:{page:{pageNumber:c}}}=t;r=t={annotationType:Fa.HIGHLIGHT,color:Array.from(a),opacity:s,quadPoints:e,boxes:null,pageIndex:c-1,rect:n.slice(0),rotation:l,id:i,deleted:!1,popupRef:o}}else if(t instanceof bF){const{data:{inkLists:e,rect:n,rotation:l,id:i,color:a,borderStyle:{rawWidth:s},popupRef:o},parent:{page:{pageNumber:c}}}=t;r=t={annotationType:Fa.HIGHLIGHT,color:Array.from(a),thickness:s,inkLists:e,boxes:null,pageIndex:c-1,rect:n.slice(0),rotation:l,id:i,deleted:!1,popupRef:o}}const{color:o,quadPoints:c,inkLists:d,opacity:u}=t,h=await super.deserialize(t,e,n);h.color=ns.makeHexColor(...o),ea(h,VZ,u||1),d&&ea(h,TZ,t.thickness),h.annotationElementId=t.id||null,h._initialData=r;const[m,U]=h.pageDimensions,[p,F]=h.pageTranslation;if(c){const t=ea(h,hZ,[]);for(let e=0;e=0)ea(this,RZ,e),ea(this,mZ,n),this.parent.drawLayer.finalizeDraw(e,{bbox:t.box,path:{d:t.toSVGPath()}}),ea(this,QZ,this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:$i(this,pZ).box,path:{d:$i(this,pZ).toSVGPath()}},!0));else if(this.parent){const e=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties($i(this,RZ),{bbox:na(l=_Z,XZ,IZ).call(l,$i(this,NZ).box,(e-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties($i(this,QZ),{bbox:na(i=_Z,XZ,IZ).call(i,$i(this,pZ).box,e),path:{d:$i(this,pZ).toSVGPath()}})}const[a,s,r,o]=t.box;switch(this.rotation){case 0:this.x=a,this.y=s,this.width=r,this.height=o;break;case 90:{const[t,e]=this.parentDimensions;this.x=s,this.y=1-a,this.width=r*e/t,this.height=o*t/e;break}case 180:this.x=1-a,this.y=1-s,this.width=r,this.height=o;break;case 270:{const[t,e]=this.parentDimensions;this.x=1-s,this.y=a,this.width=r*e/t,this.height=o*t/e;break}}const{lastPoint:c}=$i(this,pZ);ea(this,WZ,[(c[0]-a)/r,(c[1]-s)/o])},BZ=function(t){const e=(t,e)=>{var n,l;this.color=t,ea(this,VZ,e),null==(n=this.parent)||n.drawLayer.updateProperties($i(this,RZ),{root:{fill:t,"fill-opacity":e}}),null==(l=$i(this,UZ))||l.updateColor(t)},n=this.color,l=$i(this,VZ);this.addCommands({cmd:e.bind(this,t,_Z._defaultOpacity),undo:e.bind(this,n,l),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(t)},!0)},JZ=function(t){const e=$i(this,TZ),n=t=>{ea(this,TZ,t),na(this,gZ,kZ).call(this,t)};this.addCommands({cmd:n.bind(this,t),undo:n.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:t},!0)},kZ=function(t){if(!$i(this,SZ))return;na(this,gZ,GZ).call(this,{highlightOutlines:$i(this,NZ).getNewOutline(t/2)}),this.fixAndSetPosition();const[e,n]=this.parentDimensions;this.setDims(this.width*e,this.height*n)},YZ=function(){null===$i(this,RZ)||!this.parent||(this.parent.drawLayer.remove($i(this,RZ)),ea(this,RZ,null),this.parent.drawLayer.remove($i(this,QZ)),ea(this,QZ,null))},CZ=function(t=this.parent){null===$i(this,RZ)&&(({id:la(this,RZ)._,clipPathId:la(this,mZ)._}=t.drawLayer.draw({bbox:$i(this,NZ).box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":$i(this,VZ)},rootClass:{highlight:!0,free:$i(this,SZ)},path:{d:$i(this,NZ).toSVGPath()}},!1,!0)),ea(this,QZ,t.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:$i(this,SZ)},bbox:$i(this,pZ).box,path:{d:$i(this,pZ).toSVGPath()}},$i(this,SZ))),$i(this,ZZ)&&($i(this,ZZ).style.clipPath=$i(this,mZ)))},XZ=new WeakSet,IZ=function([t,e,n,l],i){switch(i){case 90:return[1-e-l,t,l,n];case 180:return[1-t-n,1-e-l,n,l];case 270:return[e,1-t-n,l,n]}return[t,e,n,l]},DZ=function(t){_Z._keyboardManager.exec(this,t)},fZ=function(t){if(!$i(this,dZ))return;const e=window.getSelection();t?e.setPosition($i(this,dZ),$i(this,uZ)):e.setPosition($i(this,FZ),$i(this,bZ))},LZ=function(){return $i(this,SZ)?this.rotation:0},wZ=function(){if($i(this,SZ))return null;const[t,e]=this.pageDimensions,[n,l]=this.pageTranslation,i=$i(this,hZ),a=new Float32Array(8*i.length);let s=0;for(const{x:r,y:o,width:c,height:d}of i){const i=r*t+n,u=(1-o)*e+l;a[s]=a[s+4]=i,a[s+1]=a[s+3]=u,a[s+2]=a[s+6]=i+c*t,a[s+5]=a[s+7]=u-d*e,s+=8}return a},xZ=function(t){return $i(this,NZ).serialize(t,na(this,gZ,LZ).call(this))},zZ=function(t,e){this._freeHighlight.add(e)&&t.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})},vZ=function(t,e){this._freeHighlight.isEmpty()?t.drawLayer.remove(this._freeHighlightId):t.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},OZ=function(t){const{color:e}=this._initialData;return t.color.some(((t,n)=>t!==e[n]))},ta(_Z,XZ),Hi(_Z,"_defaultColor",null),Hi(_Z,"_defaultOpacity",1),Hi(_Z,"_defaultThickness",12),Hi(_Z,"_type","highlight"),Hi(_Z,"_editorType",Fa.HIGHLIGHT),Hi(_Z,"_freeHighlightId",-1),Hi(_Z,"_freeHighlight",null),Hi(_Z,"_freeHighlightClipId","");let jZ=_Z;var KZ,PZ,AZ,HZ,qZ,$Z,tN,eN,nN,lN,iN,aN,sN,rN,oN,cN,dN,uN,hN;class mN{constructor(){ta(this,KZ,Object.create(null))}updateProperty(t,e){this[t]=e,this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,n]of Object.entries(t))this.updateProperty(e,n)}updateSVGProperty(t,e){$i(this,KZ)[t]=e}toSVGProperties(){const t=$i(this,KZ);return ea(this,KZ,Object.create(null)),{root:t}}reset(){ea(this,KZ,Object.create(null))}updateAll(t=this){this.updateProperties(t)}clone(){Ba("Not implemented")}}KZ=new WeakMap;const UN=class t extends dd{constructor(t){super(t),ta(this,iN),ta(this,PZ,null),ta(this,AZ),Hi(this,"_drawId",null),ea(this,AZ,t.mustBeCommitted||!1),t.drawOutlines&&(na(this,iN,aN).call(this,t),na(this,iN,oN).call(this))}static _mergeSVGProperties(t,e){const n=new Set(Object.keys(t));for(const[l,i]of Object.entries(e))n.has(l)?Object.assign(t[l],i):t[l]=i;return t}static getDefaultDrawingOptions(t){Ba("Not implemented")}static get typesMap(){Ba("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(e,n){const l=this.typesMap.get(e);l&&this._defaultDrawingOptions.updateProperty(l,n),this._currentParent&&($i(t,HZ).updateProperty(l,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const n=this.constructor.typesMap.get(t);n&&this._updateProperty(t,n,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[n,l]of this.typesMap)t.push([n,e[l]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[n,l]of this.constructor.typesMap)t.push([n,e[l]]);return t}_updateProperty(t,e,n){const l=this._drawingOptions,i=l[e],a=t=>{var n;l.updateProperty(e,t);const i=$i(this,PZ).updateProperty(e,t);i&&na(this,iN,uN).call(this,i),null==(n=this.parent)||n.drawLayer.updateProperties(this._drawId,l.toSVGProperties())};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathResizingSVGProperties(na(this,iN,dN).call(this)),{bbox:na(this,iN,hN).call(this)}))}_onResized(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathResizedSVGProperties(na(this,iN,dN).call(this)),{bbox:na(this,iN,hN).call(this)}))}_onTranslating(t,e){var n;null==(n=this.parent)||n.drawLayer.updateProperties(this._drawId,{bbox:na(this,iN,hN).call(this,t,e)})}_onTranslated(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathTranslatedSVGProperties(na(this,iN,dN).call(this),this.parentDimensions),{bbox:na(this,iN,hN).call(this)}))}_onStartDragging(){var t;null==(t=this.parent)||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){var t;null==(t=this.parent)||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,$i(this,AZ)&&(ea(this,AZ,!1),this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){na(this,iN,rN).call(this),super.remove()}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(na(this,iN,oN).call(this),na(this,iN,uN).call(this,$i(this,PZ).box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var e;let n=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),na(this,iN,rN).call(this)):t&&(this._uiManager.addShouldRescale(this),na(this,iN,oN).call(this,t),n=!this.parent&&(null==(e=this.div)?void 0:e.classList.contains("selectedEditor"))),super.setParent(t),n&&this.select()}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties({bbox:na(this,iN,hN).call(this)},$i(this,PZ).updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&na(this,iN,uN).call(this,$i(this,PZ).updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;const t=super.render();t.classList.add("draw");const e=document.createElement("div");t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal";const[n,l]=this.parentDimensions;return this.setDims(this.width*n,this.height*l),this._uiManager.addShouldRescale(this),this.disableEditing(),t}static createDrawerInstance(t,e,n,l,i){Ba("Not implemented")}static startDrawing(e,n,l,i){var a;const{target:s,offsetX:r,offsetY:o,pointerId:c,pointerType:d}=i;if($i(t,eN)&&$i(t,eN)!==d)return;const{viewport:{rotation:u}}=e,{width:h,height:m}=s.getBoundingClientRect(),U=ea(t,qZ,new AbortController),p=e.combinedSignal(U);$i(t,tN)||ea(t,tN,c),$i(t,eN)??ea(t,eN,d),window.addEventListener("pointerup",(e=>{var n;$i(t,tN)===e.pointerId?this._endDraw(e):null==(n=$i(t,nN))||n.delete(e.pointerId)}),{signal:p}),window.addEventListener("pointercancel",(e=>{var n;$i(t,tN)===e.pointerId?this._currentParent.endDrawingSession():null==(n=$i(t,nN))||n.delete(e.pointerId)}),{signal:p}),window.addEventListener("pointerdown",(e=>{$i(t,eN)===e.pointerType&&(($i(t,nN)||ea(t,nN,new Set)).add(e.pointerId),$i(t,HZ).isCancellable()&&($i(t,HZ).removeLastElement(),$i(t,HZ).isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))}),{capture:!0,passive:!1,signal:p}),window.addEventListener("contextmenu",Ws,{signal:p}),s.addEventListener("pointermove",this._drawMove.bind(this),{signal:p}),s.addEventListener("touchmove",(e=>{e.timeStamp===$i(t,lN)&&Vs(e)}),{signal:p}),e.toggleDrawing(),null==(a=n._editorUndoBar)||a.hide(),$i(t,HZ)?e.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).startNew(r,o,h,m,u)):(n.updateUIForDefaultProperties(this),ea(t,HZ,this.createDrawerInstance(r,o,h,m,u)),ea(t,$Z,this.getDefaultDrawingOptions()),this._currentParent=e,({id:this._currentDrawId}=e.drawLayer.draw(this._mergeSVGProperties($i(t,$Z).toSVGProperties(),$i(t,HZ).defaultSVGProperties),!0,!1)))}static _drawMove(e){var n;if(ea(t,lN,-1),!$i(t,HZ))return;const{offsetX:l,offsetY:i,pointerId:a}=e;if($i(t,tN)===a){if((null==(n=$i(t,nN))?void 0:n.size)>=1)return void this._endDraw(e);this._currentParent.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).add(l,i)),ea(t,lN,e.timeStamp),Vs(e)}}static _cleanup(e){e&&(this._currentDrawId=-1,this._currentParent=null,ea(t,HZ,null),ea(t,$Z,null),ea(t,eN,null),ea(t,lN,NaN)),$i(t,qZ)&&($i(t,qZ).abort(),ea(t,qZ,null),ea(t,tN,NaN),ea(t,nN,null))}static _endDraw(e){const n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),e&&n.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).end(e.offsetX,e.offsetY)),this.supportMultipleDrawings){const e=$i(t,HZ),l=this._currentDrawId,i=e.getLastElement();return void n.addCommands({cmd:()=>{n.drawLayer.updateProperties(l,e.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(l,e.removeLastElement())},mustExec:!1,type:ba.DRAW_STEP})}this.endDrawing(!1)}}static endDrawing(e){const n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(ba.DRAW_STEP),!$i(t,HZ).isEmpty()){const{pageDimensions:[l,i],scale:a}=n,s=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:$i(t,HZ).getOutlines(l*a,i*a,a,this._INNER_MARGIN),drawingOptions:$i(t,$Z),mustBeCommitted:!e});return this._cleanup(!0),s}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,n,l,i,a){Ba("Not implemented")}static async deserialize(t,e,n){var l,i;const{rawDims:{pageWidth:a,pageHeight:s,pageX:r,pageY:o}}=e.viewport,c=this.deserializeDraw(r,o,a,s,this._INNER_MARGIN,t),d=await super.deserialize(t,e,n);return d.createDrawingOptions(t),na(l=d,iN,aN).call(l,{drawOutlines:c}),na(i=d,iN,oN).call(i),d.onScaleChanging(),d.rotate(),d}serializeDraw(t){const[e,n]=this.pageTranslation,[l,i]=this.pageDimensions;return $i(this,PZ).serialize([e,n,l,i],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};PZ=new WeakMap,AZ=new WeakMap,HZ=new WeakMap,qZ=new WeakMap,$Z=new WeakMap,tN=new WeakMap,eN=new WeakMap,nN=new WeakMap,lN=new WeakMap,iN=new WeakSet,aN=function({drawOutlines:t,drawId:e,drawingOptions:n}){ea(this,PZ,t),this._drawingOptions||(this._drawingOptions=n),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties)):this._drawId=na(this,iN,sN).call(this,t,this.parent),na(this,iN,uN).call(this,t.box)},sN=function(t,e){const{id:n}=e.drawLayer.draw(UN._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return n},rN=function(){null===this._drawId||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())},oN=function(t=this.parent){if(null===this._drawId||this.parent!==t){if(null!==this._drawId)return void this.parent.drawLayer.updateParent(this._drawId,t.drawLayer);this._drawingOptions.updateAll(),this._drawId=na(this,iN,sN).call(this,$i(this,PZ),t)}},cN=function([t,e,n,l]){const{parentDimensions:[i,a],rotation:s}=this;switch(s){case 90:return[e,1-t,n*(a/i),l*(i/a)];case 180:return[1-t,1-e,n,l];case 270:return[1-e,t,n*(a/i),l*(i/a)];default:return[t,e,n,l]}},dN=function(){const{x:t,y:e,width:n,height:l,parentDimensions:[i,a],rotation:s}=this;switch(s){case 90:return[1-e,t,n*(i/a),l*(a/i)];case 180:return[1-t,1-e,n,l];case 270:return[e,1-t,n*(i/a),l*(a/i)];default:return[t,e,n,l]}},uN=function(t){if([this.x,this.y,this.width,this.height]=na(this,iN,cN).call(this,t),this.div){this.fixAndSetPosition();const[t,e]=this.parentDimensions;this.setDims(this.width*t,this.height*e)}this._onResized()},hN=function(){const{x:t,y:e,width:n,height:l,rotation:i,parentRotation:a,parentDimensions:[s,r]}=this;switch((4*i+a)/90){case 1:return[1-e-l,t,l,n];case 2:return[1-t-n,1-e-l,n,l];case 3:return[e,1-t-n,l,n];case 4:return[t,e-n*(s/r),l*(r/s),n*(s/r)];case 5:return[1-e,t,n*(s/r),l*(r/s)];case 6:return[1-t-l*(r/s),1-e,l*(r/s),n*(s/r)];case 7:return[e-n*(s/r),1-t-l*(r/s),n*(s/r),l*(r/s)];case 8:return[t-n,e-l,n,l];case 9:return[1-e,t-n,l,n];case 10:return[1-t,1-e,n,l];case 11:return[e-l,1-t,l,n];case 12:return[t-l*(r/s),e,l*(r/s),n*(s/r)];case 13:return[1-e-n*(s/r),t-l*(r/s),n*(s/r),l*(r/s)];case 14:return[1-t,1-e-n*(s/r),l*(r/s),n*(s/r)];case 15:return[e,1-t,n*(s/r),l*(r/s)];default:return[t,e,n,l]}},Hi(UN,"_currentDrawId",-1),Hi(UN,"_currentParent",null),ta(UN,HZ,null),ta(UN,qZ,null),ta(UN,$Z,null),ta(UN,tN,NaN),ta(UN,eN,null),ta(UN,nN,null),ta(UN,lN,NaN),Hi(UN,"_INNER_MARGIN",3);let pN=UN;var FN,bN,ZN,NN,RN,SN,WN,VN,QN,yN,TN,MN,gN,EN,GN,BN,JN,kN,YN,CN,XN,IN,DN,fN,LN,wN,xN;class zN{constructor(t,e,n,l,i,a){ta(this,MN),ta(this,FN,new Float64Array(6)),ta(this,bN),ta(this,ZN),ta(this,NN),ta(this,RN),ta(this,SN),ta(this,WN,""),ta(this,VN,0),ta(this,QN,new ON),ta(this,yN),ta(this,TN),ea(this,yN,n),ea(this,TN,l),ea(this,NN,i),ea(this,RN,a),[t,e]=na(this,MN,gN).call(this,t,e);const s=ea(this,bN,[NaN,NaN,NaN,NaN,t,e]);ea(this,SN,[t,e]),ea(this,ZN,[{line:s,points:$i(this,SN)}]),$i(this,FN).set(s,0)}updateProperty(t,e){"stroke-width"===t&&ea(this,RN,e)}isEmpty(){return!$i(this,ZN)||0===$i(this,ZN).length}isCancellable(){return $i(this,SN).length<=10}add(t,e){[t,e]=na(this,MN,gN).call(this,t,e);const[n,l,i,a]=$i(this,FN).subarray(2,6),s=t-i,r=e-a;return Math.hypot($i(this,yN)*s,$i(this,TN)*r)<=2?null:($i(this,SN).push(t,e),isNaN(n)?($i(this,FN).set([i,a,t,e],2),$i(this,bN).push(NaN,NaN,NaN,NaN,t,e),{path:{d:this.toSVGPath()}}):(isNaN($i(this,FN)[0])&&$i(this,bN).splice(6,6),$i(this,FN).set([n,l,i,a,t,e],0),$i(this,bN).push(...vF.createBezierPoints(n,l,i,a,t,e)),{path:{d:this.toSVGPath()}}))}end(t,e){const n=this.add(t,e);return n||(2===$i(this,SN).length?{path:{d:this.toSVGPath()}}:null)}startNew(t,e,n,l,i){ea(this,yN,n),ea(this,TN,l),ea(this,NN,i),[t,e]=na(this,MN,gN).call(this,t,e);const a=ea(this,bN,[NaN,NaN,NaN,NaN,t,e]);ea(this,SN,[t,e]);const s=$i(this,ZN).at(-1);return s&&(s.line=new Float32Array(s.line),s.points=new Float32Array(s.points)),$i(this,ZN).push({line:a,points:$i(this,SN)}),$i(this,FN).set(a,0),ea(this,VN,0),this.toSVGPath(),null}getLastElement(){return $i(this,ZN).at(-1)}setLastElement(t){return $i(this,ZN)?($i(this,ZN).push(t),ea(this,bN,t.line),ea(this,SN,t.points),ea(this,VN,0),{path:{d:this.toSVGPath()}}):$i(this,QN).setLastElement(t)}removeLastElement(){if(!$i(this,ZN))return $i(this,QN).removeLastElement();$i(this,ZN).pop(),ea(this,WN,"");for(let t=0,e=$i(this,ZN).length;tt??NaN)),u,h,m,U),points:p(r[t].map((t=>t??NaN)),u,h,m,U)});const F=new t;return F.build(d,l,i,1,o,c,a),F}get box(){return $i(this,EN)}updateProperty(t,e){return"stroke-width"===t?na(this,DN,xN).call(this,e):null}updateParentDimensions([t,e],n){const[l,i]=na(this,DN,fN).call(this);ea(this,kN,t),ea(this,YN,e),ea(this,CN,n);const[a,s]=na(this,DN,fN).call(this),r=a-l,o=s-i,c=$i(this,EN);return c[0]-=r,c[1]-=o,c[2]+=2*r,c[3]+=2*o,c}updateRotation(t){return ea(this,GN,t),{path:{transform:this.rotationTransform}}}get viewBox(){return $i(this,EN).map(vF.svgRound).join(" ")}get defaultProperties(){const[t,e]=$i(this,EN);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`}}}get rotationTransform(){const[,,t,e]=$i(this,EN);let n=0,l=0,i=0,a=0,s=0,r=0;switch($i(this,GN)){case 90:l=e/t,i=-t/e,s=t;break;case 180:n=-1,a=-1,s=t,r=e;break;case 270:l=-e/t,i=t/e,r=e;break;default:return""}return`matrix(${n} ${l} ${i} ${a} ${vF.svgRound(s)} ${vF.svgRound(r)})`}getPathResizingSVGProperties([t,e,n,l]){const[i,a]=na(this,DN,fN).call(this),[s,r,o,c]=$i(this,EN);if(Math.abs(o-i)<=vF.PRECISION||Math.abs(c-a)<=vF.PRECISION){const i=t+n/2-(s+o/2),a=e+l/2-(r+c/2);return{path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:`${this.rotationTransform} translate(${i} ${a})`}}}const d=(n-2*i)/(o-2*i),u=(l-2*a)/(c-2*a),h=o/n,m=c/l;return{path:{"transform-origin":`${vF.svgRound(s)} ${vF.svgRound(r)}`,transform:`${this.rotationTransform} scale(${h} ${m}) translate(${vF.svgRound(i)} ${vF.svgRound(a)}) scale(${d} ${u}) translate(${vF.svgRound(-i)} ${vF.svgRound(-a)})`}}}getPathResizedSVGProperties([t,e,n,l]){const[i,a]=na(this,DN,fN).call(this),s=$i(this,EN),[r,o,c,d]=s;if(s[0]=t,s[1]=e,s[2]=n,s[3]=l,Math.abs(c-i)<=vF.PRECISION||Math.abs(d-a)<=vF.PRECISION){const i=t+n/2-(r+c/2),a=e+l/2-(o+d/2);for(const{line:t,points:e}of $i(this,JN))vF._translate(t,i,a,t),vF._translate(e,i,a,e);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const u=(n-2*i)/(c-2*i),h=(l-2*a)/(d-2*a),m=-u*(r+i)+t+i,U=-h*(o+a)+e+a;if(1!==u||1!==h||0!==m||0!==U)for(const{line:p,points:F}of $i(this,JN))vF._rescale(p,m,U,u,h,p),vF._rescale(F,m,U,u,h,F);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([t,e],n){const[l,i]=n,a=$i(this,EN),s=t-a[0],r=e-a[1];if($i(this,kN)===l&&$i(this,YN)===i)for(const{line:o,points:c}of $i(this,JN))vF._translate(o,s,r,o),vF._translate(c,s,r,c);else{const t=$i(this,kN)/l,e=$i(this,YN)/i;ea(this,kN,l),ea(this,YN,i);for(const{line:n,points:l}of $i(this,JN))vF._rescale(n,s,r,t,e,n),vF._rescale(l,s,r,t,e,l);a[2]*=t,a[3]*=e}return a[0]=t,a[1]=e,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`}}}get defaultSVGProperties(){const t=$i(this,EN);return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${vF.svgRound(t[0])} ${vF.svgRound(t[1])}`,transform:this.rotationTransform||null},bbox:t}}};EN=new WeakMap,GN=new WeakMap,BN=new WeakMap,JN=new WeakMap,kN=new WeakMap,YN=new WeakMap,CN=new WeakMap,XN=new WeakMap,IN=new WeakMap,DN=new WeakSet,fN=function(t=$i(this,IN)){const e=$i(this,BN)+t/2*$i(this,CN);return $i(this,XN)%180===0?[e/$i(this,kN),e/$i(this,YN)]:[e/$i(this,YN),e/$i(this,kN)]},LN=function(){const[t,e,n,l]=$i(this,EN),[i,a]=na(this,DN,fN).call(this,0);return[t+i,e+a,n-2*i,l-2*a]},wN=function(){const t=ea(this,EN,new Float32Array([1/0,1/0,-1/0,-1/0]));for(const{line:l}of $i(this,JN)){if(l.length<=12){for(let e=4,n=l.length;et!==e[n]))||t.thickness!==n||t.opacity!==l||t.pageIndex!==i},Hi(HN,"_type","ink"),Hi(HN,"_editorType",Fa.INK),Hi(HN,"_defaultDrawingOptions",null);let qN=HN;var $N,tR,eR,nR,lR,iR,aR,sR,rR,oR,cR,dR,uR,hR,mR,UR,pR,FR,bR;const ZR=class extends dd{constructor(t){super({...t,name:"stampEditor"}),ta(this,cR),ta(this,$N,null),ta(this,tR,null),ta(this,eR,null),ta(this,nR,null),ta(this,lR,null),ta(this,iR,""),ta(this,aR,null),ta(this,sR,null),ta(this,rR,!1),ta(this,oR,!1),ea(this,nR,t.bitmapUrl),ea(this,lR,t.bitmapFile)}static initialize(t,e){dd.initialize(t,e)}static get supportedTypes(){return Ca(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map((t=>`image/${t}`)))}static get supportedTypesStr(){return Ca(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(t){return this.supportedTypes.includes(t)}static paste(t,e){e.pasteEditor(Fa.STAMP,{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var t;return{type:"stamp",hasAltText:!(null==(t=this.altTextData)||!t.altText)}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:n}=this._uiManager;if(!n)throw new Error("No ML.");if(!await n.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:l,width:i,height:a}=t||this.copyCanvas(null,null,!0).imageData,s=await n.guess({name:"altText",request:{data:l,width:i,height:a,channels:l.length/(i*a)}});if(!s)throw new Error("No response from the AI service.");if(s.error)throw new Error("Error from the AI service.");if(s.cancel)return null;if(!s.output)throw new Error("No valid response from the AI service.");const r=s.output;return await this.setGuessedAltText(r),e&&!this.hasAltTextData()&&(this.altTextData={alt:r,decorative:!1}),r}remove(){var t;$i(this,tR)&&(ea(this,$N,null),this._uiManager.imageManager.deleteId($i(this,tR)),null==(t=$i(this,aR))||t.remove(),ea(this,aR,null),$i(this,sR)&&(clearTimeout($i(this,sR)),ea(this,sR,null))),super.remove()}rebuild(){this.parent?(super.rebuild(),null!==this.div&&($i(this,tR)&&null===$i(this,aR)&&na(this,cR,hR).call(this),this.isAttachedToDOM||this.parent.add(this))):$i(this,tR)&&na(this,cR,hR).call(this)}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!($i(this,eR)||$i(this,$N)||$i(this,nR)||$i(this,lR)||$i(this,tR))}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this.width&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.div.setAttribute("role","figure"),this.addAltTextButton(),$i(this,$N)?na(this,cR,mR).call(this):na(this,cR,hR).call(this),this.width&&!this.annotationElementId){const[n,l]=this.parentDimensions;this.setAt(t*n,e*l,this.width*n,this.height*l)}return this._uiManager.addShouldRescale(this),this.div}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(null!==$i(this,sR)&&clearTimeout($i(this,sR)),ea(this,sR,setTimeout((()=>{ea(this,sR,null),na(this,cR,pR).call(this)}),200)))}copyCanvas(t,e,n=!1){var l;t||(t=224);const{width:i,height:a}=$i(this,$N),s=new ks;let r=$i(this,$N),o=i,c=a,d=null;if(e){if(i>e||a>e){const t=Math.min(e/i,e/a);o=Math.floor(i*t),c=Math.floor(a*t)}d=document.createElement("canvas");const t=d.width=Math.ceil(o*s.sx),n=d.height=Math.ceil(c*s.sy);$i(this,rR)||(r=na(this,cR,UR).call(this,t,n));const u=d.getContext("2d");u.filter=this._uiManager.hcmFilter;let h="white",m="#cfcfd8";"none"!==this._uiManager.hcmFilter?m="black":null!=(l=window.matchMedia)&&l.call(window,"(prefers-color-scheme: dark)").matches&&(h="#8f8f9d",m="#42414d");const U=15,p=U*s.sx,F=U*s.sy,b=new OffscreenCanvas(2*p,2*F),Z=b.getContext("2d");Z.fillStyle=h,Z.fillRect(0,0,2*p,2*F),Z.fillStyle=m,Z.fillRect(0,0,p,F),Z.fillRect(p,F,p,F),u.fillStyle=u.createPattern(b,"repeat"),u.fillRect(0,0,t,n),u.drawImage(r,0,0,r.width,r.height,0,0,t,n)}let u=null;if(n){let e,n;if(s.symmetric&&r.widtht||a>t){const l=Math.min(t/i,t/a);e=Math.floor(i*l),n=Math.floor(a*l),$i(this,rR)||(r=na(this,cR,UR).call(this,e,n))}const l=new OffscreenCanvas(e,n).getContext("2d",{willReadFrequently:!0});l.drawImage(r,0,0,r.width,r.height,0,0,e,n),u={width:e,height:n,data:l.getImageData(0,0,e,n).data}}return{canvas:d,width:o,height:c,imageData:u}}getImageForAltText(){return $i(this,aR)}static async deserialize(t,e,n){var l;let i=null;if(t instanceof WF){const{data:{rect:a,rotation:s,id:r,structParent:o,popupRef:c},container:d,parent:{page:{pageNumber:u}}}=t,h=d.querySelector("canvas"),m=n.imageManager.getFromCanvas(d.id,h);h.remove();const U=(null==(l=await e._structTree.getAriaAttributes(`${os}${r}`))?void 0:l.get("aria-label"))||"";i=t={annotationType:Fa.STAMP,bitmapId:m.id,bitmap:m.bitmap,pageIndex:u-1,rect:a.slice(0),rotation:s,id:r,deleted:!1,accessibilityData:{decorative:!1,altText:U},isSvg:!1,structParent:o,popupRef:c}}const a=await super.deserialize(t,e,n),{rect:s,bitmap:r,bitmapUrl:o,bitmapId:c,isSvg:d,accessibilityData:u}=t;c&&n.imageManager.isValidId(c)?(ea(a,tR,c),r&&ea(a,$N,r)):ea(a,nR,o),ea(a,rR,d);const[h,m]=a.pageDimensions;return a.width=(s[2]-s[0])/h,a.height=(s[3]-s[1])/m,a.annotationElementId=t.id||null,u&&(a.altTextData=u),a._initialData=i,ea(a,oR,!!i),a}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const n={annotationType:Fa.STAMP,bitmapId:$i(this,tR),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:$i(this,rR),structTreeParentId:this._structTreeParentId};if(t)return n.bitmapUrl=na(this,cR,FR).call(this,!0),n.accessibilityData=this.serializeAltText(!0),n;const{decorative:l,altText:i}=this.serializeAltText(!1);if(!l&&i&&(n.accessibilityData={type:"Figure",alt:i}),this.annotationElementId){const t=na(this,cR,bR).call(this,n);if(t.isSame)return null;t.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1}if(n.id=this.annotationElementId,null===e)return n;e.stamps||(e.stamps=new Map);const a=$i(this,rR)?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(e.stamps.has($i(this,tR))){if($i(this,rR)){const t=e.stamps.get($i(this,tR));a>t.area&&(t.area=a,t.serialized.bitmap.close(),t.serialized.bitmap=na(this,cR,FR).call(this,!1))}}else e.stamps.set($i(this,tR),{area:a,serialized:n}),n.bitmap=na(this,cR,FR).call(this,!1);return n}renderAnnotationElement(t){return t.updateEdited({rect:this.getRect(0,0)}),null}};$N=new WeakMap,tR=new WeakMap,eR=new WeakMap,nR=new WeakMap,lR=new WeakMap,iR=new WeakMap,aR=new WeakMap,sR=new WeakMap,rR=new WeakMap,oR=new WeakMap,cR=new WeakSet,dR=function(t,e=!1){t?(ea(this,$N,t.bitmap),e||(ea(this,tR,t.id),ea(this,rR,t.isSvg)),t.file&&ea(this,iR,t.file.name),na(this,cR,mR).call(this)):this.remove()},uR=function(){if(ea(this,eR,null),this._uiManager.enableWaiting(!1),$i(this,aR)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&$i(this,$N))return this._editToolbar.hide(),void this._uiManager.editAltText(this,!0);if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&$i(this,$N)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}},hR=function(){if($i(this,tR))return this._uiManager.enableWaiting(!0),void this._uiManager.imageManager.getFromId($i(this,tR)).then((t=>na(this,cR,dR).call(this,t,!0))).finally((()=>na(this,cR,uR).call(this)));if($i(this,nR)){const t=$i(this,nR);return ea(this,nR,null),this._uiManager.enableWaiting(!0),void ea(this,eR,this._uiManager.imageManager.getFromUrl(t).then((t=>na(this,cR,dR).call(this,t))).finally((()=>na(this,cR,uR).call(this))))}if($i(this,lR)){const t=$i(this,lR);return ea(this,lR,null),this._uiManager.enableWaiting(!0),void ea(this,eR,this._uiManager.imageManager.getFromFile(t).then((t=>na(this,cR,dR).call(this,t))).finally((()=>na(this,cR,uR).call(this))))}const t=document.createElement("input");t.type="file",t.accept=ZR.supportedTypesStr;const e=this._uiManager._signal;ea(this,eR,new Promise((n=>{t.addEventListener("change",(async()=>{if(t.files&&0!==t.files.length){this._uiManager.enableWaiting(!0);const e=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),na(this,cR,dR).call(this,e)}else this.remove();n()}),{signal:e}),t.addEventListener("cancel",(()=>{this.remove(),n()}),{signal:e})})).finally((()=>na(this,cR,uR).call(this)))),t.click()},mR=function(){var t;const{div:e}=this;let{width:n,height:l}=$i(this,$N);const[i,a]=this.pageDimensions,s=.75;if(this.width)n=this.width*i,l=this.height*a;else if(n>s*i||l>s*a){const t=Math.min(s*i/n,s*a/l);n*=t,l*=t}const[r,o]=this.parentDimensions;this.setDims(n*r/i,l*o/a),this._uiManager.enableWaiting(!1);const c=ea(this,aR,document.createElement("canvas"));c.setAttribute("role","img"),this.addContainer(c),this.width=n/i,this.height=l/a,null!=(t=this._initialOptions)&&t.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),na(this,cR,pR).call(this),$i(this,oR)||(this.parent.addUndoableEditor(this),ea(this,oR,!0)),this._reportTelemetry({action:"inserted_image"}),$i(this,iR)&&c.setAttribute("aria-label",$i(this,iR))},UR=function(t,e){const{width:n,height:l}=$i(this,$N);let i=n,a=l,s=$i(this,$N);for(;i>2*t||a>2*e;){const n=i,l=a;i>2*t&&(i=i>=16384?Math.floor(i/2)-1:Math.ceil(i/2)),a>2*e&&(a=a>=16384?Math.floor(a/2)-1:Math.ceil(a/2));const r=new OffscreenCanvas(i,a);r.getContext("2d").drawImage(s,0,0,n,l,0,0,i,a),s=r.transferToImageBitmap()}return s},pR=function(){const[t,e]=this.parentDimensions,{width:n,height:l}=this,i=new ks,a=Math.ceil(n*t*i.sx),s=Math.ceil(l*e*i.sy),r=$i(this,aR);if(!r||r.width===a&&r.height===s)return;r.width=a,r.height=s;const o=$i(this,rR)?$i(this,$N):na(this,cR,UR).call(this,a,s),c=r.getContext("2d");c.filter=this._uiManager.hcmFilter,c.drawImage(o,0,0,o.width,o.height,0,0,a,s)},FR=function(t){if(t){if($i(this,rR)){const t=this._uiManager.imageManager.getSvgUrl($i(this,tR));if(t)return t}const t=document.createElement("canvas");return({width:t.width,height:t.height}=$i(this,$N)),t.getContext("2d").drawImage($i(this,$N),0,0),t.toDataURL()}if($i(this,rR)){const[t,e]=this.pageDimensions,n=Math.round(this.width*t*hs.PDF_TO_CSS_UNITS),l=Math.round(this.height*e*hs.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,l);return i.getContext("2d").drawImage($i(this,$N),0,0,$i(this,$N).width,$i(this,$N).height,0,0,n,l),i.transferToImageBitmap()}return structuredClone($i(this,$N))},bR=function(t){var e;const{pageIndex:n,accessibilityData:{altText:l}}=this._initialData,i=t.pageIndex===n,a=((null==(e=t.accessibilityData)?void 0:e.alt)||"")===l;return{isSame:!this._hasBeenMoved&&!this._hasBeenResized&&i&&a,isSameAltText:a}},Hi(ZR,"_type","stamp"),Hi(ZR,"_editorType",Fa.STAMP);let NR=ZR;var RR,SR,WR,VR,QR,yR,TR,MR,gR,ER,GR,BR,JR,kR,YR,CR,XR,IR,DR,fR,LR,wR;let xR=(YR=class{constructor({uiManager:t,pageIndex:e,div:n,structTreeLayer:l,accessibilityManager:i,annotationLayer:a,drawLayer:s,textLayer:r,viewport:o,l10n:c}){ta(this,XR),ta(this,RR),ta(this,SR,!1),ta(this,WR,null),ta(this,VR,null),ta(this,QR,null),ta(this,yR,new Map),ta(this,TR,!1),ta(this,MR,!1),ta(this,gR,!1),ta(this,ER,null),ta(this,GR,null),ta(this,BR,null),ta(this,JR,null),ta(this,kR);const d=[...$i(YR,CR).values()];if(!YR._initialized){YR._initialized=!0;for(const e of d)e.initialize(c,t)}t.registerEditorTypes(d),ea(this,kR,t),this.pageIndex=e,this.div=n,ea(this,RR,i),ea(this,WR,a),this.viewport=o,ea(this,BR,r),this.drawLayer=s,this._structTree=l,$i(this,kR).addLayer(this)}get isEmpty(){return 0===$i(this,yR).size}get isInvisible(){return this.isEmpty&&$i(this,kR).getMode()===Fa.NONE}updateToolbar(t){$i(this,kR).updateToolbar(t)}updateMode(t=$i(this,kR).getMode()){switch(na(this,XR,wR).call(this),t){case Fa.NONE:return this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),void this.disableClick();case Fa.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case Fa.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;for(const n of $i(YR,CR).values())e.toggle(`${n._type}Editing`,t===n._editorType);this.div.hidden=!1}hasTextLayer(t){var e;return t===(null==(e=$i(this,BR))?void 0:e.div)}setEditingState(t){$i(this,kR).setEditingState(t)}addCommands(t){$i(this,kR).addCommands(t)}cleanUndoStack(t){$i(this,kR).cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){var e;null==(e=$i(this,WR))||e.div.classList.toggle("disabled",!t)}async enable(){ea(this,gR,!0),this.div.tabIndex=0,this.togglePointerEvents(!0);const t=new Set;for(const n of $i(this,yR).values())n.enableEditing(),n.show(!0),n.annotationElementId&&($i(this,kR).removeChangedExistingAnnotation(n),t.add(n.annotationElementId));if(!$i(this,WR))return void ea(this,gR,!1);const e=$i(this,WR).getEditableAnnotations();for(const n of e){if(n.hide(),$i(this,kR).isDeletedAnnotationElement(n.data.id)||t.has(n.data.id))continue;const e=await this.deserialize(n);e&&(this.addOrRebuild(e),e.enableEditing())}ea(this,gR,!1)}disable(){var t;ea(this,MR,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const e=new Map,n=new Map;for(const i of $i(this,yR).values())if(i.disableEditing(),i.annotationElementId){if(null!==i.serialize()){e.set(i.annotationElementId,i);continue}n.set(i.annotationElementId,i),null==(t=this.getEditableAnnotation(i.annotationElementId))||t.show(),i.remove()}if($i(this,WR)){const t=$i(this,WR).getEditableAnnotations();for(const l of t){const{id:t}=l.data;if($i(this,kR).isDeletedAnnotationElement(t))continue;let i=n.get(t);i?(i.resetAnnotationElement(l),i.show(!1),l.show()):(i=e.get(t),i&&($i(this,kR).addChangedExistingAnnotation(i),i.renderAnnotationElement(l)&&i.show(!1)),l.show())}}na(this,XR,wR).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:l}=this.div;for(const i of $i(YR,CR).values())l.remove(`${i._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),ea(this,MR,!1)}getEditableAnnotation(t){var e;return(null==(e=$i(this,WR))?void 0:e.getEditableAnnotation(t))||null}setActiveEditor(t){$i(this,kR).getActive()!==t&&$i(this,kR).setActiveEditor(t)}enableTextSelection(){var t;if(this.div.tabIndex=-1,null!=(t=$i(this,BR))&&t.div&&!$i(this,JR)){ea(this,JR,new AbortController);const t=$i(this,kR).combinedSignal($i(this,JR));$i(this,BR).div.addEventListener("pointerdown",na(this,XR,IR).bind(this),{signal:t}),$i(this,BR).div.classList.add("highlighting")}}disableTextSelection(){var t;this.div.tabIndex=0,null!=(t=$i(this,BR))&&t.div&&$i(this,JR)&&($i(this,JR).abort(),ea(this,JR,null),$i(this,BR).div.classList.remove("highlighting"))}enableClick(){if($i(this,VR))return;ea(this,VR,new AbortController);const t=$i(this,kR).combinedSignal($i(this,VR));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:t});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:t}),this.div.addEventListener("pointercancel",e,{signal:t})}disableClick(){var t;null==(t=$i(this,VR))||t.abort(),ea(this,VR,null)}attach(t){$i(this,yR).set(t.id,t);const{annotationElementId:e}=t;e&&$i(this,kR).isDeletedAnnotationElement(e)&&$i(this,kR).removeDeletedAnnotationElement(t)}detach(t){var e;$i(this,yR).delete(t.id),null==(e=$i(this,RR))||e.removePointerInTextLayer(t.contentDiv),!$i(this,MR)&&t.annotationElementId&&$i(this,kR).addDeletedAnnotationElement(t)}remove(t){this.detach(t),$i(this,kR).removeEditor(t),t.div.remove(),t.isAttachedToDOM=!1}changeParent(t){var e;t.parent!==this&&(t.parent&&t.annotationElementId&&($i(this,kR).addDeletedAnnotationElement(t.annotationElementId),dd.deleteAnnotationElement(t),t.annotationElementId=null),this.attach(t),null==(e=t.parent)||e.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}add(t){if(t.parent!==this||!t.isAttachedToDOM){if(this.changeParent(t),$i(this,kR).addEditor(t),this.attach(t),!t.isAttachedToDOM){const e=t.render();this.div.append(e),t.isAttachedToDOM=!0}t.fixAndSetPosition(),t.onceAdded(!$i(this,gR)),$i(this,kR).addToAnnotationStorage(t),t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){var e;if(!t.isAttachedToDOM)return;const{activeElement:n}=document;t.div.contains(n)&&!$i(this,QR)&&(t._focusEventsAllowed=!1,ea(this,QR,setTimeout((()=>{ea(this,QR,null),t.div.contains(document.activeElement)?t._focusEventsAllowed=!0:(t.div.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0,signal:$i(this,kR)._signal}),n.focus())}),0))),t._structTreeParentId=null==(e=$i(this,RR))?void 0:e.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?(t.parent||(t.parent=this),t.rebuild(),t.show()):this.add(t)}addUndoableEditor(t){const e=()=>t._uiManager.rebuild(t),n=()=>{t.remove()};this.addCommands({cmd:e,undo:n,mustExec:!1})}getNextId(){return $i(this,kR).getId()}combinedSignal(t){return $i(this,kR).combinedSignal(t)}canCreateNewEmptyEditor(){var t;return null==(t=$i(this,XR,DR))?void 0:t.canCreateNewEmptyEditor()}pasteEditor(t,e){$i(this,kR).updateToolbar(t),$i(this,kR).updateMode(t);const{offsetX:n,offsetY:l}=na(this,XR,LR).call(this),i=this.getNextId(),a=na(this,XR,fR).call(this,{parent:this,id:i,x:n,y:l,uiManager:$i(this,kR),isCentered:!0,...e});a&&this.add(a)}async deserialize(t){var e;return await(null==(e=$i(YR,CR).get(t.annotationType??t.annotationEditorType))?void 0:e.deserialize(t,this,$i(this,kR)))||null}createAndAddNewEditor(t,e,n={}){const l=this.getNextId(),i=na(this,XR,fR).call(this,{parent:this,id:l,x:t.offsetX,y:t.offsetY,uiManager:$i(this,kR),isCentered:e,...n});return i&&this.add(i),i}addNewEditor(){this.createAndAddNewEditor(na(this,XR,LR).call(this),!0)}setSelected(t){$i(this,kR).setSelected(t)}toggleSelected(t){$i(this,kR).toggleSelected(t)}unselect(t){$i(this,kR).unselect(t)}pointerup(t){var e;const{isMac:n}=Aa.platform;if(!(0!==t.button||t.ctrlKey&&n)&&t.target===this.div&&$i(this,TR)&&(ea(this,TR,!1),null==(e=$i(this,XR,DR))||!e.isDrawer||!$i(this,XR,DR).supportMultipleDrawings)){if(!$i(this,SR))return void ea(this,SR,!0);if($i(this,kR).getMode()===Fa.STAMP)return void $i(this,kR).unselectAll();this.createAndAddNewEditor(t,!1)}}pointerdown(t){var e;if($i(this,kR).getMode()===Fa.HIGHLIGHT&&this.enableTextSelection(),$i(this,TR))return void ea(this,TR,!1);const{isMac:n}=Aa.platform;if(0!==t.button||t.ctrlKey&&n||t.target!==this.div)return;if(ea(this,TR,!0),null!=(e=$i(this,XR,DR))&&e.isDrawer)return void this.startDrawingSession(t);const l=$i(this,kR).getActive();ea(this,SR,!l||l.isEmpty())}startDrawingSession(t){if(this.div.focus(),$i(this,ER))return void $i(this,XR,DR).startDrawing(this,$i(this,kR),!1,t);$i(this,kR).setCurrentDrawingSession(this),ea(this,ER,new AbortController);const e=$i(this,kR).combinedSignal($i(this,ER));this.div.addEventListener("blur",(({relatedTarget:t})=>{t&&!this.div.contains(t)&&(ea(this,GR,null),this.commitOrRemove())}),{signal:e}),$i(this,XR,DR).startDrawing(this,$i(this,kR),!1,t)}pause(t){if(t){const{activeElement:t}=document;this.div.contains(t)&&ea(this,GR,t)}else $i(this,GR)&&setTimeout((()=>{var t;null==(t=$i(this,GR))||t.focus(),ea(this,GR,null)}),0)}endDrawingSession(t=!1){return $i(this,ER)?($i(this,kR).setCurrentDrawingSession(null),$i(this,ER).abort(),ea(this,ER,null),ea(this,GR,null),$i(this,XR,DR).endDrawing(t)):null}findNewParent(t,e,n){const l=$i(this,kR).findParent(e,n);return null!==l&&l!==this&&(l.changeParent(t),!0)}commitOrRemove(){return!!$i(this,ER)&&(this.endDrawingSession(),!0)}onScaleChanging(){$i(this,ER)&&$i(this,XR,DR).onScaleChangingWhenDrawing(this)}destroy(){var t,e;this.commitOrRemove(),(null==(t=$i(this,kR).getActive())?void 0:t.parent)===this&&($i(this,kR).commitOrRemove(),$i(this,kR).setActiveEditor(null)),$i(this,QR)&&(clearTimeout($i(this,QR)),ea(this,QR,null));for(const n of $i(this,yR).values())null==(e=$i(this,RR))||e.removePointerInTextLayer(n.contentDiv),n.setParent(null),n.isAttachedToDOM=!1,n.div.remove();this.div=null,$i(this,yR).clear(),$i(this,kR).removeLayer(this)}render({viewport:t}){this.viewport=t,Js(this.div,t);for(const e of $i(this,kR).getEditors(this.pageIndex))this.add(e),e.rebuild();this.updateMode()}update({viewport:t}){$i(this,kR).commitOrRemove(),na(this,XR,wR).call(this);const e=this.viewport.rotation,n=t.rotation;if(this.viewport=t,Js(this.div,{rotation:n}),e!==n)for(const l of $i(this,yR).values())l.rotate(n)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return $i(this,kR).viewParameters.realScale}},RR=new WeakMap,SR=new WeakMap,WR=new WeakMap,VR=new WeakMap,QR=new WeakMap,yR=new WeakMap,TR=new WeakMap,MR=new WeakMap,gR=new WeakMap,ER=new WeakMap,GR=new WeakMap,BR=new WeakMap,JR=new WeakMap,kR=new WeakMap,CR=new WeakMap,XR=new WeakSet,IR=function(t){$i(this,kR).unselectAll();const{target:e}=t;if(e===$i(this,BR).div||("img"===e.getAttribute("role")||e.classList.contains("endOfContent"))&&$i(this,BR).div.contains(e)){const{isMac:e}=Aa.platform;if(0!==t.button||t.ctrlKey&&e)return;$i(this,kR).showAllEditors("highlight",!0,!0),$i(this,BR).div.classList.add("free"),this.toggleDrawing(),jZ.startHighlighting(this,"ltr"===$i(this,kR).direction,{target:$i(this,BR).div,x:t.x,y:t.y}),$i(this,BR).div.addEventListener("pointerup",(()=>{$i(this,BR).div.classList.remove("free"),this.toggleDrawing(!0)}),{once:!0,signal:$i(this,kR)._signal}),t.preventDefault()}},DR=function(){return $i(YR,CR).get($i(this,kR).getMode())},fR=function(t){const e=$i(this,XR,DR);return e?new e.prototype.constructor(t):null},LR=function(){const{x:t,y:e,width:n,height:l}=this.div.getBoundingClientRect(),i=Math.max(0,t),a=Math.max(0,e),s=Math.min(window.innerWidth,t+n),r=Math.min(window.innerHeight,e+l),o=(i+s)/2-t,c=(a+r)/2-e,[d,u]=this.viewport.rotation%180===0?[o,c]:[c,o];return{offsetX:d,offsetY:u}},wR=function(){for(const t of $i(this,yR).values())t.isEmpty()&&t.remove()},Hi(YR,"_initialized",!1),ta(YR,CR,new Map([zF,qN,NR,jZ].map((t=>[t._editorType,t])))),YR);var zR,vR,OR,_R,jR,KR,PR,AR,HR,qR,$R;let tS=(KR=class{constructor({pageIndex:t}){ta(this,AR),ta(this,zR,null),ta(this,vR,0),ta(this,OR,new Map),ta(this,_R,new Map),this.pageIndex=t}setParent(t){if($i(this,zR)){if($i(this,zR)!==t){if($i(this,OR).size>0)for(const e of $i(this,OR).values())e.remove(),t.append(e);ea(this,zR,t)}}else ea(this,zR,t)}static get _svgFactory(){return Ca(this,"_svgFactory",new wU)}draw(t,e=!1,n=!1){const l=la(this,vR)._++,i=na(this,AR,HR).call(this),a=KR._svgFactory.createElement("defs");i.append(a);const s=KR._svgFactory.createElement("path");a.append(s);const r=`path_p${this.pageIndex}_${l}`;s.setAttribute("id",r),s.setAttribute("vector-effect","non-scaling-stroke"),e&&$i(this,_R).set(l,s);const o=n?na(this,AR,qR).call(this,a,r):null,c=KR._svgFactory.createElement("use");return i.append(c),c.setAttribute("href",`#${r}`),this.updateProperties(i,t),$i(this,OR).set(l,i),{id:l,clipPathId:`url(#${o})`}}drawOutline(t,e){const n=la(this,vR)._++,l=na(this,AR,HR).call(this),i=KR._svgFactory.createElement("defs");l.append(i);const a=KR._svgFactory.createElement("path");i.append(a);const s=`path_p${this.pageIndex}_${n}`;let r;if(a.setAttribute("id",s),a.setAttribute("vector-effect","non-scaling-stroke"),e){const t=KR._svgFactory.createElement("mask");i.append(t),r=`mask_p${this.pageIndex}_${n}`,t.setAttribute("id",r),t.setAttribute("maskUnits","objectBoundingBox");const e=KR._svgFactory.createElement("rect");t.append(e),e.setAttribute("width","1"),e.setAttribute("height","1"),e.setAttribute("fill","white");const l=KR._svgFactory.createElement("use");t.append(l),l.setAttribute("href",`#${s}`),l.setAttribute("stroke","none"),l.setAttribute("fill","black"),l.setAttribute("fill-rule","nonzero"),l.classList.add("mask")}const o=KR._svgFactory.createElement("use");l.append(o),o.setAttribute("href",`#${s}`),r&&o.setAttribute("mask",`url(#${r})`);const c=o.cloneNode();return l.append(c),o.classList.add("mainOutline"),c.classList.add("secondaryOutline"),this.updateProperties(l,t),$i(this,OR).set(n,l),n}finalizeDraw(t,e){$i(this,_R).delete(t),this.updateProperties(t,e)}updateProperties(t,e){var n;if(!e)return;const{root:l,bbox:i,rootClass:a,path:s}=e,r="number"==typeof t?$i(this,OR).get(t):t;if(r){if(l&&na(this,AR,$R).call(this,r,l),i&&na(n=KR,jR,PR).call(n,r,i),a){const{classList:t}=r;for(const[e,n]of Object.entries(a))t.toggle(e,n)}if(s){const t=r.firstChild.firstChild;na(this,AR,$R).call(this,t,s)}}}updateParent(t,e){if(e===this)return;const n=$i(this,OR).get(t);n&&($i(e,zR).append(n),$i(this,OR).delete(t),$i(e,OR).set(t,n))}remove(t){$i(this,_R).delete(t),null!==$i(this,zR)&&($i(this,OR).get(t).remove(),$i(this,OR).delete(t))}destroy(){ea(this,zR,null);for(const t of $i(this,OR).values())t.remove();$i(this,OR).clear(),$i(this,_R).clear()}},zR=new WeakMap,vR=new WeakMap,OR=new WeakMap,_R=new WeakMap,jR=new WeakSet,PR=function(t,[e,n,l,i]){const{style:a}=t;a.top=100*n+"%",a.left=100*e+"%",a.width=100*l+"%",a.height=100*i+"%"},AR=new WeakSet,HR=function(){const t=KR._svgFactory.create(1,1,!0);return $i(this,zR).append(t),t.setAttribute("aria-hidden",!0),t},qR=function(t,e){const n=KR._svgFactory.createElement("clipPath");t.append(n);const l=`clip_${e}`;n.setAttribute("id",l),n.setAttribute("clipPathUnits","objectBoundingBox");const i=KR._svgFactory.createElement("use");return n.append(i),i.setAttribute("href",`#${e}`),i.classList.add("clip"),l},$R=function(t,e){for(const[n,l]of Object.entries(e))null===l?t.removeAttribute(n):t.setAttribute(n,l)},ta(KR,jR),KR);globalThis.pdfjsTestingUtils={HighlightOutliner:aZ},ra.AbortException,ra.AnnotationEditorLayer,ra.AnnotationEditorParamsType,ra.AnnotationEditorType,ra.AnnotationEditorUIManager;var eS=ra.AnnotationLayer;ra.AnnotationMode,ra.ColorPicker,ra.DOMSVGFactory,ra.DrawLayer,ra.FeatureTest;var nS=ra.GlobalWorkerOptions;ra.ImageKind,ra.InvalidPDFException,ra.MissingPDFException,ra.OPS,ra.OutputScale,ra.PDFDataRangeTransport,ra.PDFDateString,ra.PDFWorker;var lS=ra.PasswordResponses;ra.PermissionFlag,ra.PixelsPerInch,ra.RenderingCancelledException;var iS=ra.TextLayer;ra.TouchManager,ra.UnexpectedResponseException,ra.Util,ra.VerbosityLevel,ra.XfaLayer,ra.build,ra.createValidAbsoluteUrl,ra.fetchData;var aS=ra.getDocument;ra.getFilenameFromUrl,ra.getPdfFilenameFromUrl,ra.getXfaPageViewport,ra.isDataScheme,ra.isPdfFile,ra.noContextMenu,ra.normalizeUnicode,ra.setLayerDimensions,ra.shadow,ra.stopEvent,ra.version;const sS="data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNjcwNikscz1pKDIxOTUpLG49YS5BcnJheUJ1ZmZlcixvPWEuVHlwZUVycm9yO2UuZXhwb3J0cz1uJiZyKG4ucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1zKGUpKXRocm93IG5ldyBvKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3NDc2KSxzPWkoNzM5NCksbj1hLkFycmF5QnVmZmVyLG89biYmbi5wcm90b3R5cGUsZz1vJiZyKG8uc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09cyhlKSlyZXR1cm4hMTtpZighZylyZXR1cm4hMTt0cnl7ZyhlLDAsMCk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OTooZSx0LGkpPT57dmFyIGE9aSgzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDUxNjkpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksbD1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsQz1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPU1hdGgubWluLHU9Qy5wcm90b3R5cGUsZD1RLnByb3RvdHlwZSxmPXIodS5zbGljZSkscD1zKHUsInJlc2l6YWJsZSIsImdldCIpLG09cyh1LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IikseT1yKGQuZ2V0SW50OCksdz1yKGQuc2V0SW50OCk7ZS5leHBvcnRzPShsfHxjKSYmZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI9ZyhlKSxzPXZvaWQgMD09PXQ/cjpuKHQpLHU9IXB8fCFwKGUpO28oZSk7aWYobCl7ZT1oKGUse3RyYW5zZmVyOltlXX0pO2lmKHI9PT1zJiYoaXx8dSkpcmV0dXJuIGV9aWYocj49cyYmKCFpfHx1KSlhPWYoZSwwLHMpO2Vsc2V7dmFyIGQ9aSYmIXUmJm0/e21heEJ5dGVMZW5ndGg6bShlKX06dm9pZCAwO2E9bmV3IEMocyxkKTtmb3IodmFyIGI9bmV3IFEoZSksRD1uZXcgUShhKSxTPUUocyxyKSxrPTA7azxTO2srKyl3KEQsayx5KGIsaykpfWx8fGMoZSk7cmV0dXJuIGF9fSw0NjQ0OihlLHQsaSk9Pnt2YXIgYSxyLHMsbj1pKDc4MTEpLG89aSgzNzI0KSxnPWkoNDU3NiksYz1pKDQ5MDEpLGw9aSgzNCksaD1pKDkyOTcpLEM9aSg2OTU1KSxRPWkoNjgyMyksRT1pKDY2OTkpLHU9aSg2ODQwKSxkPWkoMjEwNiksZj1pKDE2MjUpLHA9aSgyNzg3KSxtPWkoMjk2NykseT1pKDgyMjcpLHc9aSgzMzkyKSxiPWkoMTE4MSksRD1iLmVuZm9yY2UsUz1iLmdldCxrPWcuSW50OEFycmF5LFI9ayYmay5wcm90b3R5cGUsTj1nLlVpbnQ4Q2xhbXBlZEFycmF5LEc9TiYmTi5wcm90b3R5cGUsTT1rJiZwKGspLFU9UiYmcChSKSx4PU9iamVjdC5wcm90b3R5cGUsTD1nLlR5cGVFcnJvcixIPXkoInRvU3RyaW5nVGFnIiksSj13KCJUWVBFRF9BUlJBWV9UQUciKSx2PSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFk9biYmISFtJiYiT3BlcmEiIT09QyhnLm9wZXJhKSxLPSExLFQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxxPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7aWYobCh0KSl7dmFyIGk9Uyh0KTtyZXR1cm4gaSYmaChpLHYpP2lbdl06Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKHQpfX0saXNUeXBlZEFycmF5PWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIGgoVCx0KXx8aChxLHQpfTtmb3IoYSBpbiBUKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSk/RChzKVt2XT1yOlk9ITE7Zm9yKGEgaW4gcSkocz0ocj1nW2FdKSYmci5wcm90b3R5cGUpJiYoRChzKVt2XT1yKTtpZighWXx8IWMoTSl8fE09PT1GdW5jdGlvbi5wcm90b3R5cGUpe009ZnVuY3Rpb24gVHlwZWRBcnJheSgpe3Rocm93IG5ldyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihZKWZvcihhIGluIFQpZ1thXSYmbShnW2FdLE0pfWlmKCFZfHwhVXx8VT09PXgpe1U9TS5wcm90b3R5cGU7aWYoWSlmb3IoYSBpbiBUKWdbYV0mJm0oZ1thXS5wcm90b3R5cGUsVSl9WSYmcChHKSE9PVUmJm0oRyxVKTtpZihvJiYhaChVLEgpKXtLPSEwO2QoVSxILHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tKXTp2b2lkIDB9fSk7Zm9yKGEgaW4gVClnW2FdJiZFKGdbYV0sSixhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6WSxUWVBFRF9BUlJBWV9UQUc6SyYmSixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEwoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGMoZSkmJighbXx8ZihNLGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTChRKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsaSxhKXtpZihvKXtpZihpKWZvcih2YXIgciBpbiBUKXt2YXIgcz1nW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChpKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1VW2VdJiYhaXx8dShVLGUsaT90OlkmJlJbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxyO2lmKG8pe2lmKG0pe2lmKGkpZm9yKGEgaW4gVClpZigocj1nW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoTVtlXSYmIWkpcmV0dXJuO3RyeXtyZXR1cm4gdShNLGUsaT90OlkmJk1bZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gVCkhKHI9Z1thXSl8fHJbZV0mJiFpfHx1KHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoVCx0KXx8aChxLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTpNLFR5cGVkQXJyYXlQcm90b3R5cGU6VX19LDUzNzA6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9pOmEodCksbj1uZXcgZShzKTtzPnI7KW5bcl09dFtyKytdO3JldHVybiBufX0sOTYxNzooZSx0LGkpPT57dmFyIGE9aSg1Mzk3KSxyPWkoNTYxMCkscz1pKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxpLG4pe3ZhciBvPWEodCksZz1zKG8pO2lmKDA9PT1nKXJldHVybiFlJiYtMTt2YXIgYyxsPXIobixnKTtpZihlJiZpIT1pKXtmb3IoO2c+bDspaWYoKGM9b1tsKytdKSE9YylyZXR1cm4hMH1lbHNlIGZvcig7Zz5sO2wrKylpZigoZXx8bCBpbiBvKSYmb1tsXT09PWkpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQzNzYpLHM9VHlwZUVycm9yLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhbihlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzY4MDooZSx0LGkpPT57dmFyIGE9aSg5NTA0KTtlLmV4cG9ydHM9YShbXS5zbGljZSl9LDc2Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPWEoZSkscj1uZXcgdChpKSxzPTA7czxpO3MrKylyW3NdPWVbaS1zLTFdO3JldHVybiByfX0sOTkyODooZSx0LGkpPT57dmFyIGE9aSg2MTk4KSxyPWkoMTI5MSkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxuKXt2YXIgbz1hKGUpLGc9cihpKSxjPWc8MD9vK2c6ZztpZihjPj1vfHxjPDApdGhyb3cgbmV3IHMoIkluY29ycmVjdCBpbmRleCIpO2Zvcih2YXIgbD1uZXcgdChvKSxoPTA7aDxvO2grKylsW2hdPWg9PT1jP246ZVtoXTtyZXR1cm4gbH19LDYzMTk6KGUsdCxpKT0+e3ZhciBhPWkoODU1MSkscj1pKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxzKXt0cnl7cmV0dXJuIHM/dChhKGkpWzBdLGlbMV0pOnQoaSl9Y2F0Y2godCl7cihlLCJ0aHJvdyIsdCl9fX0sMjE5NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWEoe30udG9TdHJpbmcpLHM9YSgiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzKHIoZSksOCwtMSl9fSw2OTU1OihlLHQsaSk9Pnt2YXIgYT1pKDIxNDApLHI9aSg0OTAxKSxzPWkoMjE5NSksbj1pKDgyMjcpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGc9IkFyZ3VtZW50cyI9PT1zKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPWE/czpmdW5jdGlvbihlKXt2YXIgdCxpLGE7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PW8oZSksbikpP2k6Zz9zKHQpOiJPYmplY3QiPT09KGE9cyh0KSkmJnIodC5jYWxsZWUpPyJBcmd1bWVudHMiOmF9fSw3NzQwOihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg1MDMxKSxzPWkoNzM0Nyksbj1pKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciBvPXIodCksZz1uLmYsYz1zLmYsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgaD1vW2xdO2EoZSxoKXx8aSYmYShpLGgpfHxnKGUsaCxjKHQsaCkpfX19LDIyMTE6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbDtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKSE9PUYucHJvdG90eXBlfSkpfSwyNTI5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sNjY5OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUsdCxpKXtyZXR1cm4gci5mKGUsdCxzKDEsaSkpfTpmdW5jdGlvbihlLHQsaSl7ZVt0XT1pO3JldHVybiBlfX0sNjk4MDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNDY1OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7YT9yLmYoZSx0LHMoMCxpKSk6ZVt0XT1pfX0sMjEwNjooZSx0LGkpPT57dmFyIGE9aSgyODMpLHI9aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2kuZ2V0JiZhKGkuZ2V0LHQse2dldHRlcjohMH0pO2kuc2V0JiZhKGkuc2V0LHQse3NldHRlcjohMH0pO3JldHVybiByLmYoZSx0LGkpfX0sNjg0MDooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNDkxMykscz1pKDI4Myksbj1pKDk0MzMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtvfHwobz17fSk7dmFyIGc9by5lbnVtZXJhYmxlLGM9dm9pZCAwIT09by5uYW1lP28ubmFtZTp0O2EoaSkmJnMoaSxjLG8pO2lmKG8uZ2xvYmFsKWc/ZVt0XT1pOm4odCxpKTtlbHNle3RyeXtvLnVuc2FmZT9lW3RdJiYoZz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWc/ZVt0XT1pOnIuZihlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSw2Mjc5OihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciByIGluIHQpYShlLHIsdFtyXSxpKTtyZXR1cm4gZX19LDk0MzM6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e3IoYSxlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGkpe2FbZV09dH1yZXR1cm4gdH19LDM3MjQ6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSw0NDgzOihlLHQsaSk9Pnt2YXIgYSxyLHMsbixvPWkoNDU3NiksZz1pKDk0MjkpLGM9aSgxNTQ4KSxsPW8uc3RydWN0dXJlZENsb25lLGg9by5BcnJheUJ1ZmZlcixDPW8uTWVzc2FnZUNoYW5uZWwsUT0hMTtpZihjKVE9ZnVuY3Rpb24oZSl7bChlLHt0cmFuc2ZlcjpbZV19KX07ZWxzZSBpZihoKXRyeXtDfHwoYT1nKCJ3b3JrZXJfdGhyZWFkcyIpKSYmKEM9YS5NZXNzYWdlQ2hhbm5lbCk7aWYoQyl7cj1uZXcgQztzPW5ldyBoKDIpO249ZnVuY3Rpb24oZSl7ci5wb3J0MS5wb3N0TWVzc2FnZShudWxsLFtlXSl9O2lmKDI9PT1zLmJ5dGVMZW5ndGgpe24ocyk7MD09PXMuYnl0ZUxlbmd0aCYmKFE9bil9fX1jYXRjaChlKXt9ZS5leHBvcnRzPVF9LDQwNTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDM0KSxzPWEuZG9jdW1lbnQsbj1yKHMpJiZyKHMuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuP3MuY3JlYXRlRWxlbWVudChlKTp7fX19LDY4Mzc6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IHQoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBlfX0sNTAwMjplPT57ZS5leHBvcnRzPXtJbmRleFNpemVFcnJvcjp7czoiSU5ERVhfU0laRV9FUlIiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czoiRE9NU1RSSU5HX1NJWkVfRVJSIixjOjIsbTowfSxIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6e3M6IkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsYzozLG06MX0sV3JvbmdEb2N1bWVudEVycm9yOntzOiJXUk9OR19ET0NVTUVOVF9FUlIiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czoiSU5WQUxJRF9DSEFSQUNURVJfRVJSIixjOjUsbToxfSxOb0RhdGFBbGxvd2VkRXJyb3I6e3M6Ik5PX0RBVEFfQUxMT1dFRF9FUlIiLGM6NixtOjB9LE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOntzOiJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6Ik5PVF9GT1VORF9FUlIiLGM6OCxtOjF9LE5vdFN1cHBvcnRlZEVycm9yOntzOiJOT1RfU1VQUE9SVEVEX0VSUiIsYzo5LG06MX0sSW5Vc2VBdHRyaWJ1dGVFcnJvcjp7czoiSU5VU0VfQVRUUklCVVRFX0VSUiIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOiJJTlZBTElEX1NUQVRFX0VSUiIsYzoxMSxtOjF9LFN5bnRheEVycm9yOntzOiJTWU5UQVhfRVJSIixjOjEyLG06MX0sSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOntzOiJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czoiTkFNRVNQQUNFX0VSUiIsYzoxNCxtOjF9LEludmFsaWRBY2Nlc3NFcnJvcjp7czoiSU5WQUxJRF9BQ0NFU1NfRVJSIixjOjE1LG06MX0sVmFsaWRhdGlvbkVycm9yOntzOiJWQUxJREFUSU9OX0VSUiIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOiJUWVBFX01JU01BVENIX0VSUiIsYzoxNyxtOjF9LFNlY3VyaXR5RXJyb3I6e3M6IlNFQ1VSSVRZX0VSUiIsYzoxOCxtOjF9LE5ldHdvcmtFcnJvcjp7czoiTkVUV09SS19FUlIiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOiJBQk9SVF9FUlIiLGM6MjAsbToxfSxVUkxNaXNtYXRjaEVycm9yOntzOiJVUkxfTUlTTUFUQ0hfRVJSIixjOjIxLG06MX0sUXVvdGFFeGNlZWRlZEVycm9yOntzOiJRVU9UQV9FWENFRURFRF9FUlIiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6IlRJTUVPVVRfRVJSIixjOjIzLG06MX0sSW52YWxpZE5vZGVUeXBlRXJyb3I6e3M6IklOVkFMSURfTk9ERV9UWVBFX0VSUiIsYzoyNCxtOjF9LERhdGFDbG9uZUVycm9yOntzOiJEQVRBX0NMT05FX0VSUiIsYzoyNSxtOjF9fX0sODcyNzplPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDYxOTM6KGUsdCxpKT0+e3ZhciBhPWkoNDIxNSk7ZS5leHBvcnRzPSJOT0RFIj09PWF9LDI4Mzk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3NikubmF2aWdhdG9yLHI9YSYmYS51c2VyQWdlbnQ7ZS5leHBvcnRzPXI/U3RyaW5nKHIpOiIifSw5NTE5OihlLHQsaSk9Pnt2YXIgYSxyLHM9aSg0NTc2KSxuPWkoMjgzOSksbz1zLnByb2Nlc3MsZz1zLkRlbm8sYz1vJiZvLnZlcnNpb25zfHxnJiZnLnZlcnNpb24sbD1jJiZjLnY4O2wmJihyPShhPWwuc3BsaXQoIi4iKSlbMF0+MCYmYVswXTw0PzE6KyhhWzBdK2FbMV0pKTshciYmbiYmKCEoYT1uLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8YVsxXT49NzQpJiYoYT1uLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0rYVsxXSk7ZS5leHBvcnRzPXJ9LDQyMTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDI4MzkpLHM9aSgyMTk1KSx1c2VyQWdlbnRTdGFydHNXaXRoPWZ1bmN0aW9uKGUpe3JldHVybiByLnNsaWNlKDAsZS5sZW5ndGgpPT09ZX07ZS5leHBvcnRzPXVzZXJBZ2VudFN0YXJ0c1dpdGgoIkJ1bi8iKT8iQlVOIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJDbG91ZGZsYXJlLVdvcmtlcnMiKT8iQ0xPVURGTEFSRSI6dXNlckFnZW50U3RhcnRzV2l0aCgiRGVuby8iKT8iREVOTyI6dXNlckFnZW50U3RhcnRzV2l0aCgiTm9kZS5qcy8iKT8iTk9ERSI6YS5CdW4mJiJzdHJpbmciPT10eXBlb2YgQnVuLnZlcnNpb24/IkJVTiI6YS5EZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbj8iREVOTyI6InByb2Nlc3MiPT09cyhhLnByb2Nlc3MpPyJOT0RFIjphLndpbmRvdyYmYS5kb2N1bWVudD8iQlJPV1NFUiI6IlJFU1QifSw4NTc0OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9RXJyb3Iscz1hKCIiLnJlcGxhY2UpLG49U3RyaW5nKG5ldyByKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGc9by50ZXN0KG4pO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGcmJiJzdHJpbmciPT10eXBlb2YgZSYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9cyhlLG8sIiIpO3JldHVybiBlfX0sNjUxODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNzM0NykuZixzPWkoNjY5OSksbj1pKDY4NDApLG89aSg5NDMzKSxnPWkoNzc0MCksYz1pKDI3OTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpLGwsaCxDLFEsRT1lLnRhcmdldCx1PWUuZ2xvYmFsLGQ9ZS5zdGF0O2lmKGk9dT9hOmQ/YVtFXXx8byhFLHt9KTphW0VdJiZhW0VdLnByb3RvdHlwZSlmb3IobCBpbiB0KXtDPXRbbF07aD1lLmRvbnRDYWxsR2V0U2V0PyhRPXIoaSxsKSkmJlEudmFsdWU6aVtsXTtpZighYyh1P2w6RSsoZD8iLiI6IiMiKStsLGUuZm9yY2VkKSYmdm9pZCAwIT09aCl7aWYodHlwZW9mIEM9PXR5cGVvZiBoKWNvbnRpbnVlO2coQyxoKX0oZS5zaGFtfHxoJiZoLnNoYW0pJiZzKEMsInNoYW0iLCEwKTtuKGksbCxDLGUpfX19LDkwMzk6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODc0NTooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5hcHBseSxuPXIuY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoYT9uLmJpbmQocyk6ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShzLGFyZ3VtZW50cyl9KX0sNjA4MDooZSx0LGkpPT57dmFyIGE9aSg3NDc2KSxyPWkoOTMwNikscz1pKDYxNiksbj1hKGEuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cihlKTtyZXR1cm4gdm9pZCAwPT09dD9lOnM/bihlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LDYxNjooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDk1NjU6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1hP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19LDM1MDooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTI5Nykscz1GdW5jdGlvbi5wcm90b3R5cGUsbj1hJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89cihzLCJuYW1lIiksZz1vJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uIHNvbWV0aGluZygpe30ubmFtZSxjPW8mJighYXx8YSYmbihzLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpnLENPTkZJR1VSQUJMRTpjfX0sNjcwNjooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTMwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt0cnl7cmV0dXJuIGEocihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbaV0pKX1jYXRjaChlKXt9fX0sNzQ3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KSxyPWkoOTUwNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJGdW5jdGlvbiI9PT1hKGUpKXJldHVybiByKGUpfX0sOTUwNDooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5jYWxsLG49YSYmci5iaW5kLmJpbmQocyxzKTtlLmV4cG9ydHM9YT9uOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGUsYXJndW1lbnRzKX19fSw5NDI5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg2MTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocil7dHJ5e3JldHVybiBhLnByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZShlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoIicrZSsnIiknKSgpfWNhdGNoKGUpe319fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixsPVR5cGVFcnJvcixoPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWgodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBsKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NTc2OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDIxOTUpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ1NzYpLGc9aSgzNCksYz1pKDY2OTkpLGw9aSg5Mjk3KSxoPWkoNzYyOSksQz1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGguc3RhdGUpe3ZhciBmPWguc3RhdGV8fChoLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPUMoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYobChlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxsPWkoODEpLGg9aSg4NTEpLEM9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJkModSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWgoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1sKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe0ModSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLGw9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxoPWkoMjUyOSksQz1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihsKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBoKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpoKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7QyhpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gQyhyLCJ0aHJvdyIsZSl9ciYmQyhyLCJub3JtYWwiKTtyZXR1cm4gaCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLGw9aSgyNzg3KSxoPWkoNjg0MCksQz1pKDgyMjcpLFE9aSg2Mzk1KSxFPUMoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPWwobChzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxoKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksbD1pKDExODEpLGg9bC5lbmZvcmNlLEM9bC5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9aChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZDKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxsPWkoNjExOSksaD0icHJvdG90eXBlIixDPSJzY3JpcHQiLFE9bCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK0MrIj4iK2UrIjwvIitDKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK0MrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtoXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2hdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2hdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLGw9MDtjPmw7KXMuZihlLGk9cltsKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLEM9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPWwoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOkMgaW4gaT9pW0NdOmFbQ10sZW51bWVyYWJsZTpoIGluIGk/aVtoXTphW2hdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxsPWkoNTkxNyksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2g6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihsKXRyeXtyZXR1cm4gaChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsbD1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP2w6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxsPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKGwsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4obCxpKXx8ZyhsLGkpKTtyZXR1cm4gbH19LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSwxMTAzOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxsPXIuaGFzLGg9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7bCh0LGUpJiZoKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxsPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtoKHQsZSkmJmwocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmwocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgbD1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKGwsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhsLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLGw9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpsfSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsbD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9sKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ1NzYpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zOS4wIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoOTAzOSkscz1pKDk1MTkpLG49aSg0MjE1KSxvPWEuc3RydWN0dXJlZENsb25lO2UuZXhwb3J0cz0hIW8mJiFyKChmdW5jdGlvbigpe2lmKCJERU5PIj09PW4mJnM+OTJ8fCJOT0RFIj09PW4mJnM+OTR8fCJCUk9XU0VSIj09PW4mJnM+OTcpcmV0dXJuITE7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDgpLHQ9byhlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9PWUuYnl0ZUxlbmd0aHx8OCE9PXQuYnl0ZUxlbmd0aH0pKX0sNDQ5NTooZSx0LGkpPT57dmFyIGE9aSg5NTE5KSxyPWkoOTAzOSkscz1pKDQ1NzYpLlN0cmluZztlLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcigoZnVuY3Rpb24oKXt2YXIgZT1TeW1ib2woInN5bWJvbCBkZXRlY3Rpb24iKTtyZXR1cm4hcyhlKXx8IShPYmplY3QoZSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmYSYmYTw0MX0pKX0sNTYxMDooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPU1hdGgubWF4LHM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9YShlKTtyZXR1cm4gaTwwP3IoaSt0LDApOnMoaSx0KX19LDU4NTQ6KGUsdCxpKT0+e3ZhciBhPWkoMjc3Nykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyByKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNzY5NjooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPWkoODAxNCkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PWEoZSksaT1yKHQpO2lmKHQhPT1pKXRocm93IG5ldyBzKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gaX19LDUzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzA1NSkscj1pKDc3NTApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShyKGUpKX19LDEyOTE6KGUsdCxpKT0+e3ZhciBhPWkoNzQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6YSh0KX19LDgwMTQ6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD4wP3IodCw5MDA3MTk5MjU0NzQwOTkxKTowfX0sODk4MTooZSx0LGkpPT57dmFyIGE9aSg3NzUwKSxyPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoYShlKSl9fSwyNzc3OihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgzNCkscz1pKDc1Nyksbj1pKDU5NjYpLG89aSg0MjcwKSxnPWkoODIyNyksYz1UeXBlRXJyb3IsbD1nKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFyKGUpfHxzKGUpKXJldHVybiBlO3ZhciBpLGc9bihlLGwpO2lmKGcpe3ZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iik7aT1hKGcsZSx0KTtpZighcihpKXx8cyhpKSlyZXR1cm4gaTt0aHJvdyBuZXcgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9dm9pZCAwPT09dCYmKHQ9Im51bWJlciIpO3JldHVybiBvKGUsdCl9fSw2OTY5OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9aSg3NTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsInN0cmluZyIpO3JldHVybiByKHQpP3Q6dCsiIn19LDIxNDA6KGUsdCxpKT0+e3ZhciBhPXt9O2FbaSg4MjI3KSgidG9TdHJpbmdUYWciKV09InoiO2UuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcoYSl9LDY1NTooZSx0LGkpPT57dmFyIGE9aSg2OTU1KSxyPVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIlN5bWJvbCI9PT1hKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIHIoZSl9fSw2ODIzOmU9Pnt2YXIgdD1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSwzMzkyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9MCxzPU1hdGgucmFuZG9tKCksbj1hKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrbigrK3IrcywzNil9fSw3MDQwOihlLHQsaSk9Pnt2YXIgYT1pKDQ0OTUpO2UuZXhwb3J0cz1hJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSw4Njg2OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5MDM5KTtlLmV4cG9ydHM9YSYmcigoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwyODEyOmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aWYoZTxpKXRocm93IG5ldyB0KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiBlfX0sODYyMjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSkscz1hLldlYWtNYXA7ZS5leHBvcnRzPXIocykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpfSw4MjI3OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg1NzQ1KSxzPWkoOTI5Nyksbj1pKDMzOTIpLG89aSg0NDk1KSxnPWkoNzA0MCksYz1hLlN5bWJvbCxsPXIoIndrcyIpLGg9Zz9jLmZvcnx8YzpjJiZjLndpdGhvdXRTZXR0ZXJ8fG47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3MobCxlKXx8KGxbZV09byYmcyhjLGUpP2NbZV06aCgiU3ltYm9sLiIrZSkpO3JldHVybiBsW2VdfX0sNjU3MzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoMjEwNikscz1pKDMyMzgpLG49QXJyYXlCdWZmZXIucHJvdG90eXBlO2EmJiEoImRldGFjaGVkImluIG4pJiZyKG4sImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBzKHRoaXMpfX0pfSw3OTM2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg1NjM2KTtyJiZhKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMH0se3RyYW5zZmVyVG9GaXhlZExlbmd0aDpmdW5jdGlvbiB0cmFuc2ZlclRvRml4ZWRMZW5ndGgoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMSl9fSl9LDgxMDA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24gdHJhbnNmZXIoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LDQxMTQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg5ODEpLHM9aSg2MTk4KSxuPWkoNDUyNyksbz1pKDY4MzcpO2Eoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOmkoOTAzOSkoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5wdXNoKCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7cHVzaDpmdW5jdGlvbiBwdXNoKGUpe3ZhciB0PXIodGhpcyksaT1zKHQpLGE9YXJndW1lbnRzLmxlbmd0aDtvKGkrYSk7Zm9yKHZhciBnPTA7ZzxhO2crKyl7dFtpXT1hcmd1bWVudHNbZ107aSsrfW4odCxpKTtyZXR1cm4gaX19KX0sODExMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDY3OSksbj1pKDg1NTEpLG89aSg0OTAxKSxnPWkoMjc4NyksYz1pKDIxMDYpLGw9aSg0NjU5KSxoPWkoOTAzOSksQz1pKDkyOTcpLFE9aSg4MjI3KSxFPWkoNzY1NykuSXRlcmF0b3JQcm90b3R5cGUsdT1pKDM3MjQpLGQ9aSg2Mzk1KSxmPSJjb25zdHJ1Y3RvciIscD0iSXRlcmF0b3IiLG09USgidG9TdHJpbmdUYWciKSx5PVR5cGVFcnJvcix3PXJbcF0sYj1kfHwhbyh3KXx8dy5wcm90b3R5cGUhPT1FfHwhaCgoZnVuY3Rpb24oKXt3KHt9KX0pKSxEPWZ1bmN0aW9uIEl0ZXJhdG9yKCl7cyh0aGlzLEUpO2lmKGcodGhpcyk9PT1FKXRocm93IG5ldyB5KCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yPWZ1bmN0aW9uKGUsdCl7dT9jKEUsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7bih0aGlzKTtpZih0aGlzPT09RSl0aHJvdyBuZXcgeSgiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTtDKHRoaXMsZSk/dGhpc1tlXT10OmwodGhpcyxlLHQpfX0pOkVbZV09dH07QyhFLG0pfHxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yKG0scCk7IWImJkMoRSxmKSYmRVtmXSE9PU9iamVjdHx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihmLEQpO0QucHJvdG90eXBlPUU7YSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpifSx7SXRlcmF0b3I6RH0pfSwxMTQ4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZXZlcnk6ZnVuY3Rpb24gZXZlcnkoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiFyKHQsKGZ1bmN0aW9uKHQsYSl7aWYoIWUodCxpKyspKXJldHVybiBhKCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMjQ4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoOTU2NSkscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1pKDk0NjIpLGM9aSg2MzE5KSxsPWkoNjM5NSksaD1nKChmdW5jdGlvbigpe2Zvcih2YXIgZSx0LGk9dGhpcy5pdGVyYXRvcixhPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0Ozspe2U9bihyKHMsaSkpO2lmKHRoaXMuZG9uZT0hIWUuZG9uZSlyZXR1cm47dD1lLnZhbHVlO2lmKGMoaSxhLFt0LHRoaXMuY291bnRlcisrXSwhMCkpcmV0dXJuIHR9fSkpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtmaWx0ZXI6ZnVuY3Rpb24gZmlsdGVyKGUpe24odGhpcyk7cyhlKTtyZXR1cm4gbmV3IGgobyh0aGlzKSx7cHJlZGljYXRlOmV9KX19KX0sMTE2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZmluZDpmdW5jdGlvbiBmaW5kKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4gcih0LChmdW5jdGlvbih0LGEpe2lmKGUodCxpKyspKXJldHVybiBhKHQpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KX0sNzU4ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2ZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cih0LChmdW5jdGlvbih0KXtlKHQsaSsrKX0pLHtJU19SRUNPUkQ6ITB9KX19KX0sMTcwMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNzEzKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDppKDYzOTUpfSx7bWFwOnJ9KX0sODIzNzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1UeXBlRXJyb3I7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT1hcmd1bWVudHMubGVuZ3RoPDIsYT1pP3ZvaWQgMDphcmd1bWVudHNbMV0sYz0wO3IodCwoZnVuY3Rpb24odCl7aWYoaSl7aT0hMTthPXR9ZWxzZSBhPWUoYSx0LGMpO2MrK30pLHtJU19SRUNPUkQ6ITB9KTtpZihpKXRocm93IG5ldyBnKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIik7cmV0dXJuIGF9fSl9LDM1Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtzb21lOmZ1bmN0aW9uIHNvbWUoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEoKX0pLHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSwxODA2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTUxKSxzPWkoMjY1Miksbj1pKDE3NjcpLG89W10ucHVzaDthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7dG9BcnJheTpmdW5jdGlvbiB0b0FycmF5KCl7dmFyIGU9W107cyhuKHIodGhpcykpLG8se3RoYXQ6ZSxJU19SRUNPUkQ6ITB9KTtyZXR1cm4gZX19KX0sMTY4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDg3NDUpLG49aSg3NjgwKSxvPWkoNjA0MyksZz1pKDkzMDYpLGM9aSgxMTAzKSxsPXIuUHJvbWlzZSxoPSExO2Eoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6IWx8fCFsLnRyeXx8YygoZnVuY3Rpb24oKXtsLnRyeSgoZnVuY3Rpb24oZSl7aD04PT09ZX0pLDgpfSkpLmVycm9yfHwhaH0se3RyeTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjE/bihhcmd1bWVudHMsMSk6W10saT1vLmYodGhpcyksYT1jKChmdW5jdGlvbigpe3JldHVybiBzKGcoZSksdm9pZCAwLHQpfSkpOyhhLmVycm9yP2kucmVqZWN0OmkucmVzb2x2ZSkoYS52YWx1ZSk7cmV0dXJuIGkucHJvbWlzZX19KX0sNDYyODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNjA0Myk7YSh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCl7dmFyIGU9ci5mKHRoaXMpO3JldHVybntwcm9taXNlOmUucHJvbWlzZSxyZXNvbHZlOmUucmVzb2x2ZSxyZWplY3Q6ZS5yZWplY3R9fX0pfSw5NDc5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSgzNzI0KSxzPWkoMjEwNiksbj1pKDc5NzkpLG89aSg5MDM5KSxnPWEuUmVnRXhwLGM9Zy5wcm90b3R5cGU7ciYmbygoZnVuY3Rpb24oKXt2YXIgZT0hMDt0cnl7ZygiLiIsImQiKX1jYXRjaCh0KXtlPSExfXZhciB0PXt9LGk9IiIsYT1lPyJkZ2ltc3kiOiJnaW1zeSIsYWRkR2V0dGVyPWZ1bmN0aW9uKGUsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OmZ1bmN0aW9uKCl7aSs9YTtyZXR1cm4hMH19KX0scj17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07ZSYmKHIuaGFzSW5kaWNlcz0iZCIpO2Zvcih2YXIgcyBpbiByKWFkZEdldHRlcihzLHJbc10pO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsImZsYWdzIikuZ2V0LmNhbGwodCkhPT1hfHxpIT09YX0pKSYmcyhjLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6bn0pfSw3NjQyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNDQwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImRpZmZlcmVuY2UiKX0se2RpZmZlcmVuY2U6cn0pfSw4MDA0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg5MDM5KSxzPWkoODc1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpbnRlcnNlY3Rpb24iKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9PVN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSkpfSkpfSx7aW50ZXJzZWN0aW9uOnN9KX0sMzg1MzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDQ0OSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpc0Rpc2pvaW50RnJvbSIpfSx7aXNEaXNqb2ludEZyb206cn0pfSw1ODc2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzODM4KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3Vic2V0T2YiKX0se2lzU3Vic2V0T2Y6cn0pfSwyNDc1OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTI3KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3VwZXJzZXRPZiIpfSx7aXNTdXBlcnNldE9mOnJ9KX0sNTAyNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMzY1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJzeW1tZXRyaWNEaWZmZXJlbmNlIil9LHtzeW1tZXRyaWNEaWZmZXJlbmNlOnJ9KX0sMTY5ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDIwNCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJ1bmlvbiIpfSx7dW5pb246cn0pfSw3NDY3OihlLHQsaSk9Pnt2YXIgYT1pKDc2MjgpLHI9aSg0NjQ0KSxzPXIuYVR5cGVkQXJyYXksbj1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qsbz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtuKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24gdG9SZXZlcnNlZCgpe3JldHVybiBhKHModGhpcyksbyh0aGlzKSl9KSl9LDQ3MzI6KGUsdCxpKT0+e3ZhciBhPWkoNDY0NCkscj1pKDk1MDQpLHM9aSg5MzA2KSxuPWkoNTM3MCksbz1hLmFUeXBlZEFycmF5LGc9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbD1yKGEuVHlwZWRBcnJheVByb3RvdHlwZS5zb3J0KTtjKCJ0b1NvcnRlZCIsKGZ1bmN0aW9uIHRvU29ydGVkKGUpe3ZvaWQgMCE9PWUmJnMoZSk7dmFyIHQ9byh0aGlzKSxpPW4oZyh0KSx0KTtyZXR1cm4gbChpLGUpfSkpfSw5NTc3OihlLHQsaSk9Pnt2YXIgYT1pKDk5MjgpLHI9aSg0NjQ0KSxzPWkoMTEwOCksbj1pKDEyOTEpLG89aSg1ODU0KSxnPXIuYVR5cGVkQXJyYXksYz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixsPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxoPSEhZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCk7bCgid2l0aCIse3dpdGg6ZnVuY3Rpb24oZSx0KXt2YXIgaT1nKHRoaXMpLHI9bihlKSxsPXMoaSk/byh0KTordDtyZXR1cm4gYShpLGMoaSkscixsKX19LndpdGgsIWgpfSw4OTkyOihlLHQsaSk9PntpKDgxMTEpfSwzMjE1OihlLHQsaSk9PntpKDExNDgpfSw0NTIwOihlLHQsaSk9PntpKDI0ODkpfSwyNTc3OihlLHQsaSk9PntpKDExNil9LDM5NDk6KGUsdCxpKT0+e2koNzU4OCl9LDE0NTQ6KGUsdCxpKT0+e2koMTcwMSl9LDg4NzI6KGUsdCxpKT0+e2koODIzNyl9LDc1NTA6KGUsdCxpKT0+e2koMzU3OSl9LDE3OTU6KGUsdCxpKT0+e2koMTgwNil9LDUyNDc6KGUsdCxpKT0+e2koMTY4OSl9LDQ5Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSg3NzUxKSxuPWkoNjk4MCksbz1pKDQ5MTMpLmYsZz1pKDkyOTcpLGM9aSg2NzkpLGw9aSgzMTY3KSxoPWkoMjYwMyksQz1pKDUwMDIpLFE9aSg4NTc0KSxFPWkoMzcyNCksdT1pKDYzOTUpLGQ9IkRPTUV4Y2VwdGlvbiIsZj1zKCJFcnJvciIpLHA9cyhkKSxtPWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2ModGhpcyx5KTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9aChlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSksaT1oKGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLGE9bmV3IHAodCxpKSxyPW5ldyBmKHQpO3IubmFtZT1kO28oYSwic3RhY2siLG4oMSxRKHIuc3RhY2ssMSkpKTtsKGEsdGhpcyxtKTtyZXR1cm4gYX0seT1tLnByb3RvdHlwZT1wLnByb3RvdHlwZSx3PSJzdGFjayJpbiBuZXcgZihkKSxiPSJzdGFjayJpbiBuZXcgcCgxLDIpLEQ9cCYmRSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGQpLFM9ISghRHx8RC53cml0YWJsZSYmRC5jb25maWd1cmFibGUpLGs9dyYmIVMmJiFiO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6dXx8a30se0RPTUV4Y2VwdGlvbjprP206cH0pO3ZhciBSPXMoZCksTj1SLnByb3RvdHlwZTtpZihOLmNvbnN0cnVjdG9yIT09Uil7dXx8byhOLCJjb25zdHJ1Y3RvciIsbigxLFIpKTtmb3IodmFyIEcgaW4gQylpZihnKEMsRykpe3ZhciBNPUNbR10sVT1NLnM7ZyhSLFUpfHxvKFIsVSxuKDYsTS5jKSl9fX0sMzYxMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDIxMDYpLG49aSgzNzI0KSxvPVR5cGVFcnJvcixnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPXIuc2VsZiE9PXI7dHJ5e2lmKG4pe3ZhciBsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iociwic2VsZiIpOyFjJiZsJiZsLmdldCYmbC5lbnVtZXJhYmxlfHxzKHIsInNlbGYiLHtnZXQ6ZnVuY3Rpb24gc2VsZigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24gc2VsZihlKXtpZih0aGlzIT09cil0aHJvdyBuZXcgbygiSWxsZWdhbCBpbnZvY2F0aW9uIik7ZyhyLCJzZWxmIix7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfWVsc2UgYSh7Z2xvYmFsOiEwLHNpbXBsZTohMCxmb3JjZWQ6Y30se3NlbGY6cn0pfWNhdGNoKGUpe319LDQ2MDM6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmFwcGVuZCksbD1yKGcuZGVsZXRlKSxoPXIoZy5mb3JFYWNoKSxDPXIoW10ucHVzaCksUT1uZXcgbygiYT0xJmE9MiZiPTMiKTtRLmRlbGV0ZSgiYSIsMSk7US5kZWxldGUoImIiLHZvaWQgMCk7USsiIiE9ImE9MiImJmEoZywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIGwodGhpcyxlKTt2YXIgYT1bXTtoKHRoaXMsKGZ1bmN0aW9uKGUsdCl7QyhhLHtrZXk6dCx2YWx1ZTplfSl9KSk7bih0LDEpO2Zvcih2YXIgcixvPXMoZSksZz1zKGkpLFE9MCxFPTAsdT0hMSxkPWEubGVuZ3RoO1E8ZDspe3I9YVtRKytdO2lmKHV8fHIua2V5PT09byl7dT0hMDtsKHRoaXMsci5rZXkpfWVsc2UgRSsrfWZvcig7RTxkOykocj1hW0UrK10pLmtleT09PW8mJnIudmFsdWU9PT1nfHxjKHRoaXMsci5rZXksci52YWx1ZSl9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNzU2NjooZSx0LGkpPT57dmFyIGE9aSg2ODQwKSxyPWkoOTUwNCkscz1pKDY1NSksbj1pKDI4MTIpLG89VVJMU2VhcmNoUGFyYW1zLGc9by5wcm90b3R5cGUsYz1yKGcuZ2V0QWxsKSxsPXIoZy5oYXMpLGg9bmV3IG8oImE9MSIpOyFoLmhhcygiYSIsMikmJmguaGFzKCJhIix2b2lkIDApfHxhKGcsImhhcyIsKGZ1bmN0aW9uIGhhcyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGk9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09aSlyZXR1cm4gbCh0aGlzLGUpO3ZhciBhPWModGhpcyxlKTtuKHQsMSk7Zm9yKHZhciByPXMoaSksbz0wO288YS5sZW5ndGg7KWlmKGFbbysrXT09PXIpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sODcyMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTUwNCkscz1pKDIxMDYpLG49VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxvPXIobi5mb3JFYWNoKTthJiYhKCJzaXplImluIG4pJiZzKG4sInNpemUiLHtnZXQ6ZnVuY3Rpb24gc2l6ZSgpe3ZhciBlPTA7byh0aGlzLChmdW5jdGlvbigpe2UrK30pKTtyZXR1cm4gZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19LHQ9e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhpKXt2YXIgYT10W2ldO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuZXhwb3J0czt2YXIgcj10W2ldPXtleHBvcnRzOnt9fTtlW2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pO3JldHVybiByLmV4cG9ydHN9X193ZWJwYWNrX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBpIGluIHQpX193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsaSkmJiFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSxpKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7ZW51bWVyYWJsZTohMCxnZXQ6dFtpXX0pfTtfX3dlYnBhY2tfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpO3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gZ2xvYmFsVGhpcy5wZGZqc1dvcmtlciA9IHt9O19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLHtXb3JrZXJNZXNzYWdlSGFuZGxlcjooKT0+V29ya2VyTWVzc2FnZUhhbmRsZXJ9KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDQxMTQpLF9fd2VicGFja19yZXF1aXJlX18oNjU3MyksX193ZWJwYWNrX3JlcXVpcmVfXyg4MTAwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc5MzYpLF9fd2VicGFja19yZXF1aXJlX18oNDYyOCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NjQyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMDQpLF9fd2VicGFja19yZXF1aXJlX18oMzg1MyksX193ZWJwYWNrX3JlcXVpcmVfXyg1ODc2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NzUpLF9fd2VicGFja19yZXF1aXJlX18oNTAyNCksX193ZWJwYWNrX3JlcXVpcmVfXygxNjk4KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc0NjcpLF9fd2VicGFja19yZXF1aXJlX18oNDczMiksX193ZWJwYWNrX3JlcXVpcmVfXyg5NTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg5OTIpLF9fd2VicGFja19yZXF1aXJlX18oMTQ1NCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTUwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNTI0NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MDMpLF9fd2VicGFja19yZXF1aXJlX18oNzU2NiksX193ZWJwYWNrX3JlcXVpcmVfXyg4NzIxKTtjb25zdCBpPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSxhPVsxLDAsMCwxLDAsMF0scj1bLjAwMSwwLDAsLjAwMSwwLDBdLHM9MS4zNSxuPS4zNSxvPS4yNTkyNTkyNTkyNTkyNTkyNCxnPTEsYz0yLGw9NCxoPTgsQz0xNixRPTY0LEU9MTI4LHU9MjU2LGQ9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGY9MyxwPTksbT0xMyx5PTE1LHc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sYj0wLEQ9NCxTPTEsaz0yLFI9MyxOPTEsRz0yLE09MyxVPTQseD01LEw9NixIPTcsSj04LHY9OSxZPTEwLEs9MTEsVD0xMixxPTEzLE89MTQsVz0xNSxqPTE2LFg9MTcsVj0yMCxaPSJHcm91cCIsXz0iUiIsej0xLCQ9MixBQT00LGVBPTE2LHRBPTMyLGlBPTEyOCxhQT01MTIsckE9MSxzQT0yLG5BPTQwOTYsb0E9ODE5MixnQT0zMjc2OCxJQT02NTUzNixjQT0xMzEwNzIsbEE9MTA0ODU3NixoQT0yMDk3MTUyLENBPTgzODg2MDgsQkE9MTY3NzcyMTYsUUE9MSxFQT0yLHVBPTMsZEE9NCxmQT01LHBBPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxtQT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0seUE9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSx3QT0xLGJBPTUsREE9MSxGQT0yLFNBPTMsa0E9NCxSQT01LE5BPTYsR0E9NyxNQT04LFVBPTkseEE9MTAsTEE9MTEsSEE9MTIsSkE9MTMsdkE9MTQsWUE9MTUsS0E9MTYsVEE9MTcscUE9MTgsT0E9MTksUEE9MjAsV0E9MjEsakE9MjIsWEE9MjMsVkE9MjQsWkE9MjUsX0E9MjYsekE9MjcsJEE9MjgsQWU9MjksZWU9MzAsdGU9MzEsaWU9MzIsYWU9MzMscmU9MzQsc2U9MzUsbmU9MzYsb2U9MzcsZ2U9MzgsSWU9MzksY2U9NDAsbGU9NDEsaGU9NDIsQ2U9NDMsQmU9NDQsUWU9NDUsRWU9NDYsdWU9NDcsZGU9NDgsZmU9NDkscGU9NTAsbWU9NTEseWU9NTIsd2U9NTMsYmU9NTQsRGU9NTUsRmU9NTYsU2U9NTcsa2U9NTgsUmU9NTksTmU9NjAsR2U9NjEsTWU9NjIsVWU9NjMseGU9NjQsTGU9NjUsSGU9NjYsSmU9NjcsdmU9NjgsWWU9NjksS2U9NzAsVGU9NzEscWU9NzIsT2U9NzMsUGU9NzQsV2U9NzUsamU9NzYsWGU9NzcsVmU9ODAsWmU9ODEsX2U9ODMsemU9ODQsJGU9ODUsQXQ9ODYsZXQ9ODcsdHQ9ODgsaXQ9ODksYXQ9OTAscnQ9OTEsc3Q9OTIsbnQ9OTMsb3Q9MSxndD0yO2xldCBJdD13QTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBJdH1mdW5jdGlvbiBpbmZvKGUpe0l0Pj1iQSYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe0l0Pj13QSYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBjdD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfX1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXR9fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT04MTkyO2lmKHQ8aSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjx0O3IrPWkpe2NvbnN0IHM9TWF0aC5taW4ocitpLHQpLG49ZS5zdWJhcnJheShyLHMpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKWlbYV09MjU1JmUuY2hhckNvZGVBdChhKTtyZXR1cm4gaX1mdW5jdGlvbiBzdHJpbmczMihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGVjb2Rlcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8ucGxhdGZvcm0/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc0ZpcmVmb3g6InN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3I/LnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiRmlyZWZveCIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITEsaXNXaW5kb3dzOiExLGlzRmlyZWZveDohMX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX19Y29uc3QgbHQ9QXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSwoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxpKXtyZXR1cm5gIyR7bHRbZV19JHtsdFt0XX0ke2x0W2ldfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGk7aWYoZVswXSl7aWYoZVswXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzBdO3RbMl0qPWVbMF07aWYoZVszXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzNdO3RbM10qPWVbM119ZWxzZXtpPXRbMF07dFswXT10WzFdO3RbMV09aTtpPXRbMl07dFsyXT10WzNdO3RbM109aTtpZihlWzFdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMl07dFsyXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNV07dFsyXSs9ZVs0XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGk9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvaSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvaV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgaT10aGlzLmFwcGx5VHJhbnNmb3JtKGUsdCksYT10aGlzLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1pbihpWzFdLGFbMV0sclsxXSxzWzFdKSxNYXRoLm1heChpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1heChpWzFdLGFbMV0sclsxXSxzWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGk9ZVswXSp0WzBdK2VbMV0qdFsyXSxhPWVbMF0qdFsxXStlWzFdKnRbM10scj1lWzJdKnRbMF0rZVszXSp0WzJdLHM9ZVsyXSp0WzFdK2VbM10qdFszXSxuPShpK3MpLzIsbz1NYXRoLnNxcnQoKGkrcykqKjItNCooaSpzLXIqYSkpLzIsZz1uK298fDEsYz1uLW98fDE7cmV0dXJuW01hdGguc3FydChnKSxNYXRoLnNxcnQoYyldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksYT1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGk+YSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscz1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiByPnM/bnVsbDpbaSxyLGEsc119c3RhdGljI0EoZSx0LGksYSxyLHMsbixvLGcsYyl7aWYoZzw9MHx8Zz49MSlyZXR1cm47Y29uc3QgbD0xLWcsaD1nKmcsQz1oKmcsUT1sKihsKihsKmUrMypnKnQpKzMqaCppKStDKmEsRT1sKihsKihsKnIrMypnKnMpKzMqaCpuKStDKm87Y1swXT1NYXRoLm1pbihjWzBdLFEpO2NbMV09TWF0aC5taW4oY1sxXSxFKTtjWzJdPU1hdGgubWF4KGNbMl0sUSk7Y1szXT1NYXRoLm1heChjWzNdLEUpfXN0YXRpYyNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihNYXRoLmFicyhnKTwxZS0xMil7TWF0aC5hYnMoYyk+PTFlLTEyJiZ0aGlzLiNBKGUsdCxpLGEscixzLG4sbywtbC9jLGgpO3JldHVybn1jb25zdCBDPWMqKjItNCpsKmc7aWYoQzwwKXJldHVybjtjb25zdCBRPU1hdGguc3FydChDKSxFPTIqZzt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMrUSkvRSxoKTt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMtUSkvRSxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGksYSxyLHMsbixvLGcpe2lmKGcpe2dbMF09TWF0aC5taW4oZ1swXSxlLG4pO2dbMV09TWF0aC5taW4oZ1sxXSx0LG8pO2dbMl09TWF0aC5tYXgoZ1syXSxlLG4pO2dbM109TWF0aC5tYXgoZ1szXSx0LG8pfWVsc2UgZz1bTWF0aC5taW4oZSxuKSxNYXRoLm1pbih0LG8pLE1hdGgubWF4KGUsbiksTWF0aC5tYXgodCxvKV07dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooaS1yKS1lK24pLDYqKGUtMippK3IpLDMqKGktZSksZyk7dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooYS1zKS10K28pLDYqKHQtMiphK3MpLDMqKGEtdCksZyk7cmV0dXJuIGd9fWNvbnN0IGh0PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlKXtpZihlWzBdPj0iw68iKXtsZXQgdDtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe3Q9InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7dD0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBpPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLGE9c3RyaW5nVG9CeXRlcyhlKSxyPWkuZGVjb2RlKGEpO3JldHVybiByLmluY2x1ZGVzKCIbIik/ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpOnJ9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGkpO2lmKDI3PT09cil7Zm9yKDsrK2k8YSYmMjchPT1lLmNoYXJDb2RlQXQoaSk7KTtjb250aW51ZX1jb25zdCBzPWh0W3JdO3QucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQoaSkpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKWlmKGVbaV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX1sZXQgQ3Q9bnVsbCxCdD1udWxsO2Z1bmN0aW9uIHRvSGV4VXRpbChlKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUudG9IZXg/ZS50b0hleCgpOkFycmF5LmZyb20oZSwoZT0+bHRbZV0pKS5qb2luKCIiKX1fX3dlYnBhY2tfcmVxdWlyZV9fKDMyMTUpO2NvbnN0IFF0PVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksRXQ9U3ltYm9sKCJFT0YiKTtsZXQgdXQ9T2JqZWN0LmNyZWF0ZShudWxsKSxkdD1PYmplY3QuY3JlYXRlKG51bGwpLGZ0PU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBkdFtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiB1dFtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IHB0PWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gcHR9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9tYXA9bmV3IE1hcDt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXB0fWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWFzeW5jIGdldEFzeW5jKGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOmF9Z2V0QXJyYXkoZSx0LGkpe2xldCBhPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcC5nZXQoaSkpfWEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKGE9dGhpcy54cmVmLmZldGNoKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWdldEtleXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLmtleXMoKV19Z2V0UmF3VmFsdWVzKCl7cmV0dXJuWy4uLnRoaXMuX21hcC52YWx1ZXMoKV19c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5fbWFwKXtsZXQgZT1yLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Iuc2V0KHQsZSl9ZWxzZSBpZighKGkmJmEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2goYSl9Zm9yKGNvbnN0W3QsaV1vZiByKXtpZigxPT09aS5sZW5ndGh8fCEoaVswXWluc3RhbmNlb2YgRGljdCkpe2EuX21hcC5zZXQodCxpWzBdKTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBlLl9tYXApci5fbWFwLmhhcyh0KXx8ci5fbWFwLnNldCh0LGkpO3Iuc2l6ZT4wJiZhLl9tYXAuc2V0KHQscil9ci5jbGVhcigpO3JldHVybiBhLnNpemU+MD9hOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe2RlbGV0ZSB0aGlzLl9tYXBbZV19fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWZ0W2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gaSYmIjAiIT09aVsxXT9mdFtlXT1uZXcgUmVmKHBhcnNlSW50KGlbMV0pLGlbMl0/cGFyc2VJbnQoaVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgaT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBmdFtpXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiExfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKCl7cmV0dXJuIG51bGx9cGVla0J5dGUoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpOy0xIT09ZSYmdGhpcy5wb3MtLTtyZXR1cm4gZX1wZWVrQnl0ZXMoZSl7Y29uc3QgdD10aGlzLmdldEJ5dGVzKGUpO3RoaXMucG9zLT10Lmxlbmd0aDtyZXR1cm4gdH1nZXRVaW50MTYoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpLHQ9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/LTE6KGU8PDgpK3R9Z2V0SW50MzIoKXtyZXR1cm4odGhpcy5nZXRCeXRlKCk8PDI0KSsodGhpcy5nZXRCeXRlKCk8PDE2KSsodGhpcy5nZXRCeXRlKCk8PDgpK3RoaXMuZ2V0Qnl0ZSgpfWdldEJ5dGVSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVSYW5nZWAgY2FsbGVkIil9Z2V0U3RyaW5nKGUpe3JldHVybiBieXRlc1RvU3RyaW5nKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fWNvbnN0IG10PS9eWzEtOV1cLlxkJC8seXQ9MioqMzEtMTtmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscik7cis9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCByO2NvbnN0IHM9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhyfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHJ9Y29uc3Qgd3Q9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT0iTSIucmVwZWF0KGUvMWUzfDApK3d0W2UlMWUzLzEwMHwwXSt3dFsxMCsoZSUxMDAvMTB8MCldK3d0WzIwK2UlMTBdO3JldHVybiB0P2kudG9Mb3dlckNhc2UoKTppfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJigwPT09ZS5sZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgZVswXSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT97bmFtZTppWzFdLHBvczpwYXJzZUludChpWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPDMzfHxyPjEyNnx8MzU9PT1yfHw0MD09PXJ8fDQxPT09cnx8NjA9PT1yfHw2Mj09PXJ8fDkxPT09cnx8OTM9PT1yfHwxMjM9PT1yfHwxMjU9PT1yfHw0Nz09PXJ8fDM3PT09cil7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAjJHtyLnRvU3RyaW5nKDE2KX1gKTtpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGksYSl7aWYoIWUpcmV0dXJuO2xldCByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpcmV0dXJuO3I9ZTthLnB1dChyKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKV9jb2xsZWN0SlMocix0LGksYSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgYTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoYT10KTthJiY9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiZpLnB1c2goYSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsaSxhKX1yJiZhLnJlbW92ZShyKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihyKWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBzPXJbdF07aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpe2NvbnN0IHI9aVt0XTtpZighciljb250aW51ZTtjb25zdCBuPVtdO19jb2xsZWN0SlMocy5nZXRSYXcodCksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhW3JdPW4pfX1pZih0LmhhcygiQSIpKXtjb25zdCBpPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGksbmV3IFJlZlNldCk7aS5sZW5ndGg+MCYmKGEuQWN0aW9uPWkpfXJldHVybiBvYmplY3RTaXplKGEpPjA/YTpudWxsfWNvbnN0IGJ0PXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUuY29kZVBvaW50QXQodCk7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZ0Kys7eWllbGQgaX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9YnRbcl07aWYocyl7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKHMpO2k9YSsxfX1lbHNle2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJmErKztpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGk9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGkmJmlbMV09PT1pWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHtpWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7aVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChpKXx8IS9eW1x3LVxcXSskLy50ZXN0KGkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTppLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGksITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3Qgbj1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4obil8fG48LTkwfHxuPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtpLGFdb2YgZSl7aWYoIWkuc3RhcnRzV2l0aChkKSljb250aW51ZTtsZXQgZT10LmdldChhLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoYS5wYWdlSW5kZXgsZSl9ZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9KGUpP2U6c3RyaW5nVG9VVEYxNlN0cmluZyhlLCEwKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTt0LnB1c2gobHRbYT4+OCYyNTVdLGx0WzI1NSZhXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGk9W107dCYmaS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxpKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsaV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsaV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtpfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShpLGEpO2xldCByPWkrZTtyPmEmJihyPWEpO3RoaXMucG9zPXI7cmV0dXJuIHQuc3ViYXJyYXkoaSxyKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1pO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxpPXRoaXMubnVtQ2h1bmtzO3Q8aTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBpPXRoaXMuY2h1bmtTaXplO2lmKGUlaSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBhPWUrdC5ieXRlTGVuZ3RoO2lmKGElaSE9MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCByPU1hdGguZmxvb3IoZS9pKSxzPU1hdGguZmxvb3IoKGEtMSkvaSkrMTtmb3IobGV0IGU9cjtlPHM7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGk9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWk7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgaT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGk+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCByPWk7cjxhOysrcilpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgaT0wO2k8dDsrK2kpe2NvbnN0IGE9KGUraSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpe2E+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxhKTtyZXR1cm4gdC5zdWJhcnJheShpLGEpfWxldCByPWkrZTtyPmEmJihyPWEpO3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxyKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksaT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxpOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PWk7cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgaT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoaS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxyPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOnMsZG9uZTpufSk9Pnt0cnl7aWYobil7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDtlKHQpO3JldHVybn1yKz1zLmJ5dGVMZW5ndGg7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6cn0pO2EucHVzaChzKTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxpPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGkpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGkuYWRkKHQpO2lmKDA9PT1pLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcj1bXTtmb3IoY29uc3QgZSBvZiBpKXtsZXQgaT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFpKXtpPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxpKTtyLnB1c2goZSl9aS5wdXNoKHQpfWlmKHIubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhyKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxpPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxpKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgaT10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHI9W107Zm9yKGxldCBlPWk7ZTxhOysrZSlyLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGkuYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhpLmVuZCk7Zm9yKGxldCBpPWU7aTxhOysraSl0LmluY2x1ZGVzKGkpfHx0LnB1c2goaSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgaT0tMSxhPS0xO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzOysrcil7Y29uc3Qgcz1lW3JdO2k8MCYmKGk9cyk7aWYoYT49MCYmYSsxIT09cyl7dC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6YSsxfSk7aT1zfXIrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazpzKzF9KTthPXN9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssaT12b2lkIDA9PT1lLmJlZ2luLGE9aT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLHI9YSt0LmJ5dGVMZW5ndGgscz1NYXRoLmZsb29yKGEvdGhpcy5jaHVua1NpemUpLG49cjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChyL3RoaXMuY2h1bmtTaXplKTtpZihpKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9cn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYSx0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9cztlPG47KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoaSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goaSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhuKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fV9fd2VicGFja19yZXF1aXJlX18oNDUyMCksX193ZWJwYWNrX3JlcXVpcmVfXyg5NDc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODg3Mik7Y2xhc3MgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGksMCk7cmV0dXJuIGl9Z2V0UmdiSXRlbShlLHQsaSxhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsaSxhLHIscyxuLG8sZyl7Y29uc3QgYz10Kmk7bGV0IGw9bnVsbDtjb25zdCBoPTE8PG4sQz1pIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG4pKWw9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZjPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9bjw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxpLDAsbiwwKTtpZihDKXtsPW5ldyBVaW50OEFycmF5KDMqYyk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGM7Kyt0KXtjb25zdCBhPTMqb1t0XTtsW2UrK109aVthXTtsW2UrK109aVthKzFdO2xbZSsrXT1pW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGM7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109aVtyXTtlW3QrK109aVtyKzFdO2VbdCsrXT1pW3IrMl07dCs9Z319fWVsc2UgaWYoQyl7bD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypjKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYyxsLDAsbiwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLG4sZyk7aWYobClpZihDKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsaSxhLHIscyxuKXtuPTEhPT1uPzA6bjtjb25zdCBvPWkvcixnPWEvcztsZXQgYyxsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksQz0zKmk7Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9TWF0aC5mbG9vcihpKmcpKkM7Zm9yKGxldCBpPTA7aTxyO2krKyl7Yz1hK2hbaV07dFtsKytdPWVbYysrXTt0W2wrK109ZVtjKytdO3RbbCsrXT1lW2MrK107bCs9bn19fShsLGUsdCxpLGEscixnKTtlbHNle2xldCB0PTAsaT0wO2ZvcihsZXQgcj0wLG49YSpzO3I8bjtyKyspe2VbdCsrXT1sW2krK107ZVt0KytdPWxbaSsrXTtlW3QrK109bFtpKytdO3QrPWd9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxpLGEpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IHIscztpZihlIGluc3RhbmNlb2YgUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBOYW1lJiYocj1lLm5hbWUpOyhyfHxzKSYmaS5zZXQocixzLGEpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGkpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGE9aS5nZXRCeVJlZihlKTtpZihhKXJldHVybiBhO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWkuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixzKTtyZXR1cm4gc31zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQoZSx0LHIpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbj10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixuKTtyZXR1cm4gbn1zdGF0aWMgX3BhcnNlKGUsdCxpPW51bGwsYSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9aS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLl9wYXJzZShzLHQsaSxhKTtlPXM7YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbixvLGcsYyxsO3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2w9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLGwpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtsPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgaD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxsLGgpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IEM9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1DLmdldCgiTiIpO2NvbnN0IFE9Qy5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9TWF0aC5tYXgoMCxNYXRoLm1pbih0LmZldGNoSWZSZWYoZVsyXSksMjU1KSksdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7cn1gKTtyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpe3dhcm4oIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybiBzaGFkb3codGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX0sZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLGw9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLEM9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1DP3I6MDtjb25zdCBFPUM/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkobCppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShsKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxsO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9bH19Q3x8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTtjb25zdCBhPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9aS5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2l9YCk7Zm9yKGxldCBlPTA7ZTxhOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmaS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9dGhpcy5iYXNlLm51bUNvbXBzLHM9ZVt0XSpyO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAscywxLGksYSw4LDApfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMuYmFzZSxnPW8ubnVtQ29tcHMsYz1vLmdldE91dHB1dExlbmd0aChnLG4pLGw9dGhpcy5sb29rdXA7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3QgaT1lW3QrK10qZztvLmdldFJnYkJ1ZmZlcihsLGksMSxhLHIsOCxuKTtyKz1jfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyIT09ZS5sZW5ndGgpe3dhcm4oIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPTI1NSplW3RdO2lbYV09aVthKzFdPWlbYSsyXT1yfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2NvbnN0IHQ9byplW2crK107YVtjKytdPXQ7YVtjKytdPXQ7YVtjKytdPXQ7Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LGksYSl7aVthXT0yNTUqZVt0XTtpW2ErMV09MjU1KmVbdCsxXTtpW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7aWYoOD09PXMmJjA9PT1uKXthLnNldChlLnN1YmFycmF5KHQsdCszKmkpLHIpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107YVtjKytdPW8qZVtnKytdO2MrPW59fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfWZpbGxSZ2IoZSx0LGksYSxyLHMsbixvLGcpe2khPT1yfHx0IT09YT9mdW5jdGlvbiByZXNpemVSZ2JhSW1hZ2UoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz1pL3IsZz1hL3M7bGV0IGM9MDtjb25zdCBsPW5ldyBVaW50MTZBcnJheShyKTtpZigxPT09bil7Zm9yKGxldCBlPTA7ZTxyO2UrKylsW2VdPU1hdGguZmxvb3IoZSpvKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksbj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLGg9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCB0PWEuc3ViYXJyYXkoTWF0aC5mbG9vcihlKmcpKmkpO2ZvcihsZXQgZT0wO2U8cjtlKyspbltjKytdfD10W2xbZV1dJmh9fWVsc2V7Y29uc3QgYT00LG49aSphO2ZvcihsZXQgZT0wO2U8cjtlKyspbFtlXT1NYXRoLmZsb29yKGUqbykqYTtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBhPWUuc3ViYXJyYXkoTWF0aC5mbG9vcihpKmcpKm4pO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IGk9bFtlXTt0W2MrK109YVtpXTt0W2MrK109YVtpKzFdO3RbYysrXT1hW2krMl19fX19KG8sZSx0LGksYSxyLGcpOmZ1bmN0aW9uIGNvcHlSZ2JhSW1hZ2UoZSx0LGkpe2lmKDE9PT1pKXtjb25zdCBpPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksYT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLHI9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspYVtlXXw9aVtlXSZyfWVsc2V7bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz00KXt0W2krK109ZVthXTt0W2krK109ZVthKzFdO3RbaSsrXT1lW2ErMl19fX0obyxlLGcpfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNsKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jQyhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jbChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLGw9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKmwsQz10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqbCxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypsLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09QztFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNDKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jQyhwWzFdKTtpW2ErMl09MjU1KnRoaXMuI0MocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLGw9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxDPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihsKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypDKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqQysuMDMzMypRO2Q9LjA3MipoKy0uMjI5KkMrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqQystLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpDKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KkMrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDM5NDkpO2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGk9MDtmb3IobGV0IGE9MDthPD10O2ErKylpPWk8PDh8ZVthXTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj1pO3I+PTA7ci0tKXthKz1lW3JdK3Rbcl07ZVtyXT0yNTUmYTthPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGk9MTtmb3IobGV0IGE9dDthPj0wJiZpPjA7YS0tKXtpKz1lW2FdO2VbYV09MjU1Jmk7aT4+PTh9fWNvbnN0IER0PTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnBvcz0wO3RoaXMuZW5kPWUubGVuZ3RoO3RoaXMudG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KX1yZWFkQnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5idWZmZXJbdGhpcy5wb3MrK119cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBpPXRoaXMucmVhZEJ5dGUoKTtpZihpPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmaSk7dD10PDw3fDEyNyZpfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgaTtjb25zdCBhPXRoaXMudG1wQnVmO2xldCByPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtpPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghaSk7bGV0IHM9dCxuPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7bnw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmbjtzLS07bj4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGk9MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFeaX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGkpe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnIpO2xldCBzPW51bGw7Y29uc3Qgbj1uZXcgVWludDhBcnJheShEdCksbz1uZXcgVWludDhBcnJheShEdCksZz1uZXcgVWludDhBcnJheShEdCksYz1uZXcgVWludDhBcnJheShEdCksbD1uZXcgVWludDhBcnJheShEdCk7bGV0IGgsQztmb3IoOyhDPWEucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPUM+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZDKXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnM9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgaT0hISgxNiZDKSxyPTE1JkM7aWYocisxPkR0KXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IFE9MSxFPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgobixyKTthLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGcscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChnLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChnLHIpO2lmKCFpKXthLnJlYWRIZXhOdW1iZXIobCxyKTthZGRIZXgoZyxsLHIpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2lmKGkpbi5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpfWEucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGcsUSk7YS5yZWFkSGV4KGMscik7dC5tYXBPbmUoaGV4VG9JbnQoZyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxRKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKGwsUSk7YWRkSGV4KGcsbCxRKX1pbmNIZXgoYyxyKTthLnJlYWRIZXhTaWduZWQobCxyKTthZGRIZXgoYyxsLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChuLFEpO2EucmVhZEhleE51bWJlcihvLFEpO2FkZEhleChvLG4sUSk7YS5yZWFkSGV4KGMscik7dC5tYXBCZlJhbmdlKGhleFRvSW50KG4sUSksaGV4VG9JbnQobyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxRKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4sUSk7YWRkSGV4KG4sbyxRKX1hLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9pKHMpOnR9fWNvbnN0IEZ0PW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9RnQ7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGk9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtpPGU7KWkqPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGk9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoaStlKTthPWkrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoaSxhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0PW51bGwpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3QgaT1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UoaSx0KX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgaT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9aSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxpKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKTtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscjtpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHI9MDtyPDQ7KytyKWFbaStyXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3Iocj0xO3I8NTsrK3Ipe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7c1tyXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrci0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9ci0xO2lmKHI8NSl7Zm9yKDtyPDU7KytyKXNbcl09MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHI9MDtyPDU7KytyKW49ODUqbisoc1tyXS0zMyk7Zm9yKHI9MztyPj0wOy0tcil7YVtpK3JdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYocjwwKXI9ZTtlbHNle2lbYSsrXT1yPDw0fGU7cj0tMX19aWYocj49MCYmdGhpcy5lb2Ype2lbYSsrXT1yPDw0O3I9LTF9dGhpcy5maXJzdERpZ2l0PXI7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgU3Q9LTEsa3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sUnQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxOdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sR3Q9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTXQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sVXQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHIscyxuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcyxvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChzKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxyKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpzPW89MDtpZihyKXtkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecik7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBTdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPTA7aWYocilkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3JePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7cyE9PVN0JiYxIT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHM9PT1TdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cz10aGlzLl9sb29rQml0cygxMik7MSE9PXMmJmluZm8oImJhZCBydGMgY29kZTogIitzKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtzPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihzPT09U3Qpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHM+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZzKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtzPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnMpe288PD1zOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcyk7dGhpcy5vdXRwdXRCaXRzLT1zO3M9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3MtPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocz4wKXtvPDw9cztzPTB9fX13aGlsZShzKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcj1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09U3QpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFyfHxlPj1yKXtjb25zdCB0PWlbZS1yXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9a3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxrdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIFN0fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09U3QpcmV0dXJuIDE7ZT10Pj41P050W3Q+PjNdOlJ0W3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxOdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsUnQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PVN0KXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P010WyhlPj4xKS02NF06VXRbZT4+N106R3RbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LFV0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLE10LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxHdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP1N0OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgeHQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxMdD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxIdD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEp0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSx2dD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBpPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBpPy5zdWJhcnJheSgwLGUpfHx0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt0aGlzLnN0ci5yZXNldCgpO2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6dCx3cml0YWJsZTppfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLGE9aS5nZXRXcml0ZXIoKTthd2FpdCBhLnJlYWR5O2Eud3JpdGUoZSkudGhlbigoYXN5bmMoKT0+e2F3YWl0IGEucmVhZHk7YXdhaXQgYS5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCByPVtdO2xldCBzPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2YgdCl7ci5wdXNoKGUpO3MrPWUuYnl0ZUxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcil7bi5zZXQoZSxvKTtvKz1lLmJ5dGVMZW5ndGh9cmV0dXJuIG59Y2F0Y2h7dGhpcy5zdHI9bmV3IFN0cmVhbShlLDIsZS5sZW5ndGgsdGhpcy5zdHIuZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfX1nZXQgaXNBc3luYygpe3JldHVybiEwfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgaSxhPXRoaXMuY29kZVNpemUscj10aGlzLmNvZGVCdWY7Zm9yKDthPGU7KXtpZigtMT09PShpPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtyfD1pPDxhO2ErPTh9aT1yJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1yPj5lO3RoaXMuY29kZVNpemU9YS09ZTtyZXR1cm4gaX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsaT1lWzBdLGE9ZVsxXTtsZXQgcixzPXRoaXMuY29kZVNpemUsbj10aGlzLmNvZGVCdWY7Zm9yKDtzPGEmJi0xIT09KHI9dC5nZXRCeXRlKCkpOyl7bnw9cjw8cztzKz04fWNvbnN0IG89aVtuJigxPDxhKS0xXSxnPW8+PjE2LGM9NjU1MzUmbztpZihnPDF8fHM8Zyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9bj4+Zzt0aGlzLmNvZGVTaXplPXMtZztyZXR1cm4gY31nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpLGE9MDtmb3IoaT0wO2k8dDsrK2kpZVtpXT5hJiYoYT1lW2ldKTtjb25zdCByPTE8PGEscz1uZXcgSW50MzJBcnJheShyKTtmb3IobGV0IG49MSxvPTAsZz0yO248PWE7KytuLG88PD0xLGc8PD0xKWZvcihsZXQgYT0wO2E8dDsrK2EpaWYoZVthXT09PW4pe2xldCBlPTAsdD1vO2ZvcihpPTA7aTxuOysraSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoaT1lO2k8cjtpKz1nKXNbaV09bjw8MTZ8YTsrK299cmV0dXJuW3MsYV19I20oZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LGk7Y29uc3QgYT10aGlzLnN0cjt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jbShlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1pfD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1yfD10PDw4O2lmKHIhPT0oNjU1MzUmfmkpJiYoMCE9PWl8fDAhPT1yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLG49cytpO2U9dGhpcy5lbnN1cmVCdWZmZXIobik7dGhpcy5idWZmZXJMZW5ndGg9bjtpZigwPT09aSktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhpKTtlLnNldCh0LHMpO3QubGVuZ3RoPGkmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCByLHM7aWYoMT09PXQpe3I9SnQ7cz12dH1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxhPXRoaXMuZ2V0Qml0cyg0KSs0LG49bmV3IFVpbnQ4QXJyYXkoeHQubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288YTsrK28pblt4dFtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGc9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShuKTtpPTA7bz0wO2NvbnN0IGM9ZSt0LGw9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsQyxRO2Zvcig7bzxjOyl7Y29uc3QgZT10aGlzLmdldENvZGUoZyk7aWYoMTY9PT1lKXtoPTI7Qz0zO1E9aX1lbHNlIGlmKDE3PT09ZSl7aD0zO0M9MztRPWk9MH1lbHNle2lmKDE4IT09ZSl7bFtvKytdPWk9ZTtjb250aW51ZX1oPTc7Qz0xMTtRPWk9MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrQztmb3IoO3QtLSA+MDspbFtvKytdPVF9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoMCxlKSk7cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoZSxjKSl9fWU9dGhpcy5idWZmZXI7bGV0IG49ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocik7aWYodDwyNTYpe2lmKG8rMT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO249ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9THRbdF07bGV0IGE9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2k9KDY1NTM1JnQpK2E7dD10aGlzLmdldENvZGUocyk7dD1IdFt0XTthPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBnPSg2NTUzNSZ0KSthO2lmKG8raT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2kpO249ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxpOysrdCwrK28pZVtvXT1lW28tZ119fX1jb25zdCBZdD1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTtjbGFzcyBBcml0aG1ldGljRGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5icD10O3RoaXMuZGF0YUVuZD1pO3RoaXMuY2hpZ2g9ZVt0XTt0aGlzLmNsb3c9MDt0aGlzLmJ5dGVJbigpO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8NyY2NTUzNXx0aGlzLmNsb3c+PjkmMTI3O3RoaXMuY2xvdz10aGlzLmNsb3c8PDcmNjU1MzU7dGhpcy5jdC09Nzt0aGlzLmE9MzI3Njh9Ynl0ZUluKCl7Y29uc3QgZT10aGlzLmRhdGE7bGV0IHQ9dGhpcy5icDtpZigyNTU9PT1lW3RdKWlmKGVbdCsxXT4xNDMpe3RoaXMuY2xvdys9NjUyODA7dGhpcy5jdD04fWVsc2V7dCsrO3RoaXMuY2xvdys9ZVt0XTw8OTt0aGlzLmN0PTc7dGhpcy5icD10fWVsc2V7dCsrO3RoaXMuY2xvdys9dDx0aGlzLmRhdGFFbmQ/ZVt0XTw8ODo2NTI4MDt0aGlzLmN0PTg7dGhpcy5icD10fWlmKHRoaXMuY2xvdz42NTUzNSl7dGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNjt0aGlzLmNsb3cmPTY1NTM1fX1yZWFkQml0KGUsdCl7bGV0IGk9ZVt0XT4+MSxhPTEmZVt0XTtjb25zdCByPVl0W2ldLHM9ci5xZTtsZXQgbixvPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihvPHMpe289cztuPWE7aT1yLm5tcHN9ZWxzZXtvPXM7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDMyNzY4Jm8pe3RoaXMuYT1vO3JldHVybiBhfWlmKG88cyl7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXtuPWE7aT1yLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoISgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKHQpO2xldCByPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IHM9MDtzPGU7cysrKXtjb25zdCBlPWkucmVhZEJpdChhLHIpO3I9cjwyNTY/cjw8MXxlOjUxMSYocjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IHM9cmVhZEJpdHMoMSksbj1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7bGV0IG87MD09PXM/bz1uOm4+MCYmKG89LW4pO3JldHVybiBvPj0tMjE0NzQ4MzY0OCYmbzw9eXQ/bzpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGkpe2NvbnN0IGE9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCByPTE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cj1yPDwxfHQucmVhZEJpdChhLHIpfXJldHVybiBpPDMxP3ImKDE8PGkpLTE6MjE0NzQ4MzY0NyZyfWNvbnN0IEt0PVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0sVHQ9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHF0PVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sT3Q9WzM5NzE3LDE5NDEsMjI5LDQwNV0sUHQ9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsaSxhLHIscyxuLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxpLCExKX1pZigwPT09YSYmIXMmJiFyJiY0PT09bi5sZW5ndGgmJjM9PT1uWzBdLngmJi0xPT09blswXS55JiYtMz09PW5bMV0ueCYmLTE9PT1uWzFdLnkmJjI9PT1uWzJdLngmJi0yPT09blsyXS55JiYtMj09PW5bM10ueCYmLTI9PT1uWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsaSl7Y29uc3QgYT1pLmRlY29kZXIscj1pLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxzPVtdO2xldCBuLG8sZyxjLGwsaCxDO2ZvcihvPTA7bzx0O28rKyl7bD1zW29dPW5ldyBVaW50OEFycmF5KGUpO2g9bzwxP2w6c1tvLTFdO0M9bzwyP2w6c1tvLTJdO249Q1swXTw8MTN8Q1sxXTw8MTJ8Q1syXTw8MTF8aFswXTw8N3xoWzFdPDw2fGhbMl08PDV8aFszXTw8NDtmb3IoZz0wO2c8ZTtnKyspe2xbZ109Yz1hLnJlYWRCaXQocixuKTtuPSgzMTczNSZuKTw8MXwoZyszPGU/Q1tnKzNdPDwxMTowKXwoZys0PGU/aFtnKzRdPDw0OjApfGN9fXJldHVybiBzfSh0LGksbyk7Y29uc3QgZz0hIXMsYz1UdFthXS5jb25jYXQobik7Yy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnktdC55fHxlLngtdC54fSkpO2NvbnN0IGw9Yy5sZW5ndGgsaD1uZXcgSW50OEFycmF5KGwpLEM9bmV3IEludDhBcnJheShsKSxRPVtdO2xldCBFLHUsZD0wLGY9MCxwPTAsbT0wO2Zvcih1PTA7dTxsO3UrKyl7aFt1XT1jW3VdLng7Q1t1XT1jW3VdLnk7Zj1NYXRoLm1pbihmLGNbdV0ueCk7cD1NYXRoLm1heChwLGNbdV0ueCk7bT1NYXRoLm1pbihtLGNbdV0ueSk7dTxsLTEmJmNbdV0ueT09PWNbdSsxXS55JiZjW3VdLng9PT1jW3UrMV0ueC0xP2R8PTE8PGwtMS11OlEucHVzaCh1KX1jb25zdCB5PVEubGVuZ3RoLHc9bmV3IEludDhBcnJheSh5KSxiPW5ldyBJbnQ4QXJyYXkoeSksRD1uZXcgVWludDE2QXJyYXkoeSk7Zm9yKEU9MDtFPHk7RSsrKXt1PVFbRV07d1tFXT1jW3VdLng7YltFXT1jW3VdLnk7RFtFXT0xPDxsLTEtdX1jb25zdCBTPS1mLGs9LW0sUj10LXAsTj1PdFthXTtsZXQgRz1uZXcgVWludDhBcnJheSh0KTtjb25zdCBNPVtdLFU9by5kZWNvZGVyLHg9by5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIik7bGV0IEwsSCxKLHYsWSxLPTAsVD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspe2lmKHIpe0tePVUucmVhZEJpdCh4LE4pO2lmKEspe00ucHVzaChHKTtjb250aW51ZX19Rz1uZXcgVWludDhBcnJheShHKTtNLnB1c2goRyk7Zm9yKEw9MDtMPHQ7TCsrKXtpZihnJiZzW2VdW0xdKXtHW0xdPTA7Y29udGludWV9aWYoTD49UyYmTDxSJiZlPj1rKXtUPVQ8PDEmZDtmb3IodT0wO3U8eTt1Kyspe0g9ZStiW3VdO0o9TCt3W3VdO3Y9TVtIXVtKXTtpZih2KXt2PURbdV07VHw9dn19fWVsc2V7VD0wO1k9bC0xO2Zvcih1PTA7dTxsO3UrKyxZLS0pe0o9TCtoW3VdO2lmKEo+PTAmJko8dCl7SD1lK0NbdV07aWYoSD49MCl7dj1NW0hdW0pdO3YmJihUfD12PDxZKX19fX1jb25zdCBpPVUucmVhZEJpdCh4LFQpO0dbTF09aX19cmV0dXJuIE19ZnVuY3Rpb24gZGVjb2RlUmVmaW5lbWVudChlLHQsaSxhLHIscyxuLG8sZyl7bGV0IGM9cXRbaV0uY29kaW5nOzA9PT1pJiYoYz1jLmNvbmNhdChbb1swXV0pKTtjb25zdCBsPWMubGVuZ3RoLGg9bmV3IEludDMyQXJyYXkobCksQz1uZXcgSW50MzJBcnJheShsKTtsZXQgUTtmb3IoUT0wO1E8bDtRKyspe2hbUV09Y1tRXS54O0NbUV09Y1tRXS55fWxldCBFPXF0W2ldLnJlZmVyZW5jZTswPT09aSYmKEU9RS5jb25jYXQoW29bMV1dKSk7Y29uc3QgdT1FLmxlbmd0aCxkPW5ldyBJbnQzMkFycmF5KHUpLGY9bmV3IEludDMyQXJyYXkodSk7Zm9yKFE9MDtRPHU7USsrKXtkW1FdPUVbUV0ueDtmW1FdPUVbUV0ueX1jb25zdCBwPWFbMF0ubGVuZ3RoLG09YS5sZW5ndGgseT1QdFtpXSx3PVtdLGI9Zy5kZWNvZGVyLEQ9Zy5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdSIik7bGV0IFM9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtpZihuKXtTXj1iLnJlYWRCaXQoRCx5KTtpZihTKXRocm93IG5ldyBKYmlnMkVycm9yKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKX1jb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3cucHVzaCh0KTtmb3IobGV0IG49MDtuPGU7bisrKXtsZXQgbyxnLGM9MDtmb3IoUT0wO1E8bDtRKyspe289aStDW1FdO2c9bitoW1FdO288MHx8ZzwwfHxnPj1lP2M8PD0xOmM9Yzw8MXx3W29dW2ddfWZvcihRPTA7UTx1O1ErKyl7bz1pK2ZbUV0tcztnPW4rZFtRXS1yO288MHx8bz49bXx8ZzwwfHxnPj1wP2M8PD0xOmM9Yzw8MXxhW29dW2ddfWNvbnN0IEU9Yi5yZWFkQml0KEQsYyk7dFtuXT1FfX1yZXR1cm4gd31mdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoLEMsUSxFLHUsZCxmLHApe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBtPVtdO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXt3PW5ldyBVaW50OEFycmF5KGkpO2lmKHIpZm9yKGxldCBlPTA7ZTxpO2UrKyl3W2VdPXI7bS5wdXNoKHcpfWNvbnN0IGI9ZC5kZWNvZGVyLEQ9ZC5jb250ZXh0Q2FjaGU7bGV0IFM9ZT8tUS50YWJsZURlbHRhVC5kZWNvZGUocCk6LWRlY29kZUludGVnZXIoRCwiSUFEVCIsYiksaz0wO3k9MDtmb3IoO3k8czspe1MrPWU/US50YWJsZURlbHRhVC5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQURUIixiKTtrKz1lP1EudGFibGVGaXJzdFMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFGUyIsYik7bGV0IGE9aztmb3IoOzspe2xldCByPTA7bj4xJiYocj1lP3AucmVhZEJpdHMoZik6ZGVjb2RlSW50ZWdlcihELCJJQUlUIixiKSk7Y29uc3Qgcz1uKlMrcixrPWU/US5zeW1ib2xJRFRhYmxlLmRlY29kZShwKTpkZWNvZGVJQUlEKEQsYixnKSxSPXQmJihlP3AucmVhZEJpdCgpOmRlY29kZUludGVnZXIoRCwiSUFSSSIsYikpO2xldCBOPW9ba10sRz1OWzBdLmxlbmd0aCxNPU4ubGVuZ3RoO2lmKFIpe2NvbnN0IGU9ZGVjb2RlSW50ZWdlcihELCJJQVJEVyIsYiksdD1kZWNvZGVJbnRlZ2VyKEQsIklBUkRIIixiKTtHKz1lO00rPXQ7Tj1kZWNvZGVSZWZpbmVtZW50KEcsTSxFLE4sKGU+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFgiLGIpLCh0Pj4xKStkZWNvZGVJbnRlZ2VyKEQsIklBUkRZIixiKSwhMSx1LGQpfWxldCBVPTA7Yz8xJmg/VT1NLTE6YSs9TS0xOmg+MT9hKz1HLTE6VT1HLTE7Y29uc3QgeD1zLSgxJmg/MDpNLTEpLEw9YS0oMiZoP0ctMTowKTtsZXQgSCxKLHY7aWYoYylmb3IoSD0wO0g8TTtIKyspe3c9bVtMK0hdO2lmKCF3KWNvbnRpbnVlO3Y9TltIXTtjb25zdCBlPU1hdGgubWluKGkteCxHKTtzd2l0Y2goQyl7Y2FzZSAwOmZvcihKPTA7SjxlO0orKyl3W3grSl18PXZbSl07YnJlYWs7Y2FzZSAyOmZvcihKPTA7SjxlO0orKyl3W3grSl1ePXZbSl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtDfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWVsc2UgZm9yKEo9MDtKPE07SisrKXt3PW1beCtKXTtpZih3KXt2PU5bSl07c3dpdGNoKEMpe2Nhc2UgMDpmb3IoSD0wO0g8RztIKyspd1tMK0hdfD12W0hdO2JyZWFrO2Nhc2UgMjpmb3IoSD0wO0g8RztIKyspd1tMK0hdXj12W0hdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7Q30gaXMgbm90IHN1cHBvcnRlZGApfX19eSsrO2NvbnN0IFk9ZT9RLnRhYmxlRGVsdGFTLmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFMiLGIpO2lmKG51bGw9PT1ZKWJyZWFrO2ErPVUrWStsfX1yZXR1cm4gbX1mdW5jdGlvbiByZWFkU2VnbWVudEhlYWRlcihlLHQpe2NvbnN0IGk9e307aS5udW1iZXI9cmVhZFVpbnQzMihlLHQpO2NvbnN0IGE9ZVt0KzRdLHI9NjMmYTtpZighS3Rbcl0pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK3IpO2kudHlwZT1yO2kudHlwZU5hbWU9S3Rbcl07aS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmYSk7Y29uc3Qgcz0hISg2NCZhKSxuPWVbdCs1XTtsZXQgbz1uPj41Jjc7Y29uc3QgZz1bMzEmbl07bGV0IGM9dCs2O2lmKDc9PT1uKXtvPTUzNjg3MDkxMSZyZWFkVWludDMyKGUsYy0xKTtjKz0zO2xldCB0PW8rNz4+MztnWzBdPWVbYysrXTtmb3IoOy0tdD4wOylnLnB1c2goZVtjKytdKX1lbHNlIGlmKDU9PT1ufHw2PT09bil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2kucmV0YWluQml0cz1nO2xldCBsPTQ7aS5udW1iZXI8PTI1Nj9sPTE6aS5udW1iZXI8PTY1NTM2JiYobD0yKTtjb25zdCBoPVtdO2xldCBDLFE7Zm9yKEM9MDtDPG87QysrKXtsZXQgdDt0PTE9PT1sP2VbY106Mj09PWw/cmVhZFVpbnQxNihlLGMpOnJlYWRVaW50MzIoZSxjKTtoLnB1c2godCk7Yys9bH1pLnJlZmVycmVkVG89aDtpZihzKXtpLnBhZ2VBc3NvY2lhdGlvbj1yZWFkVWludDMyKGUsYyk7Yys9NH1lbHNlIGkucGFnZUFzc29jaWF0aW9uPWVbYysrXTtpLmxlbmd0aD1yZWFkVWludDMyKGUsYyk7Yys9NDtpZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpe2lmKDM4IT09cil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLGMpLGE9ISEoMSZlW2MrV3RdKSxyPTYscz1uZXcgVWludDhBcnJheShyKTtpZighYSl7c1swXT0yNTU7c1sxXT0xNzJ9c1syXT10LmhlaWdodD4+PjI0JjI1NTtzWzNdPXQuaGVpZ2h0Pj4xNiYyNTU7c1s0XT10LmhlaWdodD4+OCYyNTU7c1s1XT0yNTUmdC5oZWlnaHQ7Zm9yKEM9YyxRPWUubGVuZ3RoO0M8UTtDKyspe2xldCB0PTA7Zm9yKDt0PHImJnNbdF09PT1lW0MrdF07KXQrKztpZih0PT09cil7aS5sZW5ndGg9QytyO2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX19aS5oZWFkZXJFbmQ9YztyZXR1cm4gaX1mdW5jdGlvbiByZWFkU2VnbWVudHMoZSx0LGksYSl7Y29uc3Qgcj1bXTtsZXQgcz1pO2Zvcig7czxhOyl7Y29uc3QgaT1yZWFkU2VnbWVudEhlYWRlcih0LHMpO3M9aS5oZWFkZXJFbmQ7Y29uc3QgYT17aGVhZGVyOmksZGF0YTp0fTtpZighZS5yYW5kb21BY2Nlc3Mpe2Euc3RhcnQ9cztzKz1pLmxlbmd0aDthLmVuZD1zfXIucHVzaChhKTtpZig1MT09PWkudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3JbZV0uc3RhcnQ9cztzKz1yW2VdLmhlYWRlci5sZW5ndGg7cltlXS5lbmQ9c31yZXR1cm4gcn1mdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdCl7cmV0dXJue3dpZHRoOnJlYWRVaW50MzIoZSx0KSxoZWlnaHQ6cmVhZFVpbnQzMihlLHQrNCkseDpyZWFkVWludDMyKGUsdCs4KSx5OnJlYWRVaW50MzIoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19Y29uc3QgV3Q9MTc7ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoZSx0KXtjb25zdCBpPWUuaGVhZGVyLGE9ZS5kYXRhLHI9ZS5lbmQ7bGV0IHMsbixvLGcsYz1lLnN0YXJ0O3N3aXRjaChpLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9cmVhZFVpbnQxNihhLGMpO2UuaHVmZm1hbj0hISgxJnQpO2UucmVmaW5lbWVudD0hISgyJnQpO2UuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzO2UuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzO2UuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMTtlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxO2UuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpO2UuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KTtlLnRlbXBsYXRlPXQ+PjEwJjM7ZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMTtjKz0yO2lmKCFlLmh1ZmZtYW4pe2c9MD09PWUudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5hdD1ufWlmKGUucmVmaW5lbWVudCYmIWUucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWUucmVmaW5lbWVudEF0PW59ZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtlLm51bWJlck9mTmV3U3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtlLGkubnVtYmVyLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSA2OmNhc2UgNzpjb25zdCBsPXt9O2wuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9V3Q7Y29uc3QgaD1yZWFkVWludDE2KGEsYyk7Yys9MjtsLmh1ZmZtYW49ISEoMSZoKTtsLnJlZmluZW1lbnQ9ISEoMiZoKTtsLmxvZ1N0cmlwU2l6ZT1oPj4yJjM7bC5zdHJpcFNpemU9MTw8bC5sb2dTdHJpcFNpemU7bC5yZWZlcmVuY2VDb3JuZXI9aD4+NCYzO2wudHJhbnNwb3NlZD0hISg2NCZoKTtsLmNvbWJpbmF0aW9uT3BlcmF0b3I9aD4+NyYzO2wuZGVmYXVsdFBpeGVsVmFsdWU9aD4+OSYxO2wuZHNPZmZzZXQ9aDw8MTc+PjI3O2wucmVmaW5lbWVudFRlbXBsYXRlPWg+PjE1JjE7aWYobC5odWZmbWFuKXtjb25zdCBlPXJlYWRVaW50MTYoYSxjKTtjKz0yO2wuaHVmZm1hbkZTPTMmZTtsLmh1ZmZtYW5EUz1lPj4yJjM7bC5odWZmbWFuRFQ9ZT4+NCYzO2wuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7bC5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMztsLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKGwucmVmaW5lbWVudCYmIWwucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWwucmVmaW5lbWVudEF0PW59bC5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtsLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSAxNjpjb25zdCBDPXt9LFE9YVtjKytdO0MubW1yPSEhKDEmUSk7Qy50ZW1wbGF0ZT1RPj4xJjM7Qy5wYXR0ZXJuV2lkdGg9YVtjKytdO0MucGF0dGVybkhlaWdodD1hW2MrK107Qy5tYXhQYXR0ZXJuSW5kZXg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bQyxpLm51bWJlcixhLGMscl07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IEU9e307RS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz1XdDtjb25zdCB1PWFbYysrXTtFLm1tcj0hISgxJnUpO0UudGVtcGxhdGU9dT4+MSYzO0UuZW5hYmxlU2tpcD0hISg4JnUpO0UuY29tYmluYXRpb25PcGVyYXRvcj11Pj40Jjc7RS5kZWZhdWx0UGl4ZWxWYWx1ZT11Pj43JjE7RS5ncmlkV2lkdGg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkSGVpZ2h0PXJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFg9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRPZmZzZXRZPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkVmVjdG9yWD1yZWFkVWludDE2KGEsYyk7Yys9MjtFLmdyaWRWZWN0b3JZPXJlYWRVaW50MTYoYSxjKTtjKz0yO3M9W0UsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDM4OmNhc2UgMzk6Y29uc3QgZD17fTtkLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPVd0O2NvbnN0IGY9YVtjKytdO2QubW1yPSEhKDEmZik7ZC50ZW1wbGF0ZT1mPj4xJjM7ZC5wcmVkaWN0aW9uPSEhKDgmZik7aWYoIWQubW1yKXtnPTA9PT1kLnRlbXBsYXRlPzQ6MTtuPVtdO2ZvcihvPTA7bzxnO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWQuYXQ9bn1zPVtkLGEsYyxyXTticmVhaztjYXNlIDQ4OmNvbnN0IHA9e3dpZHRoOnJlYWRVaW50MzIoYSxjKSxoZWlnaHQ6cmVhZFVpbnQzMihhLGMrNCkscmVzb2x1dGlvblg6cmVhZFVpbnQzMihhLGMrOCkscmVzb2x1dGlvblk6cmVhZFVpbnQzMihhLGMrMTIpfTs0Mjk0OTY3Mjk1PT09cC5oZWlnaHQmJmRlbGV0ZSBwLmhlaWdodDtjb25zdCBtPWFbYysxNl07cmVhZFVpbnQxNihhLGMrMTcpO3AubG9zc2xlc3M9ISEoMSZtKTtwLnJlZmluZW1lbnQ9ISEoMiZtKTtwLmRlZmF1bHRQaXhlbFZhbHVlPW0+PjImMTtwLmNvbWJpbmF0aW9uT3BlcmF0b3I9bT4+MyYzO3AucmVxdWlyZXNCdWZmZXI9ISEoMzImbSk7cC5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmbSk7cz1bcF07YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnM9W2kubnVtYmVyLGEsYyxyXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzZWdtZW50IHR5cGUgJHtpLnR5cGVOYW1lfSgke2kudHlwZX0pIGlzIG5vdCBpbXBsZW1lbnRlZGApfWNvbnN0IGw9Im9uIitpLnR5cGVOYW1lO2wgaW4gdCYmdFtsXS5hcHBseSh0LHMpfWZ1bmN0aW9uIHByb2Nlc3NTZWdtZW50cyhlLHQpe2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylwcm9jZXNzU2VnbWVudChlW2ldLHQpfWNsYXNzIFNpbXBsZVNlZ21lbnRWaXNpdG9ye29uUGFnZUluZm9ybWF0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7Y29uc3QgdD1lLndpZHRoKzc+PjMsaT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCplLmhlaWdodCk7ZS5kZWZhdWx0UGl4ZWxWYWx1ZSYmaS5maWxsKDI1NSk7dGhpcy5idWZmZXI9aX1kcmF3Qml0bWFwKGUsdCl7Y29uc3QgaT10aGlzLmN1cnJlbnRQYWdlSW5mbyxhPWUud2lkdGgscj1lLmhlaWdodCxzPWkud2lkdGgrNz4+MyxuPWkuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlP2UuY29tYmluYXRpb25PcGVyYXRvcjppLmNvbWJpbmF0aW9uT3BlcmF0b3Isbz10aGlzLmJ1ZmZlcixnPTEyOD4+KDcmZS54KTtsZXQgYyxsLGgsQyxRPWUueSpzKyhlLng+PjMpO3N3aXRjaChuKXtjYXNlIDA6Zm9yKGM9MDtjPHI7YysrKXtoPWc7Qz1RO2ZvcihsPTA7bDxhO2wrKyl7dFtjXVtsXSYmKG9bQ118PWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtDKyt9fVErPXN9YnJlYWs7Y2FzZSAyOmZvcihjPTA7YzxyO2MrKyl7aD1nO0M9UTtmb3IobD0wO2w8YTtsKyspe3RbY11bbF0mJihvW0NdXj1oKTtoPj49MTtpZighaCl7aD0xMjg7QysrfX1RKz1zfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7bn0gaXMgbm90IHN1cHBvcnRlZGApfX1vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oZSx0LGksYSl7Y29uc3Qgcj1lLmluZm8scz1uZXcgRGVjb2RpbmdDb250ZXh0KHQsaSxhKSxuPWRlY29kZUJpdG1hcChlLm1tcixyLndpZHRoLHIuaGVpZ2h0LGUudGVtcGxhdGUsZS5wcmVkaWN0aW9uLG51bGwsZS5hdCxzKTt0aGlzLmRyYXdCaXRtYXAocixuKX1vbkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25TeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtsZXQgbixvO2lmKGUuaHVmZm1hbil7bj1mdW5jdGlvbiBnZXRTeW1ib2xEaWN0aW9uYXJ5SHVmZm1hblRhYmxlcyhlLHQsaSl7bGV0IGEscixzLG4sbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmE9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzphPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOnI9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzpyPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVyBzZWxlY3RvciIpfWlmKGUuYml0bWFwU2l6ZVNlbGVjdG9yKXtzPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrfWVsc2Ugcz1nZXRTdGFuZGFyZFRhYmxlKDEpO249ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP2dldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk6Z2V0U3RhbmRhcmRUYWJsZSgxKTtyZXR1cm57dGFibGVEZWx0YUhlaWdodDphLHRhYmxlRGVsdGFXaWR0aDpyLHRhYmxlQml0bWFwU2l6ZTpzLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOm59fShlLGksdGhpcy5jdXN0b21UYWJsZXMpO289bmV3IFJlYWRlcihhLHIscyl9bGV0IGc9dGhpcy5zeW1ib2xzO2d8fCh0aGlzLnN5bWJvbHM9Zz17fSk7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bmV3IERlY29kaW5nQ29udGV4dChhLHIscyk7Z1t0XT1mdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IEM9W107bGV0IFE9MCxFPWxvZzIoaS5sZW5ndGgrYSk7Y29uc3QgdT1sLmRlY29kZXIsZD1sLmNvbnRleHRDYWNoZTtsZXQgZixwO2lmKGUpe2Y9Z2V0U3RhbmRhcmRUYWJsZSgxKTtwPVtdO0U9TWF0aC5tYXgoRSwxKX1mb3IoO0MubGVuZ3RoPGE7KXtRKz1lP3MudGFibGVEZWx0YUhlaWdodC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURIIix1KTtsZXQgYT0wLHI9MDtjb25zdCBmPWU/cC5sZW5ndGg6MDtmb3IoOzspe2NvbnN0IGY9ZT9zLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURXIix1KTtpZihudWxsPT09ZilicmVhazthKz1mO3IrPWE7bGV0IG07aWYodCl7Y29uc3Qgcj1kZWNvZGVJbnRlZ2VyKGQsIklBQUkiLHUpO2lmKHI+MSltPWRlY29kZVRleHRSZWdpb24oZSx0LGEsUSwwLHIsMSxpLmNvbmNhdChDKSxFLDAsMCwxLDAscyxnLGMsbCwwLGgpO2Vsc2V7Y29uc3QgZT1kZWNvZGVJQUlEKGQsdSxFKSx0PWRlY29kZUludGVnZXIoZCwiSUFSRFgiLHUpLHI9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWSIsdSk7bT1kZWNvZGVSZWZpbmVtZW50KGEsUSxnLGU8aS5sZW5ndGg/aVtlXTpDW2UtaS5sZW5ndGhdLHQsciwhMSxjLGwpfUMucHVzaChtKX1lbHNlIGlmKGUpcC5wdXNoKGEpO2Vsc2V7bT1kZWNvZGVCaXRtYXAoITEsYSxRLG4sITEsbnVsbCxvLGwpO0MucHVzaChtKX19aWYoZSYmIXQpe2NvbnN0IGU9cy50YWJsZUJpdG1hcFNpemUuZGVjb2RlKGgpO2guYnl0ZUFsaWduKCk7bGV0IHQ7aWYoMD09PWUpdD1yZWFkVW5jb21wcmVzc2VkQml0bWFwKGgscixRKTtlbHNle2NvbnN0IGk9aC5lbmQsYT1oLnBvc2l0aW9uK2U7aC5lbmQ9YTt0PWRlY29kZU1NUkJpdG1hcChoLHIsUSwhMSk7aC5lbmQ9aTtoLnBvc2l0aW9uPWF9Y29uc3QgaT1wLmxlbmd0aDtpZihmPT09aS0xKUMucHVzaCh0KTtlbHNle2xldCBlLGEscixzLG4sbz0wO2ZvcihlPWY7ZTxpO2UrKyl7cz1wW2VdO3I9bytzO249W107Zm9yKGE9MDthPFE7YSsrKW4ucHVzaCh0W2FdLnN1YmFycmF5KG8scikpO0MucHVzaChuKTtvPXJ9fX19Y29uc3QgbT1bXSx5PVtdO2xldCB3LGIsRD0hMTtjb25zdCBTPWkubGVuZ3RoK2E7Zm9yKDt5Lmxlbmd0aDxTOyl7bGV0IHQ9ZT9mLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRVgiLHUpO2Zvcig7dC0tOyl5LnB1c2goRCk7RD0hRH1mb3Iodz0wLGI9aS5sZW5ndGg7dzxiO3crKyl5W3ddJiZtLnB1c2goaVt3XSk7Zm9yKGxldCBlPTA7ZTxhO3crKyxlKyspeVt3XSYmbS5wdXNoKENbZV0pO3JldHVybiBtfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGMsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxuLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxsLG8pfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9ZS5pbmZvO2xldCBuLG87Y29uc3QgZz10aGlzLnN5bWJvbHMsYz1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bG9nMihjLmxlbmd0aCk7aWYoZS5odWZmbWFuKXtvPW5ldyBSZWFkZXIoaSxhLHIpO249ZnVuY3Rpb24gZ2V0VGV4dFJlZ2lvbkh1ZmZtYW5UYWJsZXMoZSx0LGksYSxyKXtjb25zdCBzPVtdO2ZvcihsZXQgZT0wO2U8PTM0O2UrKyl7Y29uc3QgdD1yLnJlYWRCaXRzKDQpO3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSl9Y29uc3Qgbj1uZXcgSHVmZm1hblRhYmxlKHMsITEpO3MubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTxhOyl7Y29uc3QgdD1uLmRlY29kZShyKTtpZih0Pj0zMil7bGV0IGksYSxuO3N3aXRjaCh0KXtjYXNlIDMyOmlmKDA9PT1lKXRocm93IG5ldyBKYmlnMkVycm9yKCJubyBwcmV2aW91cyB2YWx1ZSBpbiBzeW1ib2wgSUQgdGFibGUiKTthPXIucmVhZEJpdHMoMikrMztpPXNbZS0xXS5wcmVmaXhMZW5ndGg7YnJlYWs7Y2FzZSAzMzphPXIucmVhZEJpdHMoMykrMztpPTA7YnJlYWs7Y2FzZSAzNDphPXIucmVhZEJpdHMoNykrMTE7aT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgY29kZSBsZW5ndGggaW4gc3ltYm9sIElEIHRhYmxlIil9Zm9yKG49MDtuPGE7bisrKXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLGksMCwwXSkpO2UrK319ZWxzZXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpO2UrK319ci5ieXRlQWxpZ24oKTtjb25zdCBvPW5ldyBIdWZmbWFuVGFibGUocywhMSk7bGV0IGcsYyxsLGg9MDtzd2l0Y2goZS5odWZmbWFuRlMpe2Nhc2UgMDpjYXNlIDE6Zz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkZTKzYpO2JyZWFrO2Nhc2UgMzpnPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBGUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EUyl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Yz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRTKzgpO2JyZWFrO2Nhc2UgMzpjPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6bD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFQgc2VsZWN0b3IiKX1pZihlLnJlZmluZW1lbnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm57c3ltYm9sSURUYWJsZTpvLHRhYmxlRmlyc3RTOmcsdGFibGVEZWx0YVM6Yyx0YWJsZURlbHRhVDpsfX0oZSx0LHRoaXMuY3VzdG9tVGFibGVzLGMubGVuZ3RoLG8pfWNvbnN0IGg9bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksQz1kZWNvZGVUZXh0UmVnaW9uKGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsYyxsLGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixuLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsZS5sb2dTdHJpcFNpemUsbyk7dGhpcy5kcmF3Qml0bWFwKHMsQyl9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LGksYSxyKXtsZXQgcz10aGlzLnBhdHRlcm5zO3N8fCh0aGlzLnBhdHRlcm5zPXM9e30pO2NvbnN0IG49bmV3IERlY29kaW5nQ29udGV4dChpLGEscik7c1t0XT1mdW5jdGlvbiBkZWNvZGVQYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIscyl7Y29uc3Qgbj1bXTtpZighZSl7bi5wdXNoKHt4Oi10LHk6MH0pOzA9PT1yJiZuLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgbz1kZWNvZGVCaXRtYXAoZSwoYSsxKSp0LGksciwhMSxudWxsLG4scyksZz1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyl7Y29uc3QgYT1bXSxyPXQqZSxzPXIrdDtmb3IobGV0IGU9MDtlPGk7ZSsrKWEucHVzaChvW2VdLnN1YmFycmF5KHIscykpO2cucHVzaChhKX1yZXR1cm4gZ30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUsbil9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxuPWUuaW5mbyxvPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpLGc9ZnVuY3Rpb24gZGVjb2RlSGFsZnRvbmVSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxsLGgsQyxRLEUpe2lmKG4pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNraXAgaXMgbm90IHN1cHBvcnRlZCIpO2lmKDAhPT1vKXRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAiJHtvfSIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb25gKTtjb25zdCB1PVtdO2xldCBkLGYscDtmb3IoZD0wO2Q8cjtkKyspe3A9bmV3IFVpbnQ4QXJyYXkoYSk7aWYocylmb3IoZj0wO2Y8YTtmKyspcFtmXT1zO3UucHVzaChwKX1jb25zdCBtPXQubGVuZ3RoLHk9dFswXSx3PXlbMF0ubGVuZ3RoLGI9eS5sZW5ndGgsRD1sb2cyKG0pLFM9W107aWYoIWUpe1MucHVzaCh7eDppPD0xPzM6Mix5Oi0xfSk7MD09PWkmJlMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBrPVtdO2xldCBSLE4sRyxNLFUseCxMLEgsSix2LFk7ZSYmKFI9bmV3IFJlYWRlcihFLmRhdGEsRS5zdGFydCxFLmVuZCkpO2ZvcihkPUQtMTtkPj0wO2QtLSl7Tj1lP2RlY29kZU1NUkJpdG1hcChSLGcsYywhMCk6ZGVjb2RlQml0bWFwKCExLGcsYyxpLCExLG51bGwsUyxFKTtrW2RdPU59Zm9yKEc9MDtHPGM7RysrKWZvcihNPTA7TTxnO00rKyl7VT0wO3g9MDtmb3IoZj1ELTE7Zj49MDtmLS0pe1VePWtbZl1bR11bTV07eHw9VTw8Zn1MPXRbeF07SD1sK0cqUStNKkM+Pjg7Sj1oK0cqQy1NKlE+Pjg7aWYoSD49MCYmSCt3PD1hJiZKPj0wJiZKK2I8PXIpZm9yKGQ9MDtkPGI7ZCsrKXtZPXVbSitkXTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKVlbSCtmXXw9dltmXX1lbHNle2xldCBlLHQ7Zm9yKGQ9MDtkPGI7ZCsrKXt0PUorZDtpZighKHQ8MHx8dD49cikpe1k9dVt0XTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKXtlPUgrZjtlPj0wJiZlPGEmJihZW2VdfD12W2ZdKX19fX19cmV0dXJuIHV9KGUubW1yLHMsZS50ZW1wbGF0ZSxuLndpZHRoLG4uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5lbmFibGVTa2lwLGUuY29tYmluYXRpb25PcGVyYXRvcixlLmdyaWRXaWR0aCxlLmdyaWRIZWlnaHQsZS5ncmlkT2Zmc2V0WCxlLmdyaWRPZmZzZXRZLGUuZ3JpZFZlY3RvclgsZS5ncmlkVmVjdG9yWSxvKTt0aGlzLmRyYXdCaXRtYXAobixnKX1vbkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oLi4uYXJndW1lbnRzKX1vblRhYmxlcyhlLHQsaSxhKXtsZXQgcj10aGlzLmN1c3RvbVRhYmxlcztyfHwodGhpcy5jdXN0b21UYWJsZXM9cj17fSk7cltlXT1mdW5jdGlvbiBkZWNvZGVUYWJsZXNTZWdtZW50KGUsdCxpKXtjb25zdCBhPWVbdF0scj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzEpLHM9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCs1KSxuPW5ldyBSZWFkZXIoZSx0KzksaSksbz0xKyhhPj4xJjcpLGc9MSsoYT4+NCY3KSxjPVtdO2xldCBsLGgsQz1yO2Rve2w9bi5yZWFkQml0cyhvKTtoPW4ucmVhZEJpdHMoZyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbQyxsLGgsMF0pKTtDKz0xPDxofXdoaWxlKEM8cyk7bD1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW3ItMSxsLDMyLDAsImxvd2VyIl0pKTtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbcyxsLDMyLDBdKSk7aWYoMSZhKXtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbbCwwXSkpfXJldHVybiBuZXcgSHVmZm1hblRhYmxlKGMsITEpfSh0LGksYSl9fWNsYXNzIEh1ZmZtYW5MaW5le2NvbnN0cnVjdG9yKGUpe2lmKDI9PT1lLmxlbmd0aCl7dGhpcy5pc09PQj0hMDt0aGlzLnJhbmdlTG93PTA7dGhpcy5wcmVmaXhMZW5ndGg9ZVswXTt0aGlzLnJhbmdlTGVuZ3RoPTA7dGhpcy5wcmVmaXhDb2RlPWVbMV07dGhpcy5pc0xvd2VyUmFuZ2U9ITF9ZWxzZXt0aGlzLmlzT09CPSExO3RoaXMucmFuZ2VMb3c9ZVswXTt0aGlzLnByZWZpeExlbmd0aD1lWzFdO3RoaXMucmFuZ2VMZW5ndGg9ZVsyXTt0aGlzLnByZWZpeENvZGU9ZVszXTt0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09ZVs0XX19fWNsYXNzIEh1ZmZtYW5UcmVlTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdO2lmKGUpe3RoaXMuaXNMZWFmPSEwO3RoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aDt0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3c7dGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2U7dGhpcy5pc09PQj1lLmlzT09CfWVsc2UgdGhpcy5pc0xlYWY9ITF9YnVpbGRUcmVlKGUsdCl7Y29uc3QgaT1lLnByZWZpeENvZGU+PnQmMTtpZih0PD0wKXRoaXMuY2hpbGRyZW5baV09bmV3IEh1ZmZtYW5UcmVlTm9kZShlKTtlbHNle2xldCBhPXRoaXMuY2hpbGRyZW5baV07YXx8KHRoaXMuY2hpbGRyZW5baV09YT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpKTthLmJ1aWxkVHJlZShlLHQtMSl9fWRlY29kZU5vZGUoZSl7aWYodGhpcy5pc0xlYWYpe2lmKHRoaXMuaXNPT0IpcmV0dXJuIG51bGw7Y29uc3QgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX1jb25zdCB0PXRoaXMuY2hpbGRyZW5bZS5yZWFkQml0KCldO2lmKCF0KXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gZGF0YSIpO3JldHVybiB0LmRlY29kZU5vZGUoZSl9fWNsYXNzIEh1ZmZtYW5UYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3R8fHRoaXMuYXNzaWduUHJlZml4Q29kZXMoZSk7dGhpcy5yb290Tm9kZT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lW3RdO2kucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKGksaS5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IobGV0IGE9MDthPHQ7YSsrKWk9TWF0aC5tYXgoaSxlW2FdLnByZWZpeExlbmd0aCk7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoaSsxKTtmb3IobGV0IGk9MDtpPHQ7aSsrKWFbZVtpXS5wcmVmaXhMZW5ndGhdKys7bGV0IHIscyxuLG89MSxnPTA7YVswXT0wO2Zvcig7bzw9aTspe2c9ZythW28tMV08PDE7cj1nO3M9MDtmb3IoO3M8dDspe249ZVtzXTtpZihuLnByZWZpeExlbmd0aD09PW8pe24ucHJlZml4Q29kZT1yO3IrK31zKyt9bysrfX19Y29uc3QganQ9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxpPWp0W2VdO2lmKGkpcmV0dXJuIGk7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHN0YW5kYXJkIHRhYmxlIEIuJHtlfSBkb2VzIG5vdCBleGlzdGApfWZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0W2VdPW5ldyBIdWZmbWFuTGluZSh0W2VdKTtpPW5ldyBIdWZmbWFuVGFibGUodCwhMCk7anRbZV09aTtyZXR1cm4gaX1jbGFzcyBSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1pO3RoaXMucG9zaXRpb249dDt0aGlzLnNoaWZ0PS0xO3RoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdO3RoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTt0aGlzLnNoaWZ0LS07cmV0dXJuIGV9cmVhZEJpdHMoZSl7bGV0IHQsaT0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlpfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gaX1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIGdldEN1c3RvbUh1ZmZtYW5UYWJsZShlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9aVt0W3JdXTtpZihzKXtpZihlPT09YSlyZXR1cm4gczthKyt9fXRocm93IG5ldyBKYmlnMkVycm9yKCJjYW4ndCBmaW5kIGN1c3RvbSBIdWZmbWFuIHRhYmxlIil9ZnVuY3Rpb24gcmVhZFVuY29tcHJlc3NlZEJpdG1hcChlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO2EucHVzaChpKTtmb3IobGV0IGE9MDthPHQ7YSsrKWlbYV09ZS5yZWFkQml0KCk7ZS5ieXRlQWxpZ24oKX1yZXR1cm4gYX1mdW5jdGlvbiBkZWNvZGVNTVJCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGUse0s6LTEsQ29sdW1uczp0LFJvd3M6aSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOmF9KSxzPVtdO2xldCBuLG89ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtzLnB1c2goZSk7bGV0IGk9LTE7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYoaTwwKXtuPXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1uKXtuPTA7bz0hMH1pPTd9ZVthXT1uPj5pJjE7aS0tfX1pZihhJiYhbyl7Y29uc3QgZT01O2ZvcihsZXQgdD0wO3Q8ZSYmLTEhPT1yLnJlYWROZXh0Q2hhcigpO3QrKyk7fXJldHVybiBzfWNsYXNzIEpiaWcySW1hZ2V7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uIHBhcnNlSmJpZzJDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2ltcGxlU2VnbWVudFZpc2l0b3I7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07cHJvY2Vzc1NlZ21lbnRzKHJlYWRTZWdtZW50cyh7fSxhLmRhdGEsYS5zdGFydCxhLmVuZCksdCl9cmV0dXJuIHQuYnVmZmVyfShlKX1wYXJzZShlKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogSmJpZzJJbWFnZS5wYXJzZSIpfX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7Y29uc3QgdD1uZXcgSmJpZzJJbWFnZSxpPVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKTtpLnB1c2goe2RhdGE6dCxzdGFydDowLGVuZDp0Lmxlbmd0aH0pfX1pLnB1c2goe2RhdGE6ZSxzdGFydDowLGVuZDplLmxlbmd0aH0pO2NvbnN0IGE9dC5wYXJzZUNodW5rcyhpKSxyPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cjtlKyspYVtlXV49MjU1O3RoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBTOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIGs6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgbj0wO2NvbnN0IG89cipzKjMsZz1vPj4yLGM9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsZyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT00Mjc4MTkwMDgwfGU7aVthKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7aVthKzJdPXQ+Pj4xNnxyPDwxNnw0Mjc4MTkwMDgwO2lbYSszXT1yPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgcj00Km4scz10K287cjxzO3IrPTMpaVthKytdPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT0yNTV8ZTtpW2ErMV09ZTw8MjR8dD4+Pjh8MjU1O2lbYSsyXT10PDwxNnxyPj4+MTZ8MjU1O2lbYSszXT1yPDw4fDI1NX1mb3IobGV0IHI9NCpuLHM9dCtvO3I8cztyKz0zKWlbYSsrXT1lW3JdPDwyNHxlW3IrMV08PDE2fGVbcisyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczphfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjpzPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpuPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbZyxjXT1uP1tzLG9dOltvLHNdLGw9YT4+MyxoPTcmYSxDPWUubGVuZ3RoO2k9bmV3IFVpbnQzMkFycmF5KGkuYnVmZmVyKTtsZXQgUT0wO2ZvcihsZXQgYT0wO2E8cjthKyspe2Zvcihjb25zdCBhPXQrbDt0PGE7dCsrKXtjb25zdCBhPXQ8Qz9lW3RdOjI1NTtpW1ErK109MTI4JmE/YzpnO2lbUSsrXT02NCZhP2M6ZztpW1ErK109MzImYT9jOmc7aVtRKytdPTE2JmE/YzpnO2lbUSsrXT04JmE/YzpnO2lbUSsrXT00JmE/YzpnO2lbUSsrXT0yJmE/YzpnO2lbUSsrXT0xJmE/YzpnfWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxDP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoO2UrKylpW1ErK109YSYxPDw3LWU/YzpnfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOlF9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFh0PW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksVnQ9NDAxNyxadD03OTksX3Q9MzQwNix6dD0yMjc2LCR0PTE1NjcsQWk9Mzc4NCxlaT01NzkzLHRpPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgaSxhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3Qgbj1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxnPW5bMF07Zm9yKGk9MDtpPHM7aSsrKXtmb3IoYT0wO2E8ZVtpXTthKyspe2c9bi5wb3AoKTtnLmNoaWxkcmVuW2cuaW5kZXhdPXRbcl07Zm9yKDtnLmluZGV4PjA7KWc9bi5wb3AoKTtnLmluZGV4Kys7bi5wdXNoKGcpO2Zvcig7bi5sZW5ndGg8PWk7KXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99cisrfWlmKGkrMTxzKXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99fXJldHVybiBuWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxpKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtpKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxpLGEscixzLG4sbyxnLGM9ITEpe2NvbnN0IGw9aS5tY3VzUGVyTGluZSxoPWkucHJvZ3Jlc3NpdmUsQz10O2xldCBRPTAsRT0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihFPjApe0UtLTtyZXR1cm4gUT4+RSYxfVE9ZVt0KytdO2lmKDI1NT09PVEpe2NvbnN0IGE9ZVt0KytdO2lmKGEpe2lmKDIyMD09PWEmJmMpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrPTIpO3QrPTI7aWYoYT4wJiZhIT09aS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixhKX1lbHNlIGlmKDIxNz09PWEpe2lmKGMpe2NvbnN0IGU9cCooOD09PWkucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGkuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KFE8PDh8YSkudG9TdHJpbmcoMTYpfWApfX1FPTc7cmV0dXJuIFE+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHU9MDtsZXQgZCxmPTA7bGV0IHA9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGksYSxyKXtjb25zdCBzPWklbDtwPShpL2x8MCkqZS52K2E7Y29uc3Qgbj1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsbikpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxpKXtwPWkvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1pJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLGEpKX1jb25zdCBtPWEubGVuZ3RoO2xldCB5LHcsYixELFMsaztrPWg/MD09PXM/MD09PW8/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTw8ZztlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGd9OjA9PT1vP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih1PjApe3UtLTtyZXR1cm59bGV0IGk9cztjb25zdCBhPW47Zm9yKDtpPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe3U9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31pKz0xNjtjb250aW51ZX1pKz1zO2NvbnN0IG49WHRbaV07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxnKTtpKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgaT1zO2NvbnN0IGE9bjtsZXQgcixvLGM9MDtmb3IoO2k8PWE7KXtjb25zdCBhPXQrWHRbaV0scz1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKGYpe2Nhc2UgMDpvPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZvO2M9bz4+NDtpZigwPT09cilpZihjPDE1KXt1PXJlY2VpdmUoYykrKDE8PGMpO2Y9NH1lbHNle2M9MTY7Zj0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtkPXJlY2VpdmVBbmRFeHRlbmQocik7Zj1jPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7Yy0tOzA9PT1jJiYoZj0yPT09Zj8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2UuYmxvY2tEYXRhW2FdPWQ8PGc7Zj0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpKX1pKyt9aWYoND09PWYpe3UtLTswPT09dSYmKGY9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLHM9aT4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IG49WHRbcl07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBSLE49MDtjb25zdCBHPTE9PT1tP2FbMF0uYmxvY2tzUGVyTGluZSphWzBdLmJsb2Nrc1BlckNvbHVtbjpsKmkubWN1c1BlckNvbHVtbjtsZXQgTSxVO2Zvcig7Tjw9Rzspe2NvbnN0IGk9cj9NYXRoLm1pbihHLU4scik6RztpZihpPjApe2Zvcih3PTA7dzxtO3crKylhW3ddLnByZWQ9MDt1PTA7aWYoMT09PW0pe3k9YVswXTtmb3IoUz0wO1M8aTtTKyspe2RlY29kZUJsb2NrKHksayxOKTtOKyt9fWVsc2UgZm9yKFM9MDtTPGk7UysrKXtmb3Iodz0wO3c8bTt3Kyspe3k9YVt3XTtNPXkuaDtVPXkudjtmb3IoYj0wO2I8VTtiKyspZm9yKEQ9MDtEPE07RCsrKWRlY29kZU1jdSh5LGssTixiLEQpfU4rK319RT0wO1I9ZmluZE5leHRGaWxlTWFya2VyKGUsdCk7aWYoIVIpYnJlYWs7aWYoUi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHtpPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ui5pbnZhbGlkfWApO3Q9Ui5vZmZzZXR9aWYoIShSLm1hcmtlcj49NjU0ODgmJlIubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1DfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsaSl7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHI9ZS5ibG9ja0RhdGE7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkLGYscCxtLHksdztpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe1E9clt0K2VdO0U9clt0K2UrMV07dT1yW3QrZSsyXTtkPXJbdCtlKzNdO2Y9clt0K2UrNF07cD1yW3QrZSs1XTttPXJbdCtlKzZdO3k9clt0K2UrN107USo9YVtlXTtpZihFfHV8ZHxmfHB8bXx5KXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cz1laSpRKzEyOD4+ODtuPWVpKmYrMTI4Pj44O289dTtnPW07Yz10aSooRS15KSsxMjg+Pjg7Qz10aSooRSt5KSsxMjg+Pjg7bD1kPDw0O2g9cDw8NDtzPXMrbisxPj4xO249cy1uO3c9bypBaStnKiR0KzEyOD4+ODtvPW8qJHQtZypBaSsxMjg+Pjg7Zz13O2M9YytoKzE+PjE7aD1jLWg7Qz1DK2wrMT4+MTtsPUMtbDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKnp0K0MqX3QrMjA0OD4+MTI7Yz1jKl90LUMqenQrMjA0OD4+MTI7Qz13O3c9bCpadCtoKlZ0KzIwNDg+PjEyO2w9bCpWdC1oKlp0KzIwNDg+PjEyO2g9dztpW2VdPXMrQztpW2UrN109cy1DO2lbZSsxXT1uK2g7aVtlKzZdPW4taDtpW2UrMl09bytsO2lbZSs1XT1vLWw7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1laSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoRXx1fGR8ZnxwfG18eSl7cz1laSpRKzIwNDg+PjEyO249ZWkqZisyMDQ4Pj4xMjtvPXU7Zz1tO2M9dGkqKEUteSkrMjA0OD4+MTI7Qz10aSooRSt5KSsyMDQ4Pj4xMjtsPWQ7aD1wO3M9NDExMisocytuKzE+PjEpO249cy1uO3c9bypBaStnKiR0KzIwNDg+PjEyO289byokdC1nKkFpKzIwNDg+PjEyO2c9dztjPWMraCsxPj4xO2g9Yy1oO0M9QytsKzE+PjE7bD1DLWw7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9Yyp6dCtDKl90KzIwNDg+PjEyO2M9YypfdC1DKnp0KzIwNDg+PjEyO0M9dzt3PWwqWnQraCpWdCsyMDQ4Pj4xMjtsPWwqVnQtaCpadCsyMDQ4Pj4xMjtoPXc7UT1zK0M7eT1zLUM7RT1uK2g7bT1uLWg7dT1vK2w7cD1vLWw7ZD1nK2M7Zj1nLWM7UTwxNj9RPTA6UT49NDA4MD9RPTI1NTpRPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O3U8MTY/dT0wOnU+PTQwODA/dT0yNTU6dT4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDt5PDE2P3k9MDp5Pj00MDgwP3k9MjU1Onk+Pj00O3JbdCtlXT1RO3JbdCtlKzhdPUU7clt0K2UrMTZdPXU7clt0K2UrMjRdPWQ7clt0K2UrMzJdPWY7clt0K2UrNDBdPXA7clt0K2UrNDhdPW07clt0K2UrNTZdPXl9ZWxzZXt3PWVpKlErODE5Mj4+MTQ7dz13PC0yMDQwPzA6dz49MjAyND8yNTU6dysyMDU2Pj40O3JbdCtlXT13O3JbdCtlKzhdPXc7clt0K2UrMTZdPXc7clt0K2UrMjRdPXc7clt0K2UrMzJdPXc7clt0K2UrNDBdPXc7clt0K2UrNDhdPXc7clt0K2UrNTZdPXd9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBpPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHI9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxpO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHIpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGk9dCl7Y29uc3QgYT1lLmxlbmd0aC0xO2xldCByPWk8dD9pOnQ7aWYodD49YSlyZXR1cm4gbnVsbDtjb25zdCBzPXJlYWRVaW50MTYoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG49cmVhZFVpbnQxNihlLHIpO2Zvcig7IShuPj02NTQ3MiYmbjw9NjU1MzQpOyl7aWYoKytyPj1hKXJldHVybiBudWxsO249cmVhZFVpbnQxNihlLHIpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpuLG9mZnNldDpyfX1mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxpPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IGEgb2YgZS5jb21wb25lbnRzKXtjb25zdCByPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSphLmgvZS5tYXhIKSxzPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqYS52L2UubWF4Viksbj10KmEuaCxvPTY0KihpKmEudikqKG4rMSk7YS5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7YS5ibG9ja3NQZXJMaW5lPXI7YS5ibG9ja3NQZXJDb2x1bW49c31lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWl9ZnVuY3Rpb24gcmVhZERhdGFCbG9jayhlLHQpe2NvbnN0IGk9cmVhZFVpbnQxNihlLHQpO2xldCBhPSh0Kz0yKStpLTI7Y29uc3Qgcj1maW5kTmV4dEZpbGVNYXJrZXIoZSxhLHQpO2lmKHI/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIityLmludmFsaWQpO2E9ci5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KHQsYSk7cmV0dXJue2FwcERhdGE6cyxuZXdPZmZzZXQ6dCs9cy5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCl7Y29uc3QgaT1yZWFkVWludDE2KGUsdCksYT0odCs9MikraS0yLHI9ZmluZE5leHRGaWxlTWFya2VyKGUsYSx0KTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDphfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7bGV0IGk9MCxhPW51bGwscj1yZWFkVWludDE2KGUsaSk7aSs9MjtpZig2NTQ5NiE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO3I9cmVhZFVpbnQxNihlLGkpO2krPTI7QTpmb3IoOzY1NDk3IT09cjspe3N3aXRjaChyKXtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDphPWVbaSs3XTticmVhayBBO2Nhc2UgNjU1MzU6MjU1IT09ZVtpXSYmaS0tfWk9c2tpcERhdGEoZSxpKTtyPXJlYWRVaW50MTYoZSxpKTtpKz0yfXJldHVybiA0IT09YSYmKDMhPT1hfHwwIT09dCl9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBpLGEscj0wLHM9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxsPVtdO2xldCBoPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09aCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7aD1yZWFkVWludDE2KGUscik7cis9MjtBOmZvcig7NjU0OTchPT1oOyl7bGV0IEMsUSxFO3N3aXRjaChoKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTp1LG5ld09mZnNldDpkfT1yZWFkRGF0YUJsb2NrKGUscik7cj1kOzY1NTA0PT09aCYmNzQ9PT11WzBdJiY3MD09PXVbMV0mJjczPT09dVsyXSYmNzA9PT11WzNdJiYwPT09dVs0XSYmKHM9e3ZlcnNpb246e21ham9yOnVbNV0sbWlub3I6dVs2XX0sZGVuc2l0eVVuaXRzOnVbN10seERlbnNpdHk6dVs4XTw8OHx1WzldLHlEZW5zaXR5OnVbMTBdPDw4fHVbMTFdLHRodW1iV2lkdGg6dVsxMl0sdGh1bWJIZWlnaHQ6dVsxM10sdGh1bWJEYXRhOnUuc3ViYXJyYXkoMTQsMTQrMyp1WzEyXSp1WzEzXSl9KTs2NTUxOD09PWgmJjY1PT09dVswXSYmMTAwPT09dVsxXSYmMTExPT09dVsyXSYmOTg9PT11WzNdJiYxMDE9PT11WzRdJiYobj17dmVyc2lvbjp1WzVdPDw4fHVbNl0sZmxhZ3MwOnVbN108PDh8dVs4XSxmbGFnczE6dVs5XTw8OHx1WzEwXSx0cmFuc2Zvcm1Db2RlOnVbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBmPXJlYWRVaW50MTYoZSxyKTtyKz0yO2NvbnN0IHA9ZityLTI7bGV0IG07Zm9yKDtyPHA7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoUT0wO1E8NjQ7USsrKXttPVh0W1FdO2lbbV09cmVhZFVpbnQxNihlLHIpO3IrPTJ9fWVsc2UgZm9yKFE9MDtRPDY0O1ErKyl7bT1YdFtRXTtpW21dPWVbcisrXX1nWzE1JnRdPWl9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtyKz0yO2k9e307aS5leHRlbmRlZD02NTQ3Mz09PWg7aS5wcm9ncmVzc2l2ZT02NTQ3ND09PWg7aS5wcmVjaXNpb249ZVtyKytdO2NvbnN0IHk9cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5zY2FuTGluZXM9dHx8eTtpLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuY29tcG9uZW50cz1bXTtpLmNvbXBvbmVudElkcz17fTtjb25zdCB3PWVbcisrXTtsZXQgYj0wLEQ9MDtmb3IoQz0wO0M8dztDKyspe2NvbnN0IHQ9ZVtyXSxhPWVbcisxXT4+NCxzPTE1JmVbcisxXTtiPGEmJihiPWEpO0Q8cyYmKEQ9cyk7Y29uc3Qgbj1lW3IrMl07RT1pLmNvbXBvbmVudHMucHVzaCh7aDphLHY6cyxxdWFudGl6YXRpb25JZDpuLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtpLmNvbXBvbmVudElkc1t0XT1FLTE7cis9M31pLm1heEg9YjtpLm1heFY9RDtwcmVwYXJlQ29tcG9uZW50cyhpKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IFM9cmVhZFVpbnQxNihlLHIpO3IrPTI7Zm9yKEM9MjtDPFM7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgYT0wO2ZvcihRPTA7UTwxNjtRKysscisrKWErPWlbUV09ZVtyXTtjb25zdCBzPW5ldyBVaW50OEFycmF5KGEpO2ZvcihRPTA7UTxhO1ErKyxyKyspc1tRXT1lW3JdO0MrPTE3K2E7KHQ+PjQ/YzpsKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShpLHMpfWJyZWFrO2Nhc2UgNjU1MDE6cis9MjthPXJlYWRVaW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3Qgaz0xPT0rK28mJiF0O3IrPTI7Y29uc3QgUj1lW3IrK10sTj1bXTtmb3IoQz0wO0M8UjtDKyspe2NvbnN0IHQ9ZVtyKytdLGE9aS5jb21wb25lbnRJZHNbdF0scz1pLmNvbXBvbmVudHNbYV07cy5pbmRleD10O2NvbnN0IG49ZVtyKytdO3MuaHVmZm1hblRhYmxlREM9bFtuPj40XTtzLmh1ZmZtYW5UYWJsZUFDPWNbMTUmbl07Ti5wdXNoKHMpfWNvbnN0IEc9ZVtyKytdLE09ZVtyKytdLFU9ZVtyKytdO3RyeXtyKz1kZWNvZGVTY2FuKGUscixpLE4sYSxHLE0sVT4+NCwxNSZVLGspfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgQX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6cis9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLTticmVhaztkZWZhdWx0OmNvbnN0IHg9ZmluZE5leHRGaWxlTWFya2VyKGUsci0yLHItMyk7aWYoeD8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIit4LmludmFsaWQpO3I9eC5vZmZzZXQ7YnJlYWt9aWYoIXh8fHI+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBBfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2gudG9TdHJpbmcoMTYpKX1oPXJlYWRVaW50MTYoZSxyKTtyKz0yfWlmKCFpKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1pLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWkuc2NhbkxpbmVzO3RoaXMuamZpZj1zO3RoaXMuYWRvYmU9bjt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaS5jb21wb25lbnRzKXtjb25zdCB0PWdbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvaS5tYXhILHNjYWxlWTplLnYvaS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpPSExKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkPTA7Y29uc3QgZj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHA9ZSp0KmYsbT1uZXcgVWludDhDbGFtcGVkQXJyYXkocCkseT1uZXcgVWludDMyQXJyYXkoZSksdz00Mjk0OTY3Mjg4O2xldCBiO2ZvcihoPTA7aDxmO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07bj1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtkPWg7dT1zLm91dHB1dDtnPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKG4hPT1iKXtmb3IoYz0wO2M8ZTtjKyspe0M9MHxjKm47eVtjXT0oQyZ3KTw8M3w3JkN9Yj1ufWZvcihsPTA7bDx0O2wrKyl7Qz0wfGwqbztFPWcqKEMmdyl8KDcmQyk8PDM7Zm9yKGM9MDtjPGU7YysrKXttW2RdPXVbRSt5W2NdXTtkKz1mfX19bGV0IEQ9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2l8fDQhPT1mfHxEfHwoRD1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoRClmb3IoaD0wO2g8cDspZm9yKEM9MCxRPTA7QzxmO0MrKyxoKyssUSs9MiltW2hdPShtW2hdKkRbUV0+PjgpK0RbUSsxXTtyZXR1cm4gbX1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9Myl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09dC0xNzkuNDU2KzEuNDAyKmE7ZVtyKzFdPXQrMTM1LjQ1OS0uMzQ0KmktLjcxNCphO2VbcisyXT10LTIyNi44MTYrMS43NzIqaX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgaT0wLGE9MCxyPWUubGVuZ3RoO2k8cjtpKz0zLGErPTQpe2NvbnN0IHI9ZVtpXSxzPWVbaSsxXSxuPWVbaSsyXTt0W2FdPXItMTc5LjQ1NisxLjQwMipuO3RbYSsxXT1yKzEzNS40NTktLjM0NCpzLS43MTQqbjt0W2ErMl09ci0yMjYuODE2KzEuNzcyKnM7dFthKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT1pKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSppKy4wMDA0MzcxMzA0NzU5MjYyMzIqYS01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqci0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrYSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqYSsuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KnIrMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypyKy40ODM1NzA4ODQ1MTI2NSkrciooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcisuNDg0NzkxNTYxNDkwNzc2KTtlW3MrK109MTA3LjI2ODAzOTM5NzcyNCtpKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmktLjAwMDY0MDk5MjAxODI5Nzk0NSphKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KnItLjE3NjQ5MTc5MjQ2Mjg3NSkrYSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqYSsuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKnItLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KnIrLjI1ODAyOTEwMjA2ODQ1KStyKigtLjAwMDMxODkxMzExNzU4ODMyOCpyLS4yMTM3NDI0MDAzMjM2NjUpO2VbcysrXT1pKigtLjAwMDU3MDExNTE5Njk3MzY3NyppLTI2MzQwOTA1MTAwNDU4OWUtMTkqYSsuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipyKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NythKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSphLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKnItLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KnIrLjExNjkzNTAyMDQ2NTE0NSkrciooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPWEqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmErLjAwMDQzNzEzMDQ3NTkyNjIzMipyLTU0MDgwNjEwMDY0NTk5ZS0xOCppKy4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtyKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypyKy4wMDA4MTcwNzY5MTEzNDY2MjUqaS0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KStpKiguMDAwOTYxMjUwMTg0MTMwNjg4KmktLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K2EqKDIxOTkyNzEwNDUyNTc0MWUtMTkqYS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KnIrLjAwMDY1OTM5NzAwMTI0NTU3NyppKy4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KStyKigtLjAwMDc3ODI2OTk0MTUxMzY4MypyKy4wMDEzMDg3MjI2MTQwODI3NSppKy4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKStpKiguMDAxMjY5MzUzNjgxMTQ4NDMqaS0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPWEqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmEtMjYzNDA5MDUxMDA0NTg5ZS0xOSpyKy4wMDIwNzQxMDg4MTE1MDEyKmktLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K3IqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KnItLjAwMDEzMjY4OTA0Mzk2MTQ0NippKy4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KStpKiguMDAxNzQ0MTgxMzI5Mjc1ODIqaS0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCppKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmkrLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KnItMS4xMTg1NjExODY3MjAzOTM3KStpKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqaS04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnItLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NipyKy4wNjg2NzQyMjM4NTk1MzQ1KS1yKiguMDAwMzM2MTk3MTc3NjE4MzkzNypyKy43NDMwNjU5MTUxMzQyMjU0KTtlW3MrK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqaSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMipyLS4zMTA5Njg5NTg3NTE1ODc1KStpKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmkrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NipyLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypyLS4wOTc1MTkyNzc3NDcyODkzMyktciooLjAwMDMxODkxMzExNzU4ODMyODEqcisuNzM2NDg4MzgwNzczMzE2OCk7ZVtzKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqaSsuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipyLS4wNTU2MjE4Njk4MDI2NDAzNCkraSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmkrLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypyLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpyLS43NTkxNDU0NjQ5NzQ5NjA5KS1yKiguMDAwMzQzNTMxOTk2NTEwNTU1MypyKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT0yNTUraSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmkrLjAwMDgzNzkyNjIxMjEwMTM3MjcqYSsuMDAwMjg5NDcxODE4ODY0MzI5NCpyKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2EqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSphLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKnItLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK3IqKC0zODc4MDk5MjEyODY5MzYzZS0yMCpyLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUraSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmkrLjAwMDkyNDUzNzEzMjU3MzU4NSphKy4wMDAxMDU2NzM1OTYxODY4MzU5MypyKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2EqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqYSsuMDAwMjcwMjg0NTI1MzUzNDcxNCpyKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK3IqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKnIrLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2kqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSppKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSphKy4wMDA0NzUxOTg1MDk3NTgzNTg5KnItMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KSthKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqYSsuMDAwOTY5MjIzOTEzMDcyNTE4NipyKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKStyKig1LjA2ODg4MjkxNDA2ODc2OWUtNypyKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6aT0hMSxmb3JjZVJHQjphPSExLGlzU291cmNlUERGOnI9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxyKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoaXx8YSkpe2NvbnN0IGU9cy5sZW5ndGgqKGk/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgYT0wO2lmKGkpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT02NTc5MyplW2ldfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT0xNjg0MzAwOCplW2ldfDI1NX0ocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gaT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTphP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjeT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jeT1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxhPXQubGVuZ3RoLHI9bmV3IEludDMyQXJyYXkoYSk7bGV0IHM9ITE7Y29uc3Qgbj0oMTw8aSktMTtmb3IobGV0IGU9MDtlPGE7ZSs9Mil7cltlXT0yNTYqKHRbZSsxXS10W2VdKXwwO3JbZSsxXT10W2VdKm58MDsyNTY9PT1yW2VdJiYwPT09cltlKzFdfHwocz0hMCl9cyYmKGUuZGVjb2RlVHJhbnNmb3JtPXIpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I3coZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aC0xO3Q8aTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI3coZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgaT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWkubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGk9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy4jdyhpKTtpZighSnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihhLGUuY29sb3JUcmFuc2Zvcm0pKXJldHVybiBudWxsO3Q9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fXZhciBpaSxhaT0oaWk9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmM6dm9pZCAwLGZ1bmN0aW9uKGU9e30pe3ZhciB0LGksYT1lO25ldyBQcm9taXNlKCgoZSxhKT0+e3Q9ZTtpPWF9KSk7YS5kZWNvZGU9ZnVuY3Rpb24oZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6aT0hMSxzbWFza0luRGF0YTpyPSExfSl7Y29uc3Qgcz1lLmxlbmd0aCxuPWEuX21hbGxvYyhzKTthLkhFQVBVOC5zZXQoZSxuKTtjb25zdCBvPWEuX2pwMl9kZWNvZGUobixzLHQ+MD90OjAsISFpLCEhcik7YS5fZnJlZShuKTtpZihvKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOmd9PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZ307dmFyIHI9T2JqZWN0LmFzc2lnbih7fSxhKSxzPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxuPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihuPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtpaSYmKG49aWkpO249bi5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm4uc3Vic3RyKDAsbi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBvPWEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZz1hLnByaW50RXJyfHxjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihhLHIpO3I9bnVsbDthLmFyZ3VtZW50cyYmYS5hcmd1bWVudHM7YS50aGlzUHJvZ3JhbSYmKHM9YS50aGlzUHJvZ3JhbSk7dmFyIGMsbD1hLndhc21CaW5hcnk7ZnVuY3Rpb24gdHJ5UGFyc2VBc0RhdGFVUkkoZSl7aWYoaXNEYXRhVVJJKGUpKXJldHVybiBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQoZSl7Zm9yKHZhciB0PWF0b2IoZSksaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7KythKWlbYV09dC5jaGFyQ29kZUF0KGEpO3JldHVybiBpfShlLnNsaWNlKEQubGVuZ3RoKSl9dmFyIGgsQyxRLEUsdT0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PVE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9RT1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIGQsZj1bXSxwPVtdLG09W10seT0wLHc9bnVsbCxiPW51bGwsRD0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChEKTtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09ZCYmbClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobCk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDt0aHJvdydzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZDogeW91IGNhbiBwcmVsb2FkIGl0IHRvIE1vZHVsZVsid2FzbUJpbmFyeSJdIG1hbnVhbGx5LCBvciBlbWNjLnB5IHdpbGwgZG8gdGhhdCBmb3IgeW91IHdoZW4gZ2VuZXJhdGluZyBIVE1MIChidXQgbm90IEpTKSd9KGUpO2k9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShhKTtyZXR1cm5bbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGksdCksaV19Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBTLGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX0saz1hLm5vRXhpdFJ1bnRpbWV8fCEwLFI9MCxOPXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBoO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9Pmt8fFI+MCxfcHJvY19leGl0PWU9PntoPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7YS5vbkV4aXQ/LihlKTt1PSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e2g9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighdSl0cnl7ZSgpOygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KGgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWMuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LEc9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpzfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gRyl2b2lkIDA9PT1HW3RdP2RlbGV0ZSBlW3RdOmVbdF09R1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LE09W251bGwsW10sW11dLFU9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXI6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxpPU5hTik9Pntmb3IodmFyIGE9dCtpLHI9dDtlW3JdJiYhKHI+PWEpOykrK3I7aWYoci10PjE2JiZlLmJ1ZmZlciYmVSlyZXR1cm4gVS5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9TVtlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/bzpnKShVVEY4QXJyYXlUb1N0cmluZyhpKSk7aS5sZW5ndGg9MH1lbHNlIGkucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQpPT5lP1VURjhBcnJheVRvU3RyaW5nKFEsZSx0KToiIix4PXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXthLm9uQWJvcnQ/LihlKTtnKGU9IkFib3J0ZWQoIitlKyIpIik7dT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHQ9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtpKHQpO3Rocm93IHR9KCIiKSxjOihlLHQsaSk9PlEuY29weVdpdGhpbihlLHQsdCtpKSxsOigpPT57az0hMTtSPTB9LG46KGUsdCk9PntpZihOW2VdKXtjbGVhclRpbWVvdXQoTltlXS5pZCk7ZGVsZXRlIE5bZV19aWYoIXQpcmV0dXJuIDA7dmFyIGk9c2V0VGltZW91dCgoKCk9PntkZWxldGUgTltlXTtjYWxsVXNlckNhbGxiYWNrKCgoKT0+SChlLHBlcmZvcm1hbmNlLm5vdygpKSkpfSksdCk7TltlXT17aWQ6aSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxnOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsdCl7ZT4+PTI7Y29uc3QgaT1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCkscj1hLkhFQVAzMi5zdWJhcnJheShlLGUrdCk7aS5zZXQocil9LGY6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzMoZSx0LGkscil7ZT4+PTI7dD4+PTI7aT4+PTI7Y29uc3Qgcz1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypyKSxuPWEuSEVBUDMyLnN1YmFycmF5KGUsZStyKSxvPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtyKSxnPWEuSEVBUDMyLnN1YmFycmF5KGksaStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtzWzMqZV09bltlXTtzWzMqZSsxXT1vW2VdO3NbMyplKzJdPWdbZV19fSxlOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc180KGUsdCxpLHIscyl7ZT4+PTI7dD4+PTI7aT4+PTI7cj4+PTI7Y29uc3Qgbj1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxvPWEuSEVBUDMyLnN1YmFycmF5KGUsZStzKSxnPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtzKSxjPWEuSEVBUDMyLnN1YmFycmF5KGksaStzKSxsPWEuSEVBUDMyLnN1YmFycmF5KHIscitzKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtuWzQqZV09b1tlXTtuWzQqZSsxXT1nW2VdO25bNCplKzJdPWNbZV07bls0KmUrM109bFtlXX19LG86ZT0+e3ZhciB0LGksYT1RLmxlbmd0aCxyPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+cilyZXR1cm4hMTtmb3IodmFyIHM9MTtzPD00O3MqPTIpe3ZhciBuPWEqKDErLjIvcyk7bj1NYXRoLm1pbihuLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihyLCh0PU1hdGgubWF4KGUsbiksaT02NTUzNixNYXRoLmNlaWwodC9pKSppKSk7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0scDooZSx0KT0+e3ZhciBpPTA7Z2V0RW52U3RyaW5ncygpLmZvckVhY2goKChhLHIpPT57dmFyIHM9dCtpO0VbZSs0KnI+PjJdPXM7KChlLHQpPT57Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpQ1t0KytdPWUuY2hhckNvZGVBdChpKTtDW3RdPTB9KShhLHMpO2krPWEubGVuZ3RoKzF9KSk7cmV0dXJuIDB9LHE6KGUsdCk9Pnt2YXIgaT1nZXRFbnZTdHJpbmdzKCk7RVtlPj4yXT1pLmxlbmd0aDt2YXIgYT0wO2kuZm9yRWFjaCgoZT0+YSs9ZS5sZW5ndGgrMSkpO0VbdD4+Ml09YTtyZXR1cm4gMH0scjplPT41MixqOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxpLGEscil7cmV0dXJuIDcwfSxiOihlLHQsaSxhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPGk7cysrKXt2YXIgbj1FW3Q+PjJdLG89RVt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxRW24rZ10pO3IrPW99RVthPj4yXT1yO3JldHVybiAwfSxzOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2ZvcihsZXQgZT0wO2U8dDtlKyspe2lbNCplXT1pWzQqZSsxXT1pWzQqZSsyXT1yW2VdO2lbNCplKzNdPTI1NX19LGk6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSx0LGkpe2U+Pj0yO3Q+Pj0yO2NvbnN0IHI9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1hLkhFQVAzMi5zdWJhcnJheShlLGUraSksbj1hLkhFQVAzMi5zdWJhcnJheSh0LHQraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109bltlXX19LGQ6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGs6X3Byb2NfZXhpdCxoOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1uW2VdO3NbNCplKzFdPW9bZV07c1s0KmUrMl09Z1tlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSxMPWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSx0KXtMPWUuZXhwb3J0cztjPUwudDt1cGRhdGVNZW1vcnlWaWV3cygpOyFmdW5jdGlvbiBhZGRPbkluaXQoZSl7cC51bnNoaWZ0KGUpfShMLnUpOyFmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGUpe3ktLTthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/Lih5KTtpZigwPT15KXtpZihudWxsIT09dyl7Y2xlYXJJbnRlcnZhbCh3KTt3PW51bGx9aWYoYil7dmFyIHQ9YjtiPW51bGw7dCgpfX19KCk7cmV0dXJuIEx9IWZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koZSl7eSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKHkpfSgpO3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6eH19KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7ZyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9ZD8/PSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCMlFFY1lBTi9mMzhCZjJBRWYzOS9md0YvWUFGL0FHQUNmMzhBWUFGL0FYOWdBMzkvZndCZ0FuOS9BWDlnQkg5L2YzOEFZQU4vZm44QmZtQUZmMzkvZjM4QmYyQUFBR0FDZm44QmYyQURmMzUvQVg5Z0FuNS9BWDVnQlg5L2YzOS9BR0FIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQVg5Z0FBRi9ZQVovZjM5L2YzOEFZQVovZkg5L2YzOEJmMkFDZjN3QmYyQUlmMzkvZjM5L2YzOEFZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmR0FDZjN3QUFuTVRBV0VCWVFBQ0FXRUJZZ0FCQVdFQll3QUZBV0VCWkFBQ0FXRUJaUUFPQVdFQlpnQUhBV0VCWndBREFXRUJhQUFIQVdFQmFRQUZBV0VCYWdBSkFXRUJhd0FDQVdFQmJBQUtBV0VCYlFBS0FXRUJiZ0FXQVdFQmJ3QUVBV0VCY0FBR0FXRUJjUUFHQVdFQmNnQUVBV0VCY3dBREE4MEJ5d0VIQWdVQUJnUUFCUVlFQVFVRURnVVhCZ0lDQWdJQUJoQUdFUVFDQ3d3U0FnVUNCQWNFQWhNREZBTUNBZ1lDR0FNSEJRQUFCQU1CQ2drSkF3QUpCZ0VFQkFVRkV3OEJBUU1BQXdZQ0VBUVVHUUlIQmdNSEJ3RUJBZ0FFQ2dZYUJ3UUVEdzREQmdRQUJBSUNBZ0FHQmdBQkFRRUJBUUVCQVFBQUFBQUFCZ01DQWdJREF3TURBd29LQWdJYkFBTVZDQVFFQUFnREF3a0VDQXNOQUFnQUFRRUJBUUVCQVFFQkRBQUVCQVVKRHdFU0VRRUFBQVlEQXdFRkJRVUZCUVVGQlFFTkFRRUJBUUVCQVFFQkN3UUZBWEFCY25JRkJ3RUJnZ0tBZ0FJR0NBRi9BVUhRNEFVTEJ5QUhBWFFDQUFGMUFFb0JkZ0NwQVFGM0FCUUJlQUVBQVhrQXFBRUJlZ0NkQVFuUkFRRUFRUUVMY1ZyZEFkTUJnUUdCQVRDNUFhNEJxZ0dZQVpjQmxnR1ZBWlFCa3dHU0FaRUJXNDRCalFHTUFZc0JLNG9CaVFHSUFZY0JoZ0dGQVlRQmd3R0NBZHdCMndIYUFka0IyQUhYQVVuV0FkVUJTVW5VQWRJQjBRSFFBYzhCemdITkFjd0J5d0hLQWNRQnVBRzNBYllCdFFHMEFiTUJzZ0d4QWJBQnJ3R3RBYXdCcXdGU1UxVmJVWkFCWEVCWmp3RllUazlYTVN5OEFic0J2UUhGQWNrQnhnSEFBYm9CdmdHL0FjY0J5QUY5d1FIQ0FjTUJXcWNCcGdHZUFhQUJud0dhQWFNQnBBR2xBYUlCb1FHYkFad0JDc210RHNzQmdnSUJBMzhqQUVHUUJHc2lCQ1FBQWtBZ0FFVU5BQUpBQWtBQ1FBSkFJQUZCQVdzT0JBQUJCQUlFQ3lBQVFReHFJUUVNQWdzZ0FFRVFhaUVCSUFCQkJHb2hBQXdCQ3lBQVFSUnFJUUVnQUVFSWFpRUFDeUFCS0FJQUlnVkZEUUFnQWtVTkFDQUFLQUlBSVFZZ0JFRUFRWUFFRUJraUFTQUROZ0tNQkNNQVFhQUJheUlBSkFBZ0FDQUJOZ0tVQVNBQVFmOEROZ0tZQVNBQVFRQkJrQUVRR1NJQVFYODJBa3dnQUVIbkFEWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmxBRnFOZ0pVSUFGQkFEb0FBQ0FBSUFJZ0EwSG9BRUhwQUJCMUlBQkJvQUZxSkFBZ0FVRUFPZ0QvQXlBQklBWWdCUkVEQUFzZ0JFR1FCR29rQUF2UUFnRUZmeUFBQkVBZ0FFRUVheUlES0FJQUlnUWhBU0FESVFJZ0FFRUlheWdDQUNJQUlBQkJmbkVpQUVjRVFDQUNJQUJySWdJb0FnUWlBU0FDS0FJSUlnVTJBZ2dnQlNBQk5nSUVJQUFnQkdvaEFRc2dBeUFFYWlJQUtBSUFJZ01nQUNBRGFrRUVheWdDQUVjRVFDQUFLQUlFSWdRZ0FDZ0NDQ0lBTmdJSUlBQWdCRFlDQkNBQklBTnFJUUVMSUFJZ0FUWUNBQ0FDSUFGQmZIRnFRUVJySUFGQkFYSTJBZ0FnQWdKL0lBSW9BZ0JCQ0dzaUFFSC9BRTBFUUNBQVFRTjJRUUZyREFFTElBQm5JUU1nQUVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FFSC9IMDBOQUJwQlB5QUFRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlBSUFCQlAwOGJDeUlCUVFSMElnQkI0TTBCYWpZQ0JDQUNJQUJCNk0wQmFpSUFLQUlBTmdJSUlBQWdBallDQUNBQ0tBSUlJQUkyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxDOGtDQVFSL0lBRkJBRFlDQUFKQUlBSkZEUUFnQVNBQ2FpRURBa0FnQWtFUVNRUkFJQUFoQVF3QkN3SkFJQUVnQUNBQ2FrOE5BQ0FBSUFOUERRQWdBQ0VCREFFTElBTkJFR3NoQmlBQUlBSkJjSEVpQldvaEFTQURJQVZySVFNRFFDQUdJQVJySUFBZ0JHcjlBQUFBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwUERnME1Dd29KQ0FjR0JRUURBZ0VBL1FzQUFDQUVRUkJxSWdRZ0JVY05BQXNnQWlBRlJnMEJDd0pBSUFKQkEzRWlCa1VFUUNBRklRUU1BUXRCQUNFQUlBVWhCQU5BSUFOQkFXc2lBeUFCTFFBQU9nQUFJQVJCQVdvaEJDQUJRUUZxSVFFZ0FFRUJhaUlBSUFaSERRQUxDeUFGSUFKclFYeExEUUFEUUNBRFFRRnJJQUV0QUFBNkFBQWdBMEVDYXlBQkxRQUJPZ0FBSUFOQkEyc2dBUzBBQWpvQUFDQURRUVJySWdNZ0FTMEFBem9BQUNBQlFRUnFJUUVnQkVFRWFpSUVJQUpIRFFBTEN3dUNCQUVEZnlBQ1FZQUVUd1JBSUFBZ0FTQUNFQUlnQUE4TElBQWdBbW9oQXdKQUlBQWdBWE5CQTNGRkJFQUNRQ0FBUVFOeFJRUkFJQUFoQWd3QkN5QUNSUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDeUFEUVh4eElRUUNRQ0FEUWNBQVNRMEFJQUlnQkVGQWFpSUZTdzBBQTBBZ0FpQUJLQUlBTmdJQUlBSWdBU2dDQkRZQ0JDQUNJQUVvQWdnMkFnZ2dBaUFCS0FJTU5nSU1JQUlnQVNnQ0VEWUNFQ0FDSUFFb0FoUTJBaFFnQWlBQktBSVlOZ0lZSUFJZ0FTZ0NIRFlDSENBQ0lBRW9BaUEyQWlBZ0FpQUJLQUlrTmdJa0lBSWdBU2dDS0RZQ0tDQUNJQUVvQWl3MkFpd2dBaUFCS0FJd05nSXdJQUlnQVNnQ05EWUNOQ0FDSUFFb0FqZzJBamdnQWlBQktBSThOZ0k4SUFGQlFHc2hBU0FDUVVCcklnSWdCVTBOQUFzTElBSWdCRThOQVFOQUlBSWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FrRUVhaUlDSUFSSkRRQUxEQUVMSUFOQkJFa0VRQ0FBSVFJTUFRc2dBMEVFYXlJRUlBQkpCRUFnQUNFQ0RBRUxJQUFoQWdOQUlBSWdBUzBBQURvQUFDQUNJQUV0QUFFNkFBRWdBaUFCTFFBQ09nQUNJQUlnQVMwQUF6b0FBeUFCUVFScUlRRWdBa0VFYWlJQ0lBUk5EUUFMQ3lBQ0lBTkpCRUFEUUNBQ0lBRXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2lBaUFEUncwQUN3c2dBQXN3QVFGL0FrQWdBRVVOQUNBQlJRMEFRUWdnQUNBQmJDSUJFQ2tpQUFSQUlBQkJBQ0FCRUJrYUN5QUFJUUlMSUFJTEVRQWdBRVVFUUVFQUR3dEJDQ0FBRUNrTDhnSUNBbjhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUFnQW1vaUEwRUJheUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FEUVFKcklBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRUVJySUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJCR3NnQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVFocklBRTJBZ0FnQWtFTWF5QUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtFUWF5QUJOZ0lBSUFKQkZHc2dBVFlDQUNBQ1FSaHJJQUUyQWdBZ0FrRWNheUFCTmdJQUlBUWdBMEVFY1VFWWNpSUVheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVNCcklnSkJIMHNOQUFzTElBQUxKd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBSkJBRUVBRUhVZ0EwRVFhaVFBQytnRkFRbC9JQUZGQkVCQkFBOExBbjhnQUVVRVFFRUlJQUVRS1F3QkN5QUJSUVJBSUFBUUZFRUFEQUVMQWtBZ0FVRkhTdzBBSUFBQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUIwRUlhaUVCQWtBQ2Z3SkFJQUJCQkdzaUNpSUVLQUlBSWdVZ0JHb2lBaWdDQUNJSklBSWdDV29pQ0VFRWF5Z0NBRWNFUUNBSUlBRWdCR29pQTBFUWFrOEVRQ0FDS0FJRUlnVWdBaWdDQ0NJQ05nSUlJQUlnQlRZQ0JDQURJQWdnQTJzaUFqWUNBQ0FESUFKQmZIRnFRUVJySUFKQkFYSTJBZ0FnQXdKL0lBTW9BZ0JCQ0dzaUFrSC9BRTBFUUNBQ1FRTjJRUUZyREFFTElBSkJIU0FDWnlJRmEzWkJCSE1nQlVFQ2RHdEI3Z0JxSUFKQi94OU5EUUFhUVQ4Z0FrRWVJQVZyZGtFQ2N5QUZRUUYwYTBISEFHb2lBaUFDUVQ5UEd3c2lBa0VFZENJRlFlRE5BV28yQWdRZ0F5QUZRZWpOQVdvaUJTZ0NBRFlDQ0NBRklBTTJBZ0FnQXlnQ0NDQUROZ0lFUWVqVkFVSG8xUUVwQXdCQ0FTQUNyWWFFTndNQUlBUWdBVFlDQUF3RUN5QURJQWhMRFFFZ0FpZ0NCQ0lCSUFJb0FnZ2lBellDQ0NBRElBRTJBZ1FnQkNBRklBbHFJZ0UyQWdBTUF3c2dCU0FCUVJCcVR3UkFJQVFnQVRZQ0FDQUVJQUZCZkhGcVFRUnJJQUUyQWdBZ0FTQUVhaUlESUFVZ0FXc2lBVFlDQUNBRElBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRZUROQVdvMkFnUWdBeUFFUWVqTkFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFlalZBVUhvMVFFcEF3QkNBU0FCcllhRU53TUFRUUVNQkF0QkFTQUJJQVZORFFFYUMwRUFDd3dCQ3lBRUlBRkJmSEZxUVFScklBRTJBZ0JCQVFzTkFScEJDQ0FIRUNraUFVVU5BQ0FCSUFBZ0J5QUtLQUlBUVFocklnWWdCaUFIU3hzUUZob2dBQkFVSUFFaEJnc2dCZ3NMTXdFQmZ5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRVFJQUFRZVNFQVFRQWdBU2dDRENBQUd3VkJBQXNnQVVFUWFpUUFDN3dFQVFWL0lBSWdBQ2dDTUNJRlRRUkFJQUVnQUNnQ0pDQUNFQllhSUFBZ0FDZ0NKQ0FDYWpZQ0pDQUFJQUFvQWpBZ0FtczJBakFnQUNBQUtRTTRJQUt0ZkRjRE9DQUNEd3NnQUMwQVJFRUVjUVJBSUFFZ0FDZ0NKQ0FGRUJZYUlBQW9BakFoQVNBQVFRQTJBakFnQUNBQklBQW9BaVJxTmdJa0lBQWdBQ2tET0NBQnJYdzNBemdnQlVGL0lBVWJEd3NDUUNBRkJFQWdBU0FBS0FJa0lBVVFGaUVFSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQVNBQVFRQTJBakFnQUNBQUtRTTRJQUd0ZkRjRE9DQUNJQUZySVFJZ0FTQUVhaUVCREFFTElBQWdBQ2dDSUNJSE5nSWtDd0pBQWtBRFFBSkFJQUFvQWdBaEJDQUFLQUlRSVFZQ1FDQUFLQUpBSWdnZ0Frc0VRQ0FBSUFjZ0NDQUVJQVlSQUFBaUJqWUNNQ0FHUVg5R0JFQU1CZ3NnQWlBR1RRMENJQUVnQUNnQ0pDQUdFQllhSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQkF3QkN5QUFJQUVnQWlBRUlBWVJBQUFpQkRZQ01DQUVRWDlHQkVBTUJRc2dBaUFFVFEwRElBQWdBQ2dDSUNJSE5nSWtJQVFoQmdzZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FFclh3M0F6Z2dBU0FFYWlFQklBSWdCR3NoQWlBRklBWnFJUVVNQVFzTElBRWdBQ2dDSkNBQ0VCWWFJQUFnQUNnQ0pDQUNhallDSkNBQUlBQW9BakFnQW1zMkFqQWdBQ0FBS1FNNElBS3RmRGNET0NBQ0lBVnFEd3NnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dCSzE4TndNNElBUWdCV29QQ3lBRFFRUkI2ZmtBUVFBUUV5QUFRUUEyQWpBZ0FDQUFLQUpFUVFSeU5nSkVJQVZCZnlBRkd3c1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRVlhQ3d1REJ3SUxmd0YrSUFBb0FoQWlCMEVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlZSWdKQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQkNBQUlBSkJCR3NpQlRZQ0dDQUFJQUZCQkdvMkFnQU1BUXRCZjBFQUlBQW9BaHdiSVFRZ0FrRUFUQVJBSUFJaEJRd0JDeUFDUVFGeElBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJVVU5BQ0FBSUFaQkFXbzJBZ0FnQmkwQUFDRUJJQUFnQWtFQmF6WUNHQ0FFUWY4QklBTjBRWDl6Y1NBQklBTjBjaUVFQ3lBQUtBSVVJUUVnQUNBRVFSaDJJZ3BCL3dGR05nSVVJQUJCQjBFSUlBRWJJZ0ZCQjBFSUlBUkIvd0Z4SWdaQi93RkdHMm9pQWtFSFFRZ2dCRUVJZGtIL0FYRWlBMEgvQVVZYmFpSUpRUWRCQ0NBRVFSQjJRZjhCY1NJRVFmOEJSaHNnQjJwcUlnZzJBaEFnQUNBQUtRTUlJQU1nQVhRZ0JDQUNkSElnQ2lBSmRISWdCbkt0SUFldGhvUWlERGNEQ0NBSVFSOU5CRUFDUUNBRlFRUk9CRUFnQUNnQ0FDSUJLQUlBSVFJZ0FDQUZRUVJyTmdJWUlBQWdBVUVFYWpZQ0FBd0JDMEVBSVFOQmYwRUFJQUFvQWh3YklRSWdCVUVBVEEwQUlBVkJBWEVnQUNnQ0FDRUJBa0FnQlVFQlJnUkFJQUVoQkF3QkN5QUZRZjcvLy84SGNTRUpRUUFoQmdOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFzZ0FDQUJRUUpxSWdRMkFnQWdBQ0FGUVFGck5nSVlJQUV0QUFFaEFTQUFJQVZCQW1zaUJUWUNHQ0FDUWY4QklBTjBRWDl6Y1NBTElBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFJZ0EwRVFhaUVESUFRaEFTQUdRUUpxSWdZZ0NVY05BQXNMUlEwQUlBQWdCRUVCYWpZQ0FDQUVMUUFBSVFFZ0FDQUZRUUZyTmdJWUlBSkIvd0VnQTNSQmYzTnhJQUVnQTNSeUlRSUxJQUFnQWtFWWRpSUJRZjhCUmpZQ0ZDQUFRUWRCQ0NBS1FmOEJSaHNpQkVFSFFRZ2dBa0gvQVhFaUJrSC9BVVliYWlJRlFRZEJDQ0FDUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2RCQjBFSUlBSkJFSFpCL3dGeElnSkIvd0ZHR3lBSWFtbzJBaEFnQUNBRElBUjBJQUlnQlhSeUlBRWdCM1J5SUFaeXJTQUlyWVlnRElRaUREY0RDQXNnREtjTGF3RUJmeU1BUVlBQ2F5SUZKQUFDUUNBQ0lBTk1EUUFnQkVHQXdBUnhEUUFnQlNBQklBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QVpHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VCNGdBMEdBQW1zaUEwSC9BVXNOQUFzTElBQWdCU0FERUI0TElBVkJnQUpxSkFBTE1RQWdBUUovSUFJb0FreEJBRWdFUUNBQUlBRWdBaEJHREFFTElBQWdBU0FDRUVZTElnQkdCRUFQQ3lBQUlBRnVHZ3NYQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWRCQVJBcUdndWhBUUVFZnlBQlFRQk1CRUJCQUE4TElBQW9BZ3doQWlBQUtBSVFJUU1EUUNBQklRVUNRQ0FERFFBZ0FDQUNRUWgwUVlEK0EzRWlBallDRENBQVFRZEJDQ0FDUVlEK0EwWWJJZ00yQWhBZ0FDZ0NDQ0lCSUFBb0FnUlBEUUFnQUNBQlFRRnFOZ0lJSUFBZ0FpQUJMUUFBY2lJQ05nSU1DeUFBSUFOQkFXc2lBellDRUNBQ0lBTjJRUUZ4SUFWQkFXc2lBWFFnQkhJaEJDQUZRUUZMRFFBTElBUUxIZ0FnQUNnQ0RBUkFJQUJCQURZQ0tBTkFJQUFvQWhoQkFFb05BQXNMQzJvQkEzOGdBQVJBSUFBb0FoZ2lBUVJBSUFBb0FoQWlBZ1IvUVFBaEFRTkFJQUFvQWhnZ0FVRTBiR29vQWl3aUF3UkFJQU1RRkNBQUtBSVFJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUlZQlNBQkN4QVVDeUFBS0FJY0lnRUVRQ0FCRUJRTElBQVFGQXNMa2hVQkQzOENRQUpBSUFBb0FneEZCRUJCQVNFUElBQW9BZ1JCQUVvTkFTQUFLQUlJUVFGS0RRRU1BZ3RCQVNFTklBQW9BZ2hCQUVvTkFDQUFLQUlFUVFKSURRRUxJQUFvQWdBaUNDQU5RUVYwYWlFRUFrQWdBQ2dDRUNJSElBQW9BaFFpQ2s4TkFDQUVJQWRCQm5ScUlRRUNRQ0FLSUFkclFRTnhJZ1pGQkVBZ0J5RUNEQUVMSUFjaEFnTkFJQUVnQWYwQUJBRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRQUlBRWdBZjBBQkJEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1FRSUFGQlFHc2hBU0FDUVFGcUlRSWdBMEVCYWlJRElBWkhEUUFMQ3lBSElBcHJRWHhMRFFBRFFDQUJJQUg5QUFRQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VFQ0FCSUFIOUFBUkEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRVFDQUJJQUg5QUFSUS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFVUNBQklBSDlBQVNBQWYwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCSUFCSUFFZ0FmMEFCSkFCL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VrQUVnQVNBQi9RQUV3QUg5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3VEFBU0FCSUFIOUFBVFFBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJOQUJJQUZCZ0FKcUlRRWdBa0VFYWlJQ0lBcEhEUUFMQ3lBSUlBOUJCWFJxSVFVQ1FDQUFLQUlZSWdZZ0FDZ0NIQ0lMVHcwQUlBVWdCa0VHZEdvaEFRSkFJQXNnQm10QkEzRWlDRVVFUUNBR0lRSU1BUXRCQUNFRElBWWhBZ05BSUFFZ0FmMEFCQUQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UUFJQUVnQWYwQUJCRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dRUUlBRkJRR3NoQVNBQ1FRRnFJUUlnQTBFQmFpSURJQWhIRFFBTEN5QUdJQXRyUVh4TERRQURRQ0FCSUFIOUFBUUEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUFDQUJJQUg5QUFRUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFRUNBQklBSDlBQVJBL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VRQ0FCSUFIOUFBUlEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRVVDQUJJQUg5QUFTQUFmME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQklBQklBRWdBZjBBQkpBQi9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFa0FFZ0FTQUIvUUFFd0FIOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1RBQVNBQklBSDlBQVRRQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCTkFCSUFGQmdBSnFJUUVnQWtFRWFpSUNJQXRIRFFBTEN5QUtJQUFvQWdnaUNTQUFLQUlFSWc0Z0RXc2lBQ0FBSUFsS0d5SUlJQWdnQ2tzYklRd2dCRUVnYWlFQkFuOGdCMFVFUUNBTVJRUkFRUUFoQXlBQkRBSUxJQVFnQlAwQUJBQWdCZjBBQkFBZ0JQMEFCQ0Q5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRQUlBUWdCUDBBQkJBZ0JmMEFCQkFnQlAwQUJERDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FRUVFFaEF5QUVRZUFBYWd3QkN5QUJJQWNpQTBFR2RHb0xJUUlnQXlBTVNRUkFBMEFnQWtFZ2F5SUFJQUQ5QUFRQUlBSkJRR3I5QUFRQUlBTDlBQVFBL2VRQi9ReFZFK00rVlJQalBsVVQ0ejVWRStNKy9lWUIvZVVCL1FzRUFDQUNRUkJySWdBZ0FQMEFCQUFnQWtFd2EvMEFCQUFnQXYwQUJCRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFKQlFHc2hBaUFEUVFGcUlnTWdERWNOQUFzTElBZ2dDazhpRFVVRVFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUQ5REZVVFl6OVZFMk0vVlJOalAxVVRZei85NWdIOTVRSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFQME1WUk5qUDFVVFl6OVZFMk0vVlJOalAvM21BZjNsQWYwTEJBQUxJQXNnRGlBSklBOXJJZ0FnQUNBT1Noc2lEaUFMSUE1Skd5RUpJQVZCSUdvaEFpQUpBbjhnQmtVRVFDQUpSUVJBSUFJaEEwRUFEQUlMSUFVZ0JmMEFCQUFnQlAwQUJBQWdCZjBBQkNEOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UUFJQVVnQmYwQUJCQWdCUDBBQkJBZ0JmMEFCREQ5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRUUlBVkI0QUJxSVFOQkFRd0JDeUFDSUFaQkJuUnFJUU1nQmdzaUFFc0VRQU5BSUFOQklHc2lDQ0FJL1FBRUFDQURRVUJxL1FBRUFDQUQvUUFFQVAza0FmME1kZ1ppUDNZR1lqOTJCbUkvZGdaaVAvM21BZjNsQWYwTEJBQWdBMEVRYXlJSUlBajlBQVFBSUFOQk1HdjlBQVFBSUFQOUFBUVEvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFQUNBRFFVQnJJUU1nQUVFQmFpSUFJQWxIRFFBTEN5QUxJQTVOSWdoRkJFQWdBMEVnYXlJQUlBRDlBQVFBSUFOQlFHcjlBQVFBL1F4MkJ1SS9kZ2JpUDNZRzRqOTJCdUkvL2VZQi9lVUIvUXNFQUNBRFFSQnJJZ0FnQVAwQUJBQWdBMEV3YS8wQUJBRDlESFlHNGo5MkJ1SS9kZ2JpUDNZRzRqLzk1Z0g5NVFIOUN3UUFDd0pBSUFkRkJFQWdERVVFUUVFQUlRY01BZ3NnQkNBRS9RQUVBQ0FGL1FBRUFDQUUvUUFFSVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJBQWdCQ0FFL1FBRUVDQUYvUUFFRUNBRS9RQUVNUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkJBZ0JFSGdBR29oQVVFQklRY01BUXNnQVNBSFFRWjBhaUVCQ3lBSElBeEpCRUFEUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBQWdBZjBBQkFEOTVBSDlESzRCV1QydUFWazlyZ0ZaUGE0QldUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQUNBQi9RQUVFUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0FVRkFheUVCSUFkQkFXb2lCeUFNUncwQUN3c2dEVVVFUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBRDlESzRCMlQydUFkazlyZ0haUGE0QjJUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQVAwTXJnSFpQYTRCMlQydUFkazlyZ0haUGYzbUFmM2tBZjBMQkFBTEFrQWdCa1VFUUNBSlJRUkFRUUFoQmd3Q0N5QUZJQVg5QUFRQUlBVDlBQVFBSUFYOUFBUWcvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFQUNBRklBWDlBQVFRSUFUOUFBUVFJQVg5QUFRdy9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VFQ0FGUWVBQWFpRUNRUUVoQmd3QkN5QUNJQVpCQm5ScUlRSUxJQVlnQ1VrRVFBTkFJQUpCSUdzaUFDQUEvUUFFQUNBQ1FVQnEvUUFFQUNBQy9RQUVBUDNrQWYwTWN3YkxQM01HeXo5ekJzcy9jd2JMUC8zbUFmM2tBZjBMQkFBZ0FrRVFheUlBSUFEOUFBUUFJQUpCTUd2OUFBUUFJQUw5QUFRUS9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FDUVVCcklRSWdCa0VCYWlJR0lBbEhEUUFMQ3lBSURRQWdBa0VnYXlJQUlBRDlBQVFBSUFKQlFHcjlBQVFBL1F4ekJrdEFjd1pMUUhNR1MwQnpCa3RBL2VZQi9lUUIvUXNFQUNBQ1FSQnJJZ0FnQVAwQUJBQWdBa0V3YS8wQUJBRDlESE1HUzBCekJrdEFjd1pMUUhNR1MwRDk1Z0g5NUFIOUN3UUFDd3RkQVFSL0lBQUVRQ0FBS0FJVUlnRWdBQ2dDRUNJQ2JBUkFBMEFnQUNnQ0dDQURRUUowYWlnQ0FDSUVCRUFnQkJBVUlBQW9BaEFoQWlBQUtBSVVJUUVMSUFOQkFXb2lBeUFCSUFKc1NRMEFDd3NnQUNnQ0dCQVVJQUFRRkFzTGhRRUJBbjhDUUFKQUlBQW9BZ1FpQXlBQUtBSUFJZ1JIQkVBZ0FDZ0NDQ0VEREFFTElBQWdBMEVLYWlJRU5nSUVJQUFvQWdnZ0JFRUNkQkFiSWdORkRRRWdBQ0FETmdJSUlBQW9BZ0FoQkFzZ0F5QUVRUUowYWlBQk5nSUFJQUFnQkVFQmFqWUNBRUVCRHdzZ0FDZ0NDQkFVSUFCQ0FEY0NBQ0FDUVFGQnhpOUJBQkFUUVFBTGt3UUNCbjhDZmdKQUFrQURRQ0FBSUFCQkFXdHhEUUVnQVVGSFN3MEJJQUJCQ0NBQVFRaExJZ2NiSVFCQjZOVUJLUU1BSWdnQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUFVSC9BRTBFUUNBQlFRTjJRUUZyREFFTElBRm5JUU1nQVVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlESUFOQlAwOGJDeUlEcllnaUNVSUFVZ1JBQTBBZ0NTQUplaUlJaUNFSkFuNGdBeUFJcDJvaUEwRUVkQ0lFUWVqTkFXb29BZ0FpQWlBRVFlRE5BV29pQlVjRVFDQUNJQUFnQVJCRklnUU5CaUFDS0FJRUlnUWdBaWdDQ0NJR05nSUlJQVlnQkRZQ0JDQUNJQVUyQWdnZ0FpQUZLQUlFTmdJRUlBVWdBallDQkNBQ0tBSUVJQUkyQWdnZ0EwRUJhaUVESUFsQ0FZZ01BUXRCNk5VQlFlalZBU2tEQUVKK0lBT3RpWU0zQXdBZ0NVSUJoUXNpQ1VJQVVnMEFDMEhvMVFFcEF3QWhDQXRCUHlBSWVhZHJJUVVDUUNBSVVBUkFRUUFoQWd3QkN5QUZRUVIwSWdSQjZNMEJhaWdDQUNFQ0lBaENnSUNBZ0FSVURRQkI0d0FoQXlBQ0lBUkI0TTBCYWlJR1JnMEFBMEFnQTBVTkFTQUNJQUFnQVJCRklnUU5CQ0FEUVFGcklRTWdBaWdDQ0NJQ0lBWkhEUUFMQ3lBQklBQkJNR3BCTUNBSEcyb1FlZzBBQ3lBQ1JRMEFJQUlnQlVFRWRFSGd6UUZxSWdOR0RRQURRQ0FDSUFBZ0FSQkZJZ1FOQWlBQ0tBSUlJZ0lnQTBjTkFBc0xRUUFoQkFzZ0JBdVdJd0luZndON0FrQWdBeUFBS0FJQUlnbExEUUFnQVNBRFR3MEFJQUVnQ1U4TkFDQUVJQUFvQWdRaUNVc05BQ0FDSUFSUERRQWdBaUFKVHcwQUlBVkJIR3NoSnlBQUtBSUlJaGxCQW5RaEVTQUhRUUowSVE4Z0JrRUNkQ0VmSUFWQkJHc2hLQ0FDSUFBb0FneHVJUjRnR1NBWklBRWdHVzRpS1d3Z0FXdHFJU29nQmtFSVJ5RWpJQUloSFFOQUlBQW9BZ3dpQ1NFS0lBSWdIVVlFUUNBSklBSWdDWEJySVFvTElBb2dCQ0FkYXlJTUlBb2dERWtiSWhOQmZIRWhHeUFUUVFOeElSWWdFMEY0Y1NFcklCTkJCM0VoSkNBVFFRRnJJUm9nR1NBSlFRSjBJQXBCQW5SclFRUnFiQ0VnSUFaQkFrWWdFMEVCUm5FaExDQUpJQXBySUJsc0lTVWdKeUFQSUIwZ0Ftc2lER3dpQ1dvaEppQUpJQ2hxSVMwZ0JTQUphaUV1SUFVZ0J5QU1iRUVDZEdvaEhDQXBJU0VnQVNFWUEwQWdLaUFaSUFFZ0dFWWJJZ3dnQXlBWWF5SUpJQWtnREVzYklSQWdHU0FNYXlFSklDRkJBblFpRFNBQUtBSVlJQUFvQWhBZ0hteEJBblJxYWlnQ0FDRVNBa0FDUUNBSUJFQUNRQUpBQWtBQ1FBSkFJQklFUUNBU0lDVkJBblJxSUFsQkFuUnFJUW9nR0NBQmF5RU5JQVpCQVVZTkJDQWNJQVlnRFd4QkFuUnFJUXNnRUVFQlJnMERJQ3dOQWlBakRRRWdFRUVIVFEwQklCTkZEUWdnSmlBTklCOXNhaUFRUVFWMGFpRVZJQklnSUNBUVFRSjBhaUFNUVFKMGEyb2hJaUFRUVh4eElRMUJBQ0VTREFVTElBWkJBVWNFUUNBVFJRMElJQkJCZkhFaERTQVFRUU54SVF3Z0hDQVlJQUZySUFac1FRSjBhaUVMUVFBaEVpQVFRUUZyUVFOSklSUURRQUpBSUJCRkRRQkJBQ0VKUVFBaENrRUFJUTRnRkVVRVFBTkFJQXNnQmlBS2JFRUNkR3BCQURZQ0FDQUxJQXBCQVhJZ0JteEJBblJxUVFBMkFnQWdDeUFLUVFKeUlBWnNRUUowYWtFQU5nSUFJQXNnQ2tFRGNpQUdiRUVDZEdwQkFEWUNBQ0FLUVFScUlRb2dEa0VFYWlJT0lBMUhEUUFMQ3lBTVJRMEFBMEFnQ3lBR0lBcHNRUUowYWtFQU5nSUFJQXBCQVdvaENpQUpRUUZxSWdrZ0RFY05BQXNMSUFzZ0Qyb2hDeUFUSUJKQkFXb2lFa2NOQUFzTUNBc2dFMFVOQnlBUVFRSjBJUXdnSENBWUlBRnJRUUowYWlFTFFRQWhDU0FhUVFkUEJFQURRQ0FMUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxSVFzZ0NVRUlhaUlKSUN0SERRQUxDMEVBSVFrZ0pFVU5Cd05BSUF0QkFDQU1FQmtnRDJvaEN5QUpRUUZxSWdrZ0pFY05BQXNNQndzZ0UwVU5CaUFRUVh4eElSUWdFRUVEY1NFU1FRQWhEU0FRUVFGclFRTkpJUmNNQlF0QkFDRUpJQkJCZkhFaURnUkFBMEFnQ3lBSlFRTjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBbEJCR29pQ1NBT1NRMEFDd3NnQ1NBUVR3MEZBa0FnRUNBSmF5SVVRUTlORFFBZ0xpQU5JQjlzSWcxcUlBbEJBM1JxSUJJZ0lHb2lEaUFRSUF4clFRSjBha2tFUUNBT0lBa2dER3RCQW5ScUlBMGdMV29nRUVFRGRHcEpEUUVMSUFvZ0NVRUNkR29oRFNBSi9SSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBRDlyZ0VoTUNBSklCUkJmSEVpREdvaENVRUFJUTREUUNBTElEQkJBLzJyQVNJeC9Sc0FhaUFOSUE1QkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQU1SdzBBQ3lBTUlCUkdEUVlMUVFBaERDQUpJUTRnRUNBSmEwRURjU0lOQkVBRFFDQUxJQTVCQTNScUlBb2dEa0VDZEdvb0FnQTJBZ0FnRGtFQmFpRU9JQXhCQVdvaURDQU5SdzBBQ3dzZ0NTQVFhMEY4U3cwRkEwQWdDeUFPUVFOMGFpQUtJQTVCQW5ScUtBSUFOZ0lBSUFzZ0RrRUJhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRUNhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRURhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUE1QkJHb2lEaUFRUncwQUN3d0ZDeUFUUlEwRVFRQWhDU0FhUVFOUEJFQURRQ0FMSUFvb0FnQTJBZ0FnQ3lBUGFpSU1JQW9nRVdvaURTZ0NBRFlDQUNBTUlBOXFJZ3dnRFNBUmFpSU5LQUlBTmdJQUlBd2dEMm9pRENBTklCRnFJZzBvQWdBMkFnQWdEU0FSYWlFS0lBd2dEMm9oQ3lBSlFRUnFJZ2tnRzBjTkFBc0xRUUFoQ1NBV1JRMEVBMEFnQ3lBS0tBSUFOZ0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFRTElCd2dEVUVDZEdvaEN5QVFRUVJIQkVBZ0UwVU5CQ0FRUVFKMElRbEJBQ0VPSUJwQkEwOEVRQU5BSUFzZ0NpQUpFQllnQ2lBUmFpSU5JQkZxSWdzZ0VXb2lFaUFSYWlFS0lBOXFJQTBnQ1JBV0lBOXFJQXNnQ1JBV0lBOXFJQklnQ1JBV0lBOXFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJBTkFJQXNnQ2lBSkVCWWdDaUFSYWlFS0lBOXFJUXNnRGtFQmFpSU9JQlpIRFFBTERBUUxJQk5GRFFOQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0Qyb2lEQ0FLSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRENBUGFpSU1JQTBnRVdvaURmMEFBZ0Q5Q3dJQUlBMGdFV29oQ2lBTUlBOXFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkF3TkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFNTEEwQkJBQ0VKSUEwRVFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBWElpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBM0lpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRFVrTkFBc0xBa0FnQ1NBUVR3MEFBa0FDUUNBUUlBbHJJaFJCQjAwTkFDQUxJQWxCQlhScUlDSWdFU0FTYkdwSkJFQWdDaUFKUVFKMGFpQVZJQThnRW14cVNRMEJDeUFKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhNQ0FKSUJSQmZIRWlGMm9oREVFQUlRNERRQ0FMSURCQkJmMnJBU0l4L1JzQWFpQUtJQWtnRG1wQkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQVhSdzBBQ3lBVUlCZEhEUUVNQWdzZ0NTRU1DMEVBSVE0Z0VDQU1JZ2xyUVFOeEloUUVRQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUpRUUZxSVFrZ0RrRUJhaUlPSUJSSERRQUxDeUFNSUJCclFYeExEUUFEUUNBTElBbEJCWFJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDeUFKUVFGcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFKcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFOcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDVUVFYWlJSklCQkhEUUFMQ3lBS0lCRnFJUW9nQ3lBUGFpRUxJQk1nRWtFQmFpSVNSdzBBQ3d3Q0N5QVNSUVJBUVFFZ0FDZ0NDQ0FBS0FJTWJFRUNkQkFYSWhKRkJFQkJBQThMSUFBb0FoZ2dBQ2dDRUNBZWJFRUNkR29nRFdvZ0VqWUNBQXNnRWlBbFFRSjBhaUFKUVFKMGFpRUxJQmdnQVdzaENRSkFJQVpCQVVjRVFDQWNJQVlnQ1d4QkFuUnFJUW9nRUVFQlJ3UkFBa0FnSXcwQUlCQkJCMDBOQUNBVFJRMEZJQ1lnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM4Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBQWtBZ0VDQUpheUlYUVFkTkRRQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVNRUkFJQW9nQ1VFRmRHb2dFaUF2SUF3Z0VXeHFha2tOQVFzZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRBZ0NTQVhRWHh4SWhWcUlRMUJBQ0VPQTBBZ0N5QUpJQTVxUVFKMGFpQUtJREJCQmYyckFTSXgvUnNEYWlBS0lESDlHd0pxSUFvZ01mMGJBV29nQ2lBeC9Sc0FhdjFjQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlERDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTUNBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUncwQkRBSUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CUXNnRTBVTkJDQVFRWHh4SVJRZ0VFRURjU0VTUVFBaERTQVFRUUZyUVFOSklSY01BZ3NnRTBVTkEwRUFJUWtnR2tFRFR3UkFBMEFnQ3lBS0tBSUFOZ0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaEN5QU5JQTlxSVFvZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5Bd05BSUFzZ0NpZ0NBRFlDQUNBTElCRnFJUXNnQ2lBUGFpRUtJQWxCQVdvaUNTQVdSdzBBQ3d3REN5QWNJQWxCQW5ScUlRb2dFRUVFUndSQUlCTkZEUU1nRUVFQ2RDRUpRUUFoRGlBYVFRTlBCRUFEUUNBTElBb2dDUkFXSUFvZ0Qyb2lEU0FQYWlJTElBOXFJaElnRDJvaENpQVJhaUFOSUFrUUZpQVJhaUFMSUFrUUZpQVJhaUFTSUFrUUZpQVJhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRTURRQ0FMSUFvZ0NSQVdJQW9nRDJvaENpQVJhaUVMSUE1QkFXb2lEaUFXUncwQUN3d0RDeUFUUlEwQ1FRQWhDU0FhUVFOUEJFQURRQ0FMSUFyOUFBSUEvUXNDQUNBTElCRnFJZ3dnQ2lBUGFpSU4vUUFDQVAwTEFnQWdEQ0FSYWlJTUlBMGdEMm9pRGYwQUFnRDlDd0lBSUF3Z0VXb2lEQ0FOSUE5cUlnMzlBQUlBL1FzQ0FDQU5JQTlxSVFvZ0RDQVJhaUVMSUFsQkJHb2lDU0FiUncwQUN3dEJBQ0VKSUJaRkRRSURRQ0FMSUFyOUFBSUEvUXNDQUNBS0lBOXFJUW9nQ3lBUmFpRUxJQWxCQVdvaUNTQVdSdzBBQ3d3Q0N3TkFBa0FnRUVVTkFFRUFJUTVCQUNFSlFRQWhEQ0FYUlFSQUEwQWdDeUFKUVFKMGFpQUtJQVlnQ1d4QkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVlFRSjBhaUFLSUFZZ0ZXeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVZRUUowYWlBS0lBWWdGV3hCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlWUVFKMGFpQUtJQVlnRld4QkFuUnFLQUlBTmdJQUlBbEJCR29oQ1NBTVFRUnFJZ3dnRkVjTkFBc0xJQkpGRFFBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0NVRUJhaUVKSUE1QkFXb2lEaUFTUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBMUJBV29pRFVjTkFBc01BUXNEUUFKQUlCQkZEUUJCQUNFT1FRQWhDVUVBSVF3Z0YwVUVRQU5BSUFzZ0JpQUpiRUVDZEdvZ0NpQUpRUUowYWlnQ0FEWUNBQ0FMSUFsQkFYSWlGU0FHYkVFQ2RHb2dDaUFWUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpRlNBR2JFRUNkR29nQ2lBVlFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaUZTQUdiRUVDZEdvZ0NpQVZRUUowYWlnQ0FEWUNBQ0FKUVFScUlRa2dERUVFYWlJTUlCUkhEUUFMQ3lBU1JRMEFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQWxCQVdvaENTQU9RUUZxSWc0Z0VrY05BQXNMSUFvZ0VXb2hDaUFMSUE5cUlRc2dEVUVCYWlJTklCTkhEUUFMQ3lBaFFRRnFJU0VnRUNBWWFpSVlJQU5KRFFBTElCNUJBV29oSGlBVElCMXFJaDBnQkVrTkFBc0xRUUVMR1FFQ2ZpQUFLUU1BSWdJZ0FTa0RBQ0lEVlNBQ0lBTlRhd3UwTmdVbmZ3OStBWHNCZlFGOEl3QkIwQUJySWc4a0FDQVBRWkQvQXpZQ0tDQUFLQUtFQVNBQUtBS0FBV3doR0FKL0FrQUNRQUpBSUFBb0FnZ2lDMEVJUndSQVFRQWdDMEdBQWtjTkJCb2dEMEhaL3dNMkFpZ01BUXNnQUMwQVhFRUJjUTBBSUJoQmZIRWhEU0FQUWMwQWFpRW9JQTlCekFCcUlTa2dEMEhJQUdvaE1FR1Evd01oQ3dKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQ2dDVkNJTVJRMEFJQXdnQUNnQ1VDSU9UUTBBSUFBb0FsZ2dEa0VEZEdvcEF3QWhNaUFBSUE1QkFXbzJBbEFnQ1NBeUlBb1FNRVVFUUNBS1FRRkJteXBCQUJBVFFRQU1Ed3NnQ1NBQUtBSVFRUUlnQ2hBZFFRSkhCRUFnQ2tFQlFZTVRRUUFRRTBFQURBOExJQUFvQWhBZ0QwRW9ha0VDRUJVZ0R5Z0NLRUdRL3dOR0RRRWdDa0VCUWNRZlFRQVFFMEVBREE0TElBdEJrLzhEUmcwQkN3TkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzFBRVFDQUFRY0FBTmdJSURBSUxJQWtnQUNnQ0VFRUNJQW9RSFVFQ1J3UkFJQXBCQVVHREUwRUFFQk5CQUF3T0N5QUFLQUlRSUE5QkpHcEJBaEFWSUE4b0FpUkJBVTBFUUNBS1FRRkIreTVCQUJBVFFRQU1EZ3NDUUNBUEtBSW9RWUNCQWtjTkFDQUpLUU1JSWpKUUJINUNBQVVnTWlBSktRTTRmUXRDQUZJTkFDQUFRY0FBTmdJSURBSUxBa0FnQUNnQ0NDSVRRUkJ4UlFSQUlBOG9BaVFoQ3d3QkN5QVBLQUlrSVFzZ0FDZ0NHQ0lPUlEwQUlBdEJBbW9pRENBT1N3UkFJQXBCQVVHTndRQkJBQkFUUVFBTUR3c2dBQ0FPSUF4ck5nSVlDeUFQSUF0QkFtc2lFRFlDSkVHZ3dnRWhEQ0FQS0FJb0lRNERRQ0FNSWdzb0FnQWlHd1JBSUF0QkRHb2hEQ0FPSUJ0SERRRUxDeUFMS0FJRUlCTnhSUVJBSUFwQkFVSHdLVUVBRUJOQkFBd09Dd0pBSUFBb0FoUWdFRThFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l5VUFSK1FnQUZJRElnQ1NrRE9IMExJQkN0VXdSQUlBcEJBVUdBTFVFQUVCTkJBQXdQQ3lBQUtBSVFJQThvQWlRUUd5SU1SUVJBSUFBb0FoQVFGQ0FBUWdBM0F4QWdDa0VCUWNnbVFRQVFFMEVBREE4TElBQWdERFlDRUNBQUlBOG9BaVFpRURZQ0ZBc2dDU0FNSUJBZ0NoQWRJZ3dnRHlnQ0pFY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dDeWdDQ0NJTFJRUkFJQXBCQVVHbzJ3QkJBQkFUUVFBTURnc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQThnRHlnQ0tEWUNJQ0FLUVFGQjR1d0FJQTlCSUdvUUUwRUFEQTRMSUFrcEF6Z2hNaUFQS0FJa0lSSWdBQ2dDNEFFaUV5Z0NLQ0lRSUFBb0F1UUJJZ3hCS0d3aURtb2lGU2dDRkNJZVFRRnFJaHdnRlNnQ0hDSUxTd1JBSUJVQ2Z5QUxzME1BQU1oQ2tpSkNRd0FBZ0U5ZElFSkRBQUFBQUdCeEJFQWdRcWtNQVF0QkFBc2lDellDSENBVktBSVlJQXRCR0d3UUd5RUxJQk1vQWlnaUVDQU9haUVWSUF0RkRRTWdGU0FMTmdJWUlCVW9BaFFpSGtFQmFpRWNDeUFPSUJCcUloTW9BaGdnSGtFWWJHb2lDeUFTUVFScU5nSVFJQXNnTXFjZ0VtdEJCR3NpRHF3M0F3Z2dDeUFiT3dFQUlCTWdIRFlDRkFKQUlCdEJrUDhEUncwQUFrQWdFeWdDRUNJTVJRMEFJQk1vQWd3aUN5QVRLQUlFVHcwQUlBd2dDMEVZYkdvZ0RxMDNBd0FMSUFrcEF6aW5JQThvQWlSclFRUnJyU0l5SUFBcEF6QlhEUUFnQUNBeU53TXdDeUFBTFFCY1FRUnhCRUFnQ1NBQU5RSVlJQW9nQ1NnQ0tCRUlBQ0FBTlFJWVVnUkFJQXBCQVVHREUwRUFFQk5CQUF3UEN5QVBRWlAvQXpZQ0tBd0NDeUFKSUFBb0FoQkJBaUFLRUIxQkFrY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dBQ2dDRUNBUFFTaHFRUUlRRlNBUEtBSW9RWlAvQTBjTkFBc0xBa0FnQ1NrRENDSXlVQVIrUWdBRklESWdDU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUVMSUFBdEFGd2lDMEVFY1VVRVFDQUFLQUxrQVVHTUxHd2hEQ0FBS0FLMEFRSkFBa0FnQUNnQ09BUkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzZjaEVBd0JDeUFBS0FJWUloQkJBa2tOQVFzZ0FDQVFRUUpySWhBMkFoZ0xJQXhxSVJZZ0VFVU5BeUFKS1FNSUlqSlFCSDVDQUFVZ01pQUpLUU00ZlFzZ0VLMVRCRUFnQUNnQzBBRUVRQ0FLUVFGQnJTMUJBQkFUUVFBTUR3c2dDa0VDUWEwdFFRQVFFd3NnQUNnQ0dDSU9RWDVQQkVBZ0NrRUJRYU1MUVFBUUUwRUFEQTRMQWtBZ0ZpZ0MzQ3NpREFSQUlCWW9BdUFySWd0QmZTQU9hMHNFUUNBS1FRRkJsZ2xCQUJBVFFRQU1FQXNnRENBTElBNXFRUUpxRUJzaUN3UkFJQllnQ3pZQzNDc01CZ3NnRmlnQzNDc1FGQ0FXUVFBMkF0d3JEQUVMSUJZZ0RrRUNhaEFZSWdzMkF0d3JJQXNOQkFzZ0NrRUJRZnN2UVFBUUUwRUFEQTBMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JjREFNTElBOG9BaWdoQ3d3RUN5QVZLQUlZRUJRZ0V5Z0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVSHlIVUVBRUJOQkFBd0tDeUFBS0FMZ0FTSWJLQUlvSWhVZ0FDZ0M1QUVpRTBFb2JDSVNhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJelFnSjlJakkzQXdnZ0N5QXpJQUExQWhoOE53TVFJQUFvQWhnaERnSkFJQXdvQWhRaUhrRUJhaUljSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0pEQUFDQVQxMGdRa01BQUFBQVlIRUVRQ0JDcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQWJJUXdnR3lnQ0tDSVZJQkpxSVFzZ0RFVU5CU0FMSUF3MkFoZ2dDeWdDRkNJZVFRRnFJUndMSUF3Z0hrRVliR29pQ3lBT1FRSnFOZ0lRSUFzZ01zUTNBd2dnQzBHVC93TTdBUUFnRWlBVmFpQWNOZ0lVSUFBQ2Z5QVFCRUJCQ0NBSklCWW9BdHdySUJZb0F1QXJhaUFBS0FJWUlBb1FIU0lRSUFBb0FoaEdEUUVhUWNBQUlCQkJmMGNOQVJvZ0NrRUJRWU1UUVFBUUUwRUFEQXNMUVFBaEVFSEFBRUVJSUFBb0FoZ2JDellDQ0NBV0lCWW9BdUFySUJCcU5nTGdLd0pBSUFBdEFGeEJBWEVOQUNBQUtBSXNJZ3RCQUVnTkFDQUFLQUxrQVNJTUlBdEhEUUFnQUNnQ1RBMEFJQWtvQWh4QkFrWU5BQ0FBS0FLMEFTQU1RWXdzYkdvaUN5Z0MyQ3NpRGlBQUtBTGdBU2dDS0NBTVFTaHNhaUlNS0FJRVJ3MEFJQTRnQ3lnQzFDdEJBV29pQzAwTkFBSkFJQXdvQWhBZ0MwRVliR29wQXdBaU1pQUpLUU00VVEwQUlBa2dNaUFLRURBTkFDQUtRUUZCbXlwQkFCQVRRUUFNQ3dzZ0NTQUFLQUlRUVFJZ0NoQWRRUUpIQkVBZ0NrRUJRWU1UUVFBUUUwRUFEQXNMSUFBb0FoQWdEMEVvYWtFQ0VCVWdEeWdDS0VHUS93TkdEUUlnQ2tFQlFjUWZRUUFRRTBFQURBb0xJQUF0QUZ3aUMwRUpjVUVCUncwQUlBQWdDMEVJY2pvQVhDQUFLQUswQVNBQUtBTGtBU0lPUVl3c2JHb29BdGdyUVFGR0RRQWdDU2dDSEVFQ1JnMEFJQWtwQXpnaU1rSi9VUTBBQWtBRFFFRUJJUXdnQ1NBUFFjWUFhaUlMUVFJZ0NoQWRRUUpIRFFFZ0N5QVBRVUJyUVFJUUZTQVBLQUpBUVpEL0EwY05BVUdERXlFUUlBa2dDMEVDSUFvUUhVRUNSdzBKSUFzZ0QwRThha0VDRUJVZ0R5Z0NQRUVLUndSQVFmc3VJUkFNQ2dzZ0QwRUlOZ0k4SUFrZ0QwSEdBR3BCQ0NBS0VCMGlDeUFQS0FJOFJ3MEpJQXRCQ0VjRVFFR3FIeUVRREFvTElBOUJ4Z0JxSUE5Qk9HcEJBaEFWSURBZ0QwRTBha0VFRUJVZ0tTQVBRVEJxUVFFUUZTQW9JQTlCTEdwQkFSQVZJQTRnRHlnQ09FY0VRQ0FQS0FJMElndEJEa2tOQWlBUElBdEJER3NpQ3pZQ05DQUpJQXV0SUFvZ0NTZ0NLQkVJQUNBUE5RSTBVUTBCREFJTEN5QVBLQUl3SUE4b0FpeEhJUXdMSUFrZ01pQUtJQWtvQWl3UkRBQkZEUWdnREEwQUlBQWdBQzBBWEVIdUFYRkJFSEk2QUZ3Q1FDQVlSUTBBSUFBb0FyUUJJUlpCQUNFTElCaEJCRThFUUFOQUlCWWdDMEdNTEd4cUloNG9BdGdySWh6OUVTQVdJQXRCQVhKQmpDeHNhaUliS0FMWUt5SVYvUndCSUJZZ0MwRUNja0dNTEd4cUloSW9BdGdySWhQOUhBSWdGaUFMUVFOeVFZd3NiR29pRGlnQzJDc2lEUDBjQS8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNElrSDlHd0JCQVhFRVFDQWVRZGdyYWlBY1FRRnFOZ0lBQ3lCQi9Sc0JRUUZ4QkVBZ0cwSFlLMm9nRlVFQmFqWUNBQXNnUWYwYkFrRUJjUVJBSUJKQjJDdHFJQk5CQVdvMkFnQUxJRUg5R3dOQkFYRUVRQ0FPUWRncmFpQU1RUUZxTmdJQUN5QUxRUVJxSWdzZ0RVY05BQXNnR0NBTklndEdEUUVMQTBBZ0ZpQUxRWXdzYkdvaURpZ0MyQ3NpREFSQUlBNUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkFXb2lDeUFZUncwQUN3c2dDa0VDUWFiR0FFRUFFQk1MSUFBdEFGeEJBWEVOQUNBSklBQW9BaEJCQWlBS0VCMUJBa2NFUUFKQUlBQW9BdVFCUVFGcUlCaEhEUUFnR0VVTkFDQUFLQUswQVNFTlFRQWhDd05BSUEwZ0MwR01MR3hxSWdrb0F0UXJSUVJBSUFrb0F0Z3JSUTBJQ3lBTFFRRnFJZ3NnR0VjTkFBc0xJQXBCQVVHREUwRUFFQk5CQUF3SkN5QUFLQUlRSUE5QktHcEJBaEFWQ3lBUEtBSW9JUXNnQUMwQVhFRUJjUTBBSUF0QjJmOERSdzBCQ3dzZ0MwSFovd05IRFFJZ0FDZ0NDRUdBQWtZTkFpQUFRWUFDTmdJSUlBQkJBRFlDNUFFTUFnc2dDeWdDR0JBVUlCc29BaWdnRTBFb2JHb2lBRUVBTmdJY0lBQkNBRGNDRkNBS1FRRkI4aDFCQUJBVFFRQU1CQXNnRHlBTE5nSVFJQXBCQkVIWDFRQWdEMEVRYWhBVElBQWdDellDNUFFZ0QwSFovd00yQWlnZ0FFR0FBallDQ0FzZ0FDZ0M1QUVoQ3lBQUtBSzBBU0VKQWtBQ1FDQUFMUUJjUVFGeERRQUNRQUpBSUFzZ0dFOE5BQ0FKSUF0QmpDeHNhaUVRQTBBZ0VDZ0MzQ3NOQVNBQUlBdEJBV29pQ3pZQzVBRWdFRUdNTEdvaEVDQUxJQmhIRFFBTERBRUxJQXNnR0VjTkFRc2dDRUVBTmdJQURBRUxBa0FDUUNBS1FRRWdDU0FMUVl3c2JHb2lFaWdDdENnRWYwR1FOUVVnRWkwQWlDeEJBbkZGRFFJQ1FDQVNLQUtvS0NJT1JRUkFRUUFoREF3QkN5QVNLQUtzS0NFSlFRQWhERUVBSVFzZ0RrRUVUd1JBSUE1QmZIRWhDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCUVFBaEVBTkFJQWtnRUVFRGRHb2lEVUVjYWlBTlFSUnFJQTFCREdvZ0RmMWNBZ1Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdRZjJ1QVNGQklCQkJCR29pRUNBTFJ3MEFDeUJCSUVFZ1FmME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMnVBU0pCSUVFZ1FmME5CQVVHQndBQkFnTUFBUUlEQUFFQ0EvMnVBZjBiQUNFTUlBc2dEa1lOQVFzRFFDQUpJQXRCQTNScUtBSUVJQXhxSVF3Z0MwRUJhaUlMSUE1SERRQUxDeUFTSUF3UUdDSUpOZ0swS0NBSkRRRkJoQjhMUVFBUUV5QUtRUUZCMWo1QkFCQVRRUUFNQlFzZ0VpQU1OZ0s4S0NBU0tBS3NLQ0VKSUJJb0FxZ29JZ3dFUUVFQUlSQkJBQ0VMQTBBZ0NTQUxRUU4wSWhOcUlnNG9BZ0FpRFFSQUlCSW9BclFvSUJCcUlBMGdEaWdDQkJBV0dpQVNLQUtzS0NBVGFpSUpLQUlFSUFrb0FnQVFGQ0FTS0FLc0tDSUpJQk5xUWdBM0FnQWdFR29oRUNBU0tBS29LQ0VNQ3lBTFFRRnFJZ3NnREVrTkFBc0xJQkpCQURZQ3FDZ2dDUkFVSUJKQkFEWUNyQ2dnRWlBU0tBSzBLRFlDc0NnZ0VpQVNLQUs4S0RZQ3VDZ0xBbjhnQUNnQzZBRWlDeWdDSENJaUtBSk1JQUFvQXVRQklnbEJqQ3hzYWlnQzBDc2hHaUFMS0FJWUloTW9BaGdoSXlBTEtBSVVLQUlBSWgwZ0lpZ0NCQ0FpS0FJTUlnc2dDU0FKSUNJb0FoZ2lDVzRpRFNBSmJHdHNhaUlPSUJNb0FnQWlDU0FKSUE1Skd5SU1OZ0lBSUIxQmZ5QUxJQTVxSWdrZ0NTQU9TUnNpQ3lBVEtBSUlJZ2tnQ1NBTFN4c2lDVFlDQ0FKQUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFmVXpRUUFRRXd3QkN5QWRLQUlVSVJFZ0hTQWlLQUlJSUEwZ0lpZ0NFQ0lMYkdvaURDQVRLQUlFSWdrZ0NTQU1TUnNpRFRZQ0JDQWRRWDhnQ3lBTWFpSUpJQWtnREVrYklnc2dFeWdDRENJSklBa2dDMHNiSWdrMkFnd2dDU0FOU2lBTlFRQk9jVVVFUUNBS1FRRkJ6ek5CQUJBVERBRUxBa0FnR2lnQ0JBUkFJQjBvQWhBTkFVRUJEQU1MSUFwQkFVSEpLVUVBRUJNTUFRc0NRQUpBQTBBZ0kwRUFOZ0lrSUJFZ0l6UUNBQ0kyUWdGOUlqSWdIVFFDQUh3Z05uOCtBZ0FnRVNBak5BSUVJalZDQVgwaU15QWROQUlFZkNBMWZ6NENCQ0FSSURJZ0hUUUNDSHdnTm44K0FnZ2dIVFFDRENFeUlCRWdNVFlDRUNBUklESWdNM3dnTlg4K0Fnd2dFU0FhS0FJRUlnczJBaFFnRVVFQklBc2dJaWdDVUNJSmF5QUpJQXRMR3pZQ0dDQVJLQUkwRUJRZ0VVRUFOZ0pFSUJIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3STBJQXRCbUFGc0lRMENRQ0FSS0FJY0lnbEZCRUFnRVNBTkVCZ2lDVFlDSENBSlJRMEZJQkVnRFRZQ0lDQUpRUUFnRFJBWkdnd0JDeUFOSUJFb0FpQk5EUUFnQ1NBTkVCc2lDMFVFUUNBS1FRRkI3UmRCQUJBVElCRW9BaHdRRkNBUlFnQTNBaHdNQlFzZ0VTQUxOZ0ljSUFzZ0VTZ0NJQ0lKYWtFQUlBMGdDV3NRR1JvZ0VTQU5OZ0lnQ3lBUktBSVVJZ3NFUUNBYVFiQUhhaUV3SUJwQnJBWnFJUjRnR2tFY2FpRXFJQkVvQWh3aEdVRUFJU1FEUUNBWlFuOGdDMEVCYXlJSnJTSTBoa0ovaFNJeklCRTBBZ0I4SURTSHB5SVZOZ0lBSUJrZ015QVJOQUlFZkNBMGg2Y2lFallDQkNBWklETWdFVFFDQ0h3Z05JY2lNcWNpRXpZQ0NDQVpJRE1nRVRRQ0RId2dOSWNpTmFjaURqWUNEQ0F5eEVJQklCNGdKRUVDZENJTmFpZ0NBQ0lmclNJeWhueENBWDBnTW9lbklCOTBJZ3hCQUVnTkJDQTF4RUovSUEwZ01Hb29BZ0FpSUswaU1vWkNmNFY4SURLSHB5QWdkQ0lOUVFCSURRUWdHU0FOUVg4Z0lIUWdFbkVpSzJzZ0lIVkJBQ0FPSUJKSEd5SU5OZ0lVSUJrZ0RFRi9JQjkwSUJWeElpeHJJQjkxUVFBZ0V5QVZSeHNpRERZQ0VBSkFJQXhGRFFBZ0RLMGdEYTErUWlDSVVBMEFEQVFMSUF3Z0RXd2lMVUhuekprelR3MERJQzFCS0d3aElTQVpJQ1FFZnlBZ1FRRnJJU0FnSDBFQmF5RWZJQ3VzUWdGOFFnR0lweUVySUN5c1FnRjhRZ0dJcHlFc1FRTUZRUUVMTmdJWUlCbEJIR29oRkNBclFRRWdJSFJxSVJ3Z0xFRUJJQjkwYWlFYlFnRWdDNjBpTjRZaE9FSi9JQm9vQWd3aUN5QWdJQXNnSUVrYklpV3RJajJHUW4rRklUNUNmeUFhS0FJSUlnc2dIeUFMSUI5Skd5SW1yU0kvaGtKL2hTRkFRUUFoRUFOQUFuNGdKRVVFUUNBeklCRTBBZ1I4SURTSElUa2dNeUFSTkFJQWZDQTBoeUU2UVFBaEN5QXpJakloT3lBMERBRUxJRGdnRUVFQmFpSUxRUUYyclNBMGhrSi9oWHdpT3lBUk5BSUVmQ0EzaHlFNUlEZ2dDMEVCY2EwZ05JWkNmNFY4SWpJZ0VUUUNBSHdnTjRjaE9pQTNDeUU4SUJFMEFnZ2hOaUFSTkFJTUlUVWdGQ0E1UGdJRUlCUWdPajRDQUNBVUlBczJBaEFnRkNBMUlEdDhJRHlIUGdJTUlCUWdNaUEyZkNBOGh6NENDRUVBSVEwQ1FDQWFLQUlVUlEwQUlBdEZEUUJCQWtFQklBdEJBMFliSVEwTFJBQUFBQUFBQVBBL0lVTUNRQ0FqS0FJWUlBMXFJQ29vQWdBaURXc2lDMEdBQ0U0RVFFUUFBQUFBQUFEZ2Z5RkRJQXRCL3c5SkJFQWdDMEgvQjJzaEN3d0NDMFFBQUFBQUFBRHdmeUZEUWYwWElBc2dDMEg5RjA4YlFmNFBheUVMREFFTElBdEJnWGhLRFFCRUFBQUFBQUFBWUFNaFF5QUxRYmh3U3dSQUlBdEJ5UWRxSVFzTUFRdEVBQUFBQUFBQUFBQWhRMEh3YUNBTElBdEI4R2hORzBHU0Qyb2hDd3NnRkNBcUtBSUV0MFFBQUFBQUFBQkFQNkpFQUFBQUFBQUE4RCtnSUVNZ0MwSC9CMnF0UWpTR3Y2S2l0amdDSUNBVUlBMGdHaWdDcEFacVFRRnJOZ0ljSUJRb0FoUWhDd0pBQWtBQ1FDQXRSUTBBSUFzTkFDQVVJQ0VRR0NJTE5nSVVJQXRGQkVBZ0NrRUJRWUVXUVFBUUV3d0tDeUFMUVFBZ0lSQVpHaUFVSUNFMkFoZ01BUXNnSVNBVUtBSVlTd1JBSUFzZ0lSQWJJZzFGQkVBZ0NrRUJRWUVXUVFBUUV5QVVLQUlVRUJRZ0ZFSUFOd0lVREFvTElCUWdEVFlDRkNBTklCUW9BaGdpQzJwQkFDQWhJQXRyRUJrYUlCUWdJVFlDR0FzZ0xVVU5BUXNnRkNnQ0ZDRUxRUUFoTGdOQUlBc2dMaUF1SUJrb0FoQWlEVzRpRXlBTmJHc2dIM1FpRGlBc2FpSU1JQlFvQWdBaURTQU1JQTFLR3lJVk5nSUFJQXNnRXlBZ2RDSVNJQ3RxSWd3Z0ZDZ0NCQ0lOSUF3Z0RVb2JJaE0yQWdRZ0N5QU9JQnRxSWd3Z0ZDZ0NDQ0lOSUF3Z0RVZ2JJZzQyQWdnZ0N5QVNJQnhxSWd3Z0ZDZ0NEQ0lOSUF3Z0RVZ2JJZzAyQWd3Z0N5QkFJQTZzZkNBL2g2Y2dGU0FtZFNJb2F5QW1kQ0FtZFNJTU5nSVFJQXNnUGlBTnJId2dQWWVuSUJNZ0pYVWlLV3NnSlhRZ0pYVWlEVFlDRkNBTUlBMXNJaSt0UXNRQWZrSWdpRUlBVWdSQUlBcEJBVUhTRmtFQUVCTU1DUXNnTDBIRUFHd2hEZ0pBQWtBQ1FDQUxLQUlZSWcwTkFDQXZSUTBBSUFzZ0RoQVlJZzAyQWhnZ0RVVU5DeUFOUVFBZ0RoQVpHZ3dCQ3lBT0lBc29BaHhORFFFZ0RTQU9FQnNpREVVRVFDQUxLQUlZRUJRZ0MwSUFOd0lZSUFwQkFVSFFFMEVBRUJNTUN3c2dDeUFNTmdJWUlBd2dDeWdDSENJTmFrRUFJQTRnRFdzUUdSb0xJQXNnRGpZQ0hBc2dDeWdDRkNFT0lBc29BaEFoRENBTEFuOGdDeWdDSUNJTlJRUkFJQXdnRGlBS0VHd01BUXNnRFNBTUlBNGdDaEJxQ3pZQ0lDQUxLQUlVSVE0Z0N5Z0NFQ0VNSUFzQ2Z5QUxLQUlrSWcxRkJFQWdEQ0FPSUFvUWJBd0JDeUFOSUF3Z0RpQUtFR29MTmdJa0lDOEVRQ0FwUVFGcUlSSWdLRUVCYWlFVFFRQWhKd05BSUNjZ0N5Z0NFQ0lPYmlFWUFrQWdDeWdDR0NBblFjUUFiR29pRnlnQ0FDSVZCRUFnRnlnQ09DRU1JQmNvQWdRaERTQVhLQUl3SVJZZ0Z5Z0NQQkFVSUJmOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmRCUUd0QkFEWUNBQ0FYUWdBM0FqZ2dGLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWhnZ0YvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBZ2dnRnlBVk5nSUFJQmNnRmpZQ01DQVdCRUFnRlVFQUlCWkJHR3dRR1JvTElCY2dERFlDT0NBWElBMDJBZ1FNQVFzZ0YwRUtRUmdRRnlJTk5nSUFJQTFGRFFzZ0YwRUtOZ0l3Q3lBWElDY2dEaUFZYkdzaURpQW9haUFtZENJTUlBc29BZ0FpRFNBTUlBMUtHellDQ0NBWElCZ2dLV29nSlhRaURDQUxLQUlFSWcwZ0RDQU5TaHMyQWd3Z0Z5QU9JQk5xSUNaMElnd2dDeWdDQ0NJTklBd2dEVWdiTmdJUUlCY2dFaUFZYWlBbGRDSU1JQXNvQWd3aURTQU1JQTFJR3pZQ0ZDQW5RUUZxSWljZ0wwY05BQXNMSUF0QktHb2hDeUF1UVFGcUlpNGdMVWNOQUFzTElDcEJDR29oS2lBVVFTUnFJUlFnRUVFQmFpSVFJQmtvQWhoSkRRQUxJQmxCbUFGcUlSa2dDU0VMSUNSQkFXb2lKQ0FSS0FJVVNRMEFDd3NnSTBFMGFpRWpJQkZCekFCcUlSRWdHa0c0Q0dvaEdpQXhRUUZxSWpFZ0hTZ0NFRWtOQUF0QkFRd0RDeUFLUVFGQmdSZEJBQkFUREFFTElBcEJBVUdnRWtFQUVCTUxRUUFMUlFSQUlBcEJBVUd2SEVFQUVCTkJBQXdFQ3lBQUtBTGtBU0VKSUE4Z0FDZ0NnQUVnQUNnQ2hBRnNOZ0lFSUE4Z0NVRUJhallDQUNBS1FRUkJqTndBSUE4UUV5QUJJQUFvQXVRQk5nSUFJQWhCQVRZQ0FDQUNCRUFnQWlBQUtBTG9BVUVBRUYwaUFUWUNBRUVBSUFGQmYwWU5CQm9MSUFNZ0FDZ0M2QUVvQWhRb0FnQWlBU2dDQURZQ0FDQUVJQUVvQWdRMkFnQWdCU0FCS0FJSU5nSUFJQVlnQVNnQ0REWUNBQ0FISUFFb0FoQTJBZ0FnQUNBQUtBSUlRWUFCY2pZQ0NBdEJBUXdDQ3lBS1FRRWdFRUVBRUJNTElBcEJBVUhSSEVFQUVCTkJBQXNnRDBIUUFHb2tBQXZ1RUFJTWZ3SitBa0FnQUNnQ0lDSUNEUUFDUUNBQUtBSVFJZ2xCQlVvRVFDQUpJUUlNQVFzQ1FBSkFJQUFvQWhRaUJrRUZUZ1JBSUFBb0FnQWlBU2dDQUNFQ0lBQWdBVUVFYWpZQ0FDQUdRUVJySVFjTUFRc2dCa0VBVEFSQVFYOGhBZ3dDQ3lBQUtBSUFJUUVDZnlBR1FRRkdCRUJCZnlFRlFRQU1BUXRCZnlFRklBWkJBV3NpQkVFQmNRSkFJQVpCQWtZRVFFRUFJUUlnQmlFRURBRUxJQVJCZm5FaEMwRUFJUUlnQVNFRElBWWhCQU5BSUFBZ0EwRUJhallDQUNBRExRQUFJUXdnQUNBRFFRSnFJZ0UyQWdBZ0FDQUVRUUZyTmdJVUlBTXRBQUVoQXlBQUlBUkJBbXNpQkRZQ0ZDQUZRZjhCSUFKMFFYOXpjU0FNSUFKMGNrR0EvZ01nQW5SQmYzTnhJQU1nQWtFSWNuUnlJUVVnQWtFUWFpRUNJQUVoQXlBSVFRSnFJZ2dnQzBjTkFBc0xCRUFnQUNBQlFRRnFJZ00yQWdBZ0FTMEFBQ0VCSUFBZ0JFRUJhellDRkNBRlFmOEJJQUowUVg5emNTQUJJQUowY2lFRklBTWhBUXNnQmtFRGRFRUlhd3NoQWlBQUlBRkJBV28yQWdBZ0JVSC9BU0FDZEVGL2MzRWdBUzBBQUVFUGNpQUNkSEloQWdzZ0FDQUhOZ0lVQ3lBQUtBSVlJUUVnQUNBQ1FSaDJJZ1JCL3dGR05nSVlJQUFnQ1NBQ1FSQjJRZjhCY1NJRFFmOEJSaUlHSUFKQkNIWkIvd0Z4SWdWQi93RkdJZ2NnQVNBQ1FmOEJjU0lJUWY4QlJpSUthbXBxSWdGclFTQnFJZ0kyQWhBZ0FDQUFLUU1JSUFoQkIwRUlJQW9iZENBRmNrRUhRUWdnQnh0MElBTnlRUWRCQ0NBR0czUWdCSEt0SUFFZ0NXdEJJR3F0aG9RM0F3Z2dBa0VHVGcwQVFRQWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQWF3Z0FDa0RLRUpBZzRRM0F5Z2dBa0VHU0FSQVFRRWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC9RSU1nQWF4Q0I0YUVOd01vSUFKQkJrZ0VRRUVDSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhBd0orSUFBcEF3Z2lEVUlBVXdSQVFRd2dBVUVCYWlBQlFRdE9HeUVFSUFKQkFXc2hBa0YvSUFOMFFYOXpRUUYwSVFGQ0FRd0JDeUFCUVFGclFRQWdBVUVCU2hzaEJDQU5RVDhnQTJ1dGlLZEJmeUFEZEVGL2MzRkJBWFJCQVhJaEFTQUNJQU5CQVdvaUEyc2hBaUFEclFzaERpQUFJQUkyQWhBZ0FDQUVOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy85QWd5QUJyRUlPaG9RM0F5Z2dBa0VHU0FSQVFRTWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLzlBZ3lBQnJFSVZob1EzQXlnZ0FrRUdTQVJBUVFRaEFnd0JDeUFBS0FJY0lnRkJBblJCNEtFQmFpZ0NBQ0VEQW40Z0FDa0RDQ0lOUWdCVEJFQkJEQ0FCUVFGcUlBRkJDMDRiSVFRZ0FrRUJheUVDUVg4Z0EzUkJmM05CQVhRaEFVSUJEQUVMSUFGQkFXdEJBQ0FCUVFGS0d5RUVJQTFCUHlBRGE2MklwMEYvSUFOMFFYOXpjVUVCZEVFQmNpRUJJQUlnQTBFQmFpSURheUVDSUFPdEN5RU9JQUFnQWpZQ0VDQUFJQVEyQWh3Z0FDQU5JQTZHTndNSUlBQWdBQ2tES0VMLy8vLy9RSU1nQWF4Q0hJYUVOd01vSUFKQkJrZ0VRRUVGSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhCQUovSUFBcEF3Z2lEVUlBVXdSQUlBSkJBV3NoQTBGL0lBUjBRWDl6UVFGMElRVkNBU0VPUVF3Z0FVRUJhaUFCUVF0T0d3d0JDeUFOUVQ4Z0JHdXRpS2RCZnlBRWRFRi9jM0ZCQVhSQkFYSWhCU0FDSUFSQkFXb2lCR3NoQXlBRXJTRU9JQUZCQVd0QkFDQUJRUUZLR3dzaEFTQUFJQU0yQWhBZ0FDQUJOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy8vLy8vOUFneUFGclVJamhvUTNBeWhCQmlFQ0lBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFRUFuOGdBQ2tEQ0NJTlFnQlRCRUFnQTBFQmF5RUNRWDhnQkhSQmYzTkJBWFFoQlVJQklRNUJEQ0FCUVFGcUlBRkJDMDRiREFFTElBMUJQeUFFYTYySXAwRi9JQVIwUVg5emNVRUJkRUVCY2lFRklBTWdCRUVCYWlJRWF5RUNJQVN0SVE0Z0FVRUJhMEVBSUFGQkFVb2JDeUVCSUFBZ0FqWUNFQ0FBSUFFMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy85QWd5QUZyVUlxaG9RM0F5Z2dBa0VHU0FSQVFRY2hBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy8vL1FJTWdBYTFDTVlhRU53TW9RUWdoQWdzZ0FDQUNRUUZyTmdJZ0lBQWdBQ2tES0NJT1FnZUlOd01vSUE2blFmOEFjUXNpQVFGL0lBQUVRQ0FBS0FJTUlnRUVRQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUUxDNElCQWdGK0EzOENRQ0FBUW9DQWdJQVFWQVJBSUFBaEFnd0JDd05BSUFGQkFXc2lBU0FBUWdxQUlnSkM5Z0YrSUFCOHAwRXdjam9BQUNBQVF2Ly8vLytmQVZZZ0FpRUFEUUFMQ3lBQ1FnQlNCRUFnQXFjaEF3TkFJQUZCQVdzaUFTQURRUXB1SWdSQjlnRnNJQU5xUVRCeU9nQUFJQU5CQ1VzZ0JDRUREUUFMQ3lBQkMwOEJBWDhnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFKRkJFQWdBQ0FDUVFSeU5nSkVRUUFQQ3lBQUlBRTNBemdnQUNBQ1FYdHhOZ0pFUVFFTDN0NEJCSEIvQm5zSWZnRjlJd0JCRUdzaVRDUUFBa0FnQUMwQUNFR0FBWEZGRFFBZ0FTQUFLQUxrQVVjTkFDQUFLQUswQVNBQlFZd3NiR29pVFNnQzNDc2lGMFVFUUNCTkVEUU1BUXNnQUNnQzRBRWFJQUFvQXVnQklSc2dBQ2dDWkNJSFJRUkFJQUFvQW1BaEJ3c2dCeWdDQUNFR0lBY29BZ1FoQ3lBSEtBSUlJUWtnQnlnQ0RDRVBJQUFvQWp3aEJ5QUFLQUpBSVE0Z1RTZ0M0Q3NoQ0NNQVFSQnJJajhrQUNBYklBRTJBaVFnR3lnQ0hDZ0NUQ0VNSUJ0QkFUWUNRQ0FiSUE4MkFqd2dHeUFKTmdJNElCc2dDellDTkNBYklBWTJBakFnR3lBTUlBRkJqQ3hzYWpZQ0lDQWJLQUpFRUJSQkFDRUxJQnRCQURZQ1JBSkFJQWNFUUVFRUlCc29BaGdvQWhBUUZ5SUxSUVJBREFJTElBZEJCRThFUUNBSFFYeHhJUWxCQUNFQkEwQWdDeUFPSUNKQkFuUnFJZ1lvQWdCQkFuUnFRUUUyQWdBZ0N5QUdLQUlFUVFKMGFrRUJOZ0lBSUFzZ0JpZ0NDRUVDZEdwQkFUWUNBQ0FMSUFZb0FneEJBblJxUVFFMkFnQWdJa0VFYWlFaUlBRkJCR29pQVNBSlJ3MEFDd3NnQjBFRGNTSUJCRUFEUUNBTElBNGdJa0VDZEdvb0FnQkJBblJxUVFFMkFnQWdJa0VCYWlFaUlCbEJBV29pR1NBQlJ3MEFDd3NnR3lBTE5nSkVDd0pBQWtBZ0d5Z0NHQ0lHS0FJUUlnNUZEUUJCQUNFaUFrQURRQUpBSUFzRVFDQUxJQ0pCQW5ScUtBSUFSUTBCQ3lBR0tBSVlJQ0pCTkd4cUlnRTFBZ1FpZkVJQmZTS0FBU0FiTlFJOGZDQjhnQ0dCQVNBQk5RSUFJbjFDQVgwaWZpQWJOUUk0ZkNCOWdDR0NBU0NBQVNBYk5RSTBmQ0I4Z0NGOElCc29BaFFvQWdBb0FoUWdJa0hNQUd4cUlnRW9BaFFnQVNnQ0dHc2lCMEVmU3cwQUFrQWdmaUFiTlFJd2ZDQjlnS2NpQ1NBQktBSUFheUlQUVFBZ0NTQVBUeHNnQjNZTkFDQjhweUlKSUFFb0FnUnJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ2dpQ1NDQ0FhZHJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ3dpQVNDQkFhZHJJZ2xCQUNBQklBbFBHeUFIZGtVTkFRc2dHMEVBTmdKQURBSUxJQ0pCQVdvaUlpQU9SdzBBQ3lBYktBSkFSUTBBUVFBaEdRTkFJQnNvQWhRb0FnQW9BaFFnR1VITUFHeHFJZ0VvQWh3Z0FTZ0NHRUdZQVd4cUlnZEJsQUZyS0FJQUlRWWdCMEdNQVdzb0FnQWhDeUFIUVpnQmF5Z0NBQ0VPSUFkQmtBRnJLQUlBSVFrQ1FDQWJLQUpFSWdjRVFDQUhJQmxCQW5ScUtBSUFSUTBCQ3lBTElBWnJJUWNnQ1NBT2F5RU9Ba0FnQmlBTFJnMEFJQWV0SUE2dGZrSWdpRkFOQUVFQUlTSWdCVUVCUVlFWFFRQVFFd3dHQ3lBSElBNXNJZ2RCZ0lDQWdBUlBCRUJCQUNFaUlBVkJBVUdCRjBFQUVCTU1CZ3NnQVNBSFFRSjBJZ2MyQWl3Q1FBSkFBa0FnQVNnQ0pDSUdCRUFnQnlBQktBSXdUUTBFSUFFb0FpZ05BUXNnQVNBSEVCd2lCellDSkNBSFFRRWdBU2dDTENJSEcwVU5BU0FCUVFFMkFpZ2dBU0FITmdJd0RBTUxJQVlRRkNBQklBRW9BaXdRSENJSE5nSWtJQWNOQVNBQlFRQTJBakFnQVVJQU53SW9DMEVBSVNJZ0JVRUJRWUVYUVFBUUV3d0dDeUFCUVFFMkFpZ2dBU0FCS0FJc05nSXdDeUFaUVFGcUloa2dHeWdDR0NJR0tBSVFTUTBBQ3d3QkN5QUdLQUlZSVJrZ0d5Z0NGQ2dDQUNnQ0ZDRU5RUUFoQVFOQUFrQWdDd1JBSUFzZ0FVRUNkR29vQWdCRkRRRUxJQTBnQVVITUFHeHFJZ2NnQnlnQ0FDSUpJQmtnQVVFMGJHb2lEelVDQUNKOFFnRjlJb0FCSUJzMUFqQjhJSHlBcHlJTUlBa2dERXNiSWdrMkFqZ2dCeUFIS0FJRUlnd2dEelVDQkNKOVFnRjlJb0VCSUJzMUFqUjhJSDJBcHlJUElBd2dEMHNiSWc4MkFqd2dCeUFIS0FJSUlnd2dnQUVnR3pVQ09Id2dmSUNuSWdvZ0NpQU1TeHNpRERZQ1FDQUhJQWNvQWd3aUNpQ0JBU0FiTlFJOGZDQjlnS2NpRlNBS0lCVkpHeUlLTmdKRUlBa2dERXNOQXlBS0lBOUpEUU1nQnlnQ0ZDSVZSUTBBSUFxdFFnRjlJWUVCSUF5dFFnRjlJWDRnRDYxQ0FYMGhnZ0VnQ2ExQ0FYMGhnd0VnRmEwaGZ5QUhLQUljSVFsQ0FDRjlBMEFnQ1NCOXB5SVBRWmdCYkdvaUIwSUJJQlVnRDBGL2MycXRJbnlHSW9BQklJRUJmQ0I4aUQ0Q2xBRWdCeUIrSUlBQmZDQjhpRDRDa0FFZ0J5Q0FBU0NDQVh3Z2ZJZytBb3dCSUFjZ2dBRWdnd0Y4SUh5SVBnS0lBU0I5UWdGOEluMGdmMUlOQUFzTElBRkJBV29pQVNBT1J3MEFDd3RCQUNFaUlEOUJBRFlDQ0NBYktBSWNJUUZCQVVFSUVCY2lJd1JBSUNNZ0FUWUNCQ0FqSUFZMkFnQUxJQ05GRFFFZ0d5Z0NKQ0VVSUJzb0FoUW9BZ0FoSHlNQVFaQUJheUlRSkFBZ0ZFR01MR3dpQVNBaktBSUVJZ2tvQWt4cUloNG9BcVFESVM0Q2Z5QWpLQUlBSWlnaEZTQUZJVE5CQUNFT0l3QkJJR3NpRFNRQUlBRWdDU2dDVEdvaUdDZ0NwQU1oSFFKQUlCVW9BaEFpRmtHUUJHd1FHQ0lQUlEwQUFrQWdGa0VDZEJBWUlndEZCRUFnRHlFTERBRUxBa0FDUUFKL0lBa29Ba3dnRkVHTUxHeHFJZ29vQXFRRElobEJBV29pQVVId0FSQVhJZ2NFUUFKQUlBRUVRQ0FWS0FJUUlRd2dCeUVCQTBBZ0FTQXpOZ0xzQVNBQklBeEJFQkFYSWdZMkFzZ0JJQVpGRFFJZ0FTQVZLQUlRSWhvMkFzUUJRUUFoQmtFQUlRd2dHZ1JBQTBBZ0FTZ0N5QUVnQmtFRWRHb2lEQ0FLS0FMUUt5QUdRYmdJYkdvaUdpZ0NCRUVRRUJjaUpqWUNEQ0FtUlEwRUlBd2dHaWdDQkRZQ0NDQUdRUUZxSWdZZ0ZTZ0NFQ0lNU1EwQUN3c2dBVUh3QVdvaEFTQVRJQmxHSUJOQkFXb2hFMFVOQUFzTElBY01BZ3NnQnlnQ0JDSUJCRUFnQVJBVUlBZEJBRFlDQkFzZ0J5RUJRUUFoQ2dOQUlBRW9Bc2dCSWdZRVFFRUFJUXdnQVNnQ3hBRWlFd1IvQTBBZ0JpZ0NEQ0lhQkVBZ0doQVVJQVpCQURZQ0RDQUJLQUxFQVNFVEN5QUdRUkJxSVFZZ0RFRUJhaUlNSUJOSkRRQUxJQUVvQXNnQkJTQUdDeEFVSUFGQkFEWUN5QUVMSUFGQjhBRnFJUUVnQ2lBWlJpQUtRUUZxSVFwRkRRQUxJQWNRRkF0QkFBc2lCd1JBSUJaRkRRSkJBQ0VLSUE4aEJpQVdRUU5ORFFFZ0JpQVdRWHh4SWdwQmtBUnNhaUVHSUE4aEFRTkFJQXNnRVVFQ2RHb2dBZjBSL1F3QUFBQUFFQUlBQUNBRUFBQXdCZ0FBL2E0Qi9Rc0NBQ0FCUWNBUWFpRUJJQkZCQkdvaUVTQUtSdzBBQ3lBS0lCWkhEUUVNQWdzZ0R4QVVEQUlMQTBBZ0N5QUtRUUowYWlBR05nSUFJQVpCa0FScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBTElSbEJBQ0VUSUFrb0Frd2dGRUdNTEd4cUtBTFFLeUVCSUJVb0FoZ2hDaUFOSUFrb0FnUWdDU2dDRENBVUlCUWdDU2dDR0NJR2JpSUxJQVpzYTJ4cUlnWWdGU2dDQUNJTUlBWWdERXNiTmdJVUlBMUJmeUFHSUFrb0FneHFJZ3dnQmlBTVN4c2lCaUFWS0FJSUlnd2dCaUFNU1JzMkFoQWdEU0FKS0FJSUlBa29BaEFnQzJ4cUlnWWdGU2dDQkNJTElBWWdDMHNiTmdJTUlBMUJmeUFHSUFrb0FoQnFJZ3NnQmlBTFN4c2lCaUFWS0FJTUlnc2dCaUFMU1JzMkFnZ2dEVUVBTmdJWUlBMUJBRFlDSENBTlFmLy8vLzhITmdJRUlBMUIvLy8vL3djMkFnQWdGU2dDRUFSQUEwQWdHUVIvSUJrZ0UwRUNkR29vQWdBRlFRQUxJUXNnQ2pVQ0JDSjhRZ0Y5SW9BQklBMDFBZ2g4SUh5QUlZRUJJQW8xQWdBaWZVSUJmU0orSUEwMUFoQjhJSDJBSVlJQklJQUJJQTAxQWd4OElIeUFJWHdnZmlBTk5RSVVmQ0I5Z0NGOUlBRW9BZ1FpQ1NBTktBSWNTd1JBSUEwZ0NUWUNIQ0FCS0FJRUlRa0xJQWtFUUNBQlFiQUhhaUVhSUFGQnJBWnFJU1lnZ1FGQy8vLy8vdytEUWdGOUlZQUJJSUlCUXYvLy8vOFBnMElCZlNHQkFTQjhRdi8vLy84UGcwSUJmU0YrSUgxQy8vLy8vdytEUWdGOUlZSUJRUUFoRkFOQUlCb2dGRUVDZENJTWFpZ0NBQ0VHSUF3Z0ptb29BZ0FoREVFQUlSRWdDd1JBSUFzZ0JqWUNCQ0FMSUF3MkFnQWdDMEVJYWlFUkN3SkFJQXdnQ1VFQmF5SUphaUlMUVI5TERRQWdDaWdDQUNJa1FYOGdDM1pMRFFBZ0RTQU5LQUlFSWl3Z0pDQUxkQ0lMSUFzZ0xFc2JOZ0lFQ3dKQUlBWWdDV29pQzBFZlN3MEFJQW9vQWdRaUpFRi9JQXQyU3cwQUlBMGdEU2dDQUNJc0lDUWdDM1FpQ3lBTElDeExHellDQUF0QkFDRUxRZ0VnQ2EwaWZJWWlmU0NBQVh3Z2ZJZ2lnd0ZDLy8vLy93K0RRZ0VnQnEwaWY0WjhRZ0Y5SUgrSXB5QjlJSDU4SUh5SXB5SWtJQVoyYTBGL0lBWjJjVUVBSUNRZ2d3R25SeHNoQmlCOUlJRUJmQ0I4aUNLREFVTC8vLy8vRDROQ0FTQU1yU0ovaG54Q0FYMGdmNGluSUgwZ2dnRjhJSHlJcHlJa0lBeDJhMEYvSUF4MmNVRUFJQ1FnZ3dHblJ4c2hEQ0FSQkVBZ0VTQUdOZ0lFSUJFZ0REWUNBQ0FSUVFocUlRc0xJQVlnREd3aUJpQU5LQUlZU3dSQUlBMGdCallDR0FzZ0ZFRUJhaUlVSUFFb0FnUkpEUUFMQ3lBS1FUUnFJUW9nQVVHNENHb2hBU0FUUVFGcUloTWdGU2dDRUVrTkFBc0xJQjFCQVdvaEppQU5LQUljSVJNZ0RTZ0NHQ0VVSUFkQkFEWUNCQUpBSUJnb0FnaEJBV29pQWEwZ0V5QVVJQlpzSWlSc0locXRma0lnaUZBRVFDQUhJQUVnR213aUFUWUNDQ0FISUFGQkFoQVhJZ0UyQWdRZ0FRMEJDeUFQRUJRZ0dSQVVJQWNvQWdRaUFRUkFJQUVRRkNBSFFRQTJBZ1FMSUNaRkJFQWdCeUVMREFJTFFRQWhDeUFISVFFRFFDQUJLQUxJQVNJS0JFQkJBQ0VHSUFFb0FzUUJJaEVFZndOQUlBb29BZ3dpQ1FSQUlBa1FGQ0FLUVFBMkFnd2dBU2dDeEFFaEVRc2dDa0VRYWlFS0lBWkJBV29pQmlBUlNRMEFDeUFCS0FMSUFRVWdDZ3NRRkNBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFzZ0hVWWdDMEVCYWlFTFJRMEFDeUFISVFzTUFRc2dGU2dDR0NFTUlBY2dEU2dDRkNJc05nTE1BU0FISUEwb0Fnd2lMVFlDMEFFZ0J5QU5LQUlRSWlBMkF0UUJJQWNnRFNnQ0NDSTROZ0xZQVNBSElCbzJBZ3dnQnlBa05nSVFJQWNnRkRZQ0ZFRUJJUlVnQjBFQk5nSVlJQllFUUNBSEtBTElBU0VCUVFBaENTQU1JUXNEUUNBWklBbEJBblJxS0FJQUlRb2dBU0FMS0FJQU5nSUFJQUVnQ3lnQ0JEWUNCQUpBSUFFb0FnZ2lEa1VOQUNBQktBSU1JUVlnRGtFQlJ3UkFJQTVCZm5FaFBFRUFJUkVEUUNBR0lBb29BZ0EyQWdBZ0JpQUtLQUlFTmdJRUlBWWdDaWdDQ0RZQ0NDQUdJQW9vQWd3MkFnd2dCaUFLS0FJUU5nSVFJQVlnQ2lnQ0ZEWUNGQ0FHSUFvb0FoZzJBaGdnQmlBS0tBSWNOZ0ljSUFaQklHb2hCaUFLUVNCcUlRb2dFVUVDYWlJUklEeEhEUUFMQ3lBT1FRRnhSUTBBSUFZZ0NpZ0NBRFlDQUNBR0lBb29BZ1EyQWdRZ0JpQUtLQUlJTmdJSUlBWWdDaWdDRERZQ0RBc2dDMEUwYWlFTElBRkJFR29oQVNBSlFRRnFJZ2tnRmtjTkFBc0xJQ1pCQVVzRVFDQUhJUTREUUNBT0lEZzJBc2dESUE0Z0lEWUN4QU1nRGlBdE5nTEFBeUFPSUN3MkFyd0RJQTVCQVRZQ2lBSWdEaUFVTmdLRUFpQU9JQ1EyQW9BQ0lBNGdHallDL0FFZ0ZnUkFJQTRvQXJnRElRRkJBQ0VKSUF3aEN3TkFJQmtnQ1VFQ2RHb29BZ0FoQ2lBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJbVJRMEFJQUVvQWd3aEJpQW1RUUZIQkVBZ0prRitjU0U4UVFBaEVRTkFJQVlnQ2lnQ0FEWUNBQ0FHSUFvb0FnUTJBZ1FnQmlBS0tBSUlOZ0lJSUFZZ0NpZ0NERFlDRENBR0lBb29BaEEyQWhBZ0JpQUtLQUlVTmdJVUlBWWdDaWdDR0RZQ0dDQUdJQW9vQWh3MkFod2dCa0VnYWlFR0lBcEJJR29oQ2lBUlFRSnFJaEVnUEVjTkFBc0xJQ1pCQVhGRkRRQWdCaUFLS0FJQU5nSUFJQVlnQ2lnQ0JEWUNCQ0FHSUFvb0FnZzJBZ2dnQmlBS0tBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWxCQVdvaUNTQVdSdzBBQ3dzZ0RpQU9LUUlFTndMMEFTQVZJQjFISUE1QjhBRnFJUTRnRlVFQmFpRVZEUUFMQ3lBUEVCUWdHUkFVSUJnb0FxUURJUXNDUUNBWUxRQ0lMRUVFY1FSQUlBdEJmMFlOQVNBWVFhZ0RhaUVHSUJnb0FnZ2hBVUVBSVJFZ0J5RUtBMEFnQmlnQ0pDRU9JQXBCQVRZQ0xDQUtJQTQyQWxRZ0NpQUdLQUlBTmdJd0lBWW9BZ1FoRGlBS1FnQTNBa1FnQ2lBT05nSTBJQW9nQmlnQ0REWUNQQ0FLSUFZb0FoQTJBa0FnQmlnQ0NDRU9JQW9nRkRZQ1RDQUtJQTRnQVNBQklBNUxHellDT0NBR1FaUUJhaUVHSUFwQjhBRnFJUW9nQ3lBUlJpQVJRUUZxSVJGRkRRQUxEQUVMSUF0QmYwWU5BQ0FZS0FJSUlRWWdHQ2dDQkNFT0lBY2hDaUFMQkVBZ0MwRUJha0YrY1NFSlFRQWhBUU5BSUFwQ0FEY0NSQ0FLUVFBMkFqUWdDa0lCTndJc0lBb2dEallDVkNBS0lCTTJBandnQ2lBT05nTEVBaUFLSUJRMkFrd2dDaUFHTmdJNElBcENBRGNDdEFJZ0NrRUFOZ0trQWlBS1FnRTNBcHdDSUFvZ0V6WUNyQUlnQ2lBR05nS29BaUFLSUJRMkFyd0NJQW9nQ2lnQ3hBRTJBa0FnQ2lBS0tBSzBBellDc0FJZ0NrSGdBMm9oQ2lBQlFRSnFJZ0VnQ1VjTkFBc0xJQXRCQVhFTkFDQUtRZ0EzQWtRZ0NrRUFOZ0kwSUFwQ0FUY0NMQ0FLSUE0MkFsUWdDaUFUTmdJOElBb2dGRFlDVENBS0lBWTJBamdnQ2lBS0tBTEVBVFlDUUFzZ0J5RU9EQUVMSUFzUUZBc2dEVUVnYWlRQUFrQWdEa1VOQUNBdVFRRnFJU1lnRnlFWklBNGhGUUpBQWtBRFFDQVZLQUpVUVg5R0RRSWdLQ2dDRUVFQ2RCQVlJZ0ZGRFFJZ0FVRUJJQ2dvQWhCQkFuUVFHU0VhSUJVUVlBUkFBMEFnSHlnQ0ZDRUpBa0FDUUNBVktBSW9JQjRvQWd4UERRQWdGU2dDSUNJQklBa2dGU2dDSEVITUFHeHFJZ2NvQWhoUERRQWdCeWdDSENBQlFaZ0JiR29pQnlnQ0dFVU5BQ0FIUVJ4cUlRWkJBQ0VOQWtBRFFDQWJJQlVvQWh3Z0ZTZ0NJQ0FHSUExQkpHeHFJZ0VvQWhBZ0FTZ0NGQ0FWS0FJa1FTaHNhaUlCS0FJQUlBRW9BZ1FnQVNnQ0NDQUJLQUlNRUVGRkJFQWdEVUVCYWlJTklBY29BaGhKRFFFTUFnc0xJQm9nRlNnQ0hFRUNkR3BCQURZQ0FDQVFRUUEyQW9nQklDTW9BZ1FnSHlnQ0ZDQWVJQlVnRUVHTUFXb2dHU0FRUVlnQmFpQUlJRE1RWDBVTkJpQVZLQUlnSVEwZ0ZTZ0NIQ0VQSUJBb0FvZ0JJUkVnRUNnQ2pBRUVRQ0FRUVFBMkFvZ0JJQjhvQWhRZ0QwSE1BR3hxS0FJY0lBMUJtQUZzYWlJZEtBSVlJZ2tFZnlBSUlCRnJJUVlnQ0NBWmFpRWtJQjFCSEdvaEQwRUFJUXBCQUNFWUlCRWdHV29pTGlFVUEwQUNRQ0FQS0FJSUlBOG9BZ0JHRFFBZ0R5Z0NEQ0FQS0FJRVJnMEFJQThvQWhRZ0ZTZ0NKRUVvYkdvaUFTZ0NGQ0FCS0FJUWJDSXNSUTBBSUFFb0FoZ2hDVUVBSVJNRFFDQUpLQUlrSWdzRVFBSi9Ba0FnR0VVRVFDQUpLQUpBUlEwQkN5QUpRUUEyQWpSQkFTRU5RY0FBREFFTElBa29BZ0FoRFFKQUlBa2dDU2dDS0NJQkJIOGdEU0FCUVJoc2FpSU5RUlJyS0FJQUlBMUJER3NvQWdCSEJFQWdEVUVZYXlFTkRBSUxJQUZCQVdvRlFRRUxOZ0lvQ3dKL0FrQWdEU2dDRkNJQklCUkJmM05MRFFBZ0RVRVVhaUVNQTBBZ0FTQVVhaUFrU3cwQklBa29BZ1FoRmlBSktBSTBJaGdnQ1NnQ09FY0VmeUFMQlNBV0lCaEJBWFJCQVhJaUFVRURkQkFiSWhaRkJFQWdNMEVCUVlBSVFRQVFFd3dTQ3lBSklBRTJBamdnQ1NBV05nSUVJQWtvQWpRaEdDQU1LQUlBSVFFZ0NTZ0NKQXNoQnlBV0lCaEJBM1JxSWdzZ0FUWUNCQ0FMSUJRMkFnQWdDU0FZUVFGcU5nSTBJQTBnRFNnQ0FDQUJhallDQUNBTklBMG9BaEFpRENBTktBSUVhaUlXTmdJRUlBa2dCeUFNYXlJTE5nSWtJQTBnRmpZQ0NDQUJJQlJxSVJSQkFDQUhJQXhHRFFJYUlBa2dDU2dDS0VFQmFqWUNLQ0FOUVN4cUlRd2dEU2dDTENFQklBMUJHR29oRFNBQklCUkJmM05ORFFBTEN5QVZLQUljSVFjZ0ZTZ0NJQ0VMSUJVb0FpUWhEQ0FqS0FJRUtBSm9CRUFnRUNBSE5nSjRJQkFnQ3pZQ2RDQVFJQW8yQW5BZ0VDQU1OZ0pzSUJBZ0V6WUNhQ0FRSUFZMkFtUWdFQ0FCTmdKZ0lETkJBVUhBOGdBZ0VFSGdBR29RRXd3UEN5QVFJQWMyQWxnZ0VDQUxOZ0pVSUJBZ0NqWUNVQ0FRSUF3MkFrd2dFQ0FUTmdKSUlCQWdCallDUkNBUUlBRTJBa0FnTTBFQ1FjRHlBQ0FRUVVCckVCTWdDVUVBTmdJMElBbEJBVFlDUUVFQkN5RVlJQWtvQWlnaERVRXNDeUFKYWlBTk5nSUFDeUFKUWNRQWFpRUpJQk5CQVdvaUV5QXNSdzBBQ3lBZEtBSVlJUWtMSUE5QkpHb2hEeUFLUVFGcUlnb2dDVWtOQUFzZ0ZTZ0NJQ0VOSUJVb0Fod2hEeUFHSUJRZ0xtc2dHQnNGUVFBTElCRnFJUkVMSUNnb0FoZ2dEMEUwYkdvaUFTQU5JQUVvQWlRaUFTQUJJQTFKR3pZQ0pBd0NDeUFmS0FJVUlRa0xJQkJCQURZQ2lBRWdJeWdDQkNBSklCNGdGU0FRUVl3QmFpQVpJQkJCaUFGcUlBZ2dNeEJmUlEwRUlCVW9BaHdoRHlBUUtBS0lBU0VSSUJBb0Fvd0JSUTBBSUI4b0FoUWdEMEhNQUd4cUtBSWNJQlVvQWlBaUdFR1lBV3hxSWdFb0FoZ2lKRVVOQUNBSUlCRnJJUVlnQVVFY2FpRVdJQlVvQWlRaERFRUFJUTFCQUNFZEFrQUNRQU5BQWtBZ0ZpZ0NDQ0FXS0FJQVJnMEFJQllvQWd3Z0ZpZ0NCRVlOQUNBV0tBSVVJQXhCS0d4cUlnRW9BaFFnQVNnQ0VHd2lMa1VOQUNBQktBSVlJUXRCQUNFS0EwQWdDeWdDSkNJQkJFQWdDeWdDQUNFSkFrQWdDeUFMS0FJb0loTUVmeUFKSUJOQkdHeHFJZ2xCRkdzb0FnQWdDVUVNYXlnQ0FFY0VRQ0FKUVJocklRa01BZ3NnRTBFQmFnVkJBUXNpRXpZQ0tBc2dDU2dDRkNJVUlBMXFJZzBnRkVrTkJTQUdJQTFKRFFVRFFBSkFJQWtnQ1NnQ0VDSVVJQWtvQWdScU5nSUVJQUVnRkdzaEJ5QUJJQlJHRFFBZ0N5QVRRUUZxSWhNMkFpZ2dDU2dDTENJVUlBMXFJZzBnRkVrTkJpQUpRUmhxSVFrZ0J5RUJJQVlnRFU4TkFRd0dDd3NnQ3lBSE5nSWtDeUFMUWNRQWFpRUxJQXBCQVdvaUNpQXVSdzBBQ3dzZ0ZrRWthaUVXSUIxQkFXb2lIU0FrUncwQUN5QU5JQkZxSVJFTUFnc2dDeUFITmdJa0N5QWpLQUlFS0FKb1JRUkFJQkFnRHpZQ0dDQVFJQmcyQWhRZ0VDQWROZ0lRSUJBZ0REWUNEQ0FRSUFvMkFnZ2dFQ0FHTmdJRUlCQWdGRFlDQUNBelFRSkI2L0VBSUJBUUV5QVZLQUljSVE4Z0JpQVJhaUVSREFFTElCQWdEellDT0NBUUlCZzJBalFnRUNBZE5nSXdJQkFnRERZQ0xDQVFJQW8yQWlnZ0VDQUdOZ0lrSUJBZ0ZEWUNJQ0F6UVFGQjYvRUFJQkJCSUdvUUV3d0VDd0pBSUJvZ0QwRUNkR29vQWdCRkRRQWdLQ2dDR0NBUFFUUnNhaUlCS0FJa0RRQWdBU0FmS0FJVUlBOUJ6QUJzYWlnQ0dFRUJhellDSkFzZ0NDQVJheUVJSUJFZ0dXb2hHU0FWRUdBTkFBc0xJQm9RRkNBVlFmQUJhaUVWSUJ4QkFXb2lIQ0FlS0FLa0EwME5BQXNnRGlBbUVFSWdQeUFaSUJkck5nSUlRUUVNQXdzZ0RpQW1FRUlnR2hBVURBRUxJQTRnSmhCQ0MwRUFDeUFRUVpBQmFpUUFJQ01RTWtVTkFTQWJLQUlnS0FMUUt5RWlJQnNvQWhRb0FnQWlFQ2dDRkNFT0lEOUJBVFlDREVFQUlSbEJBQ0VNSUJzb0FpQWlBU2dDRENBQktBSUlSZ1JBSUNJb0FoQkJCSFpCQVhFaERBc0NRQ0FRS0FJUUlncEZEUUFEUUFKQUlCc29Ba1FpQVFSQUlBRWdHVUVDZEdvb0FnQkZEUUVMSUQ5QkRHb2hGRUVBSVFvQ1FDQU9LQUlZSWdGRkRRQWdHeWdDTENFUkEwQWdEaWdDSENBS1FaZ0JiR29pRHlnQ0dDSUxCRUFnRDBFY2FpRVRJQThvQWhRaEFTQVBLQUlRSVJWQkFDRVhBMEFnQVNBVmJBUkFJQk1nRjBFa2JHb2hEVUVBSVFrRFFDQWJJQTRvQWhBZ0NpQU5LQUlRSUEwb0FoUWdDVUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQkJJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNHd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENBTkFBa0FnR3lBT0tBSVFJQW9nRFNnQ0VDQUhLQUlZSUFoQnhBQnNhaUlHS0FJSUlBWW9BZ3dnQmlnQ0VDQUdLQUlVRUVGRkJFQWdCaWdDUENJQlJRMEJJQUVRRkNBR1FRQTJBandNQVFzZ0d5Z0NRRVVFUUNBR0tBSThEUUVnQmlnQ0VDQUdLQUlJUmcwQklBWW9BaFFnQmlnQ0RFWU5BUXRCQVVFc0VCY2lBVVVFUUNBL1FRQTJBZ3dNQ2dzZ0d5Z0NRQ0VMSUFGQkFEWUNKQ0FCSUJRMkFod2dBU0FpTmdJVUlBRWdEallDRUNBQklBMDJBZ3dnQVNBR05nSUlJQUVnQ2pZQ0JDQUJJQXMyQWdBZ0FTQU1OZ0lvSUFFZ016WUNJQ0FCSUJFb0FnUkJBVW8yQWhnZ0VVRU9JQUVRTXlBL0tBSU1SUTBKQ3lBSVFRRnFJZ2dnQnlnQ0ZDQUhLQUlRYkVrTkFBc01BUXNnQVVVTkFFRUFJUlVEUUNBSEtBSVlJQlZCeEFCc2FpSUJLQUk4SWdZRVFDQUdFQlFnQVVFQU5nSThJQWNvQWhRaEN5QUhLQUlRSVFnTElCVkJBV29pRlNBSUlBdHNTUTBBQ3dzZ0NVRUJhaUlKSUE4b0FoUWlBU0FQS0FJUUloVnNTUTBBQ3lBUEtBSVlJUXNMSUJkQkFXb2lGeUFMU1EwQUN5QU9LQUlZSVFFTElBcEJBV29pQ2lBQlNRMEFDd3NnUHlnQ0RFVU5BaUFRS0FJUUlRb0xJQ0pCdUFocUlTSWdEa0hNQUdvaERpQVpRUUZxSWhrZ0Nra05BQXNMUVFBaElpQWJLQUlzRUNRZ1B5Z0NERVVOQVFKQUlCc29Ba0FOQUNBYktBSVlJaGtvQWhCRkRRQkJBQ0VPQTBBZ0d5Z0NGQ2dDQUNnQ0ZDQU9RY3dBYkdvaUFTZ0NIQ0FaS0FJWUlBNUJOR3hxS0FJa1FaZ0JiR29pQnlnQ2lBRWhCaUFIS0FLUUFTRUlJQWNvQW93QklRc2dCeWdDbEFFaEJ5QUJLQUkwRUJRZ0FVRUFOZ0kwQWtBZ0d5Z0NSQ0lKQkVBZ0NTQU9RUUowYWlnQ0FFVU5BUXNnQmlBSVJnMEFJQWNnQzBZTkFDQUhJQXRySWdldElBZ2dCbXNpQnExK1FpQ0lRZ0JTQkVBZ00wRUJRWUVYUVFBUUV3d0ZDeUFHSUFkc0lnZEJnSUNBZ0FSUEJFQWdNMEVCUVlFWFFRQVFFd3dGQ3lBQklBZEJBblFRSENJQk5nSTBJQUVOQUNBelFRRkJnUmRCQUJBVERBUUxJQTVCQVdvaURpQWJLQUlZSWhrb0FoQkpEUUFMQ3lBYktBSWdJUmtnR3lnQ0ZDZ0NBQ0lWS0FJUUJFQWdGU2dDRkNFT0lCa29BdEFySVJrZ0d5Z0NHQ2dDR0NFS1FRQWhDd05BQWtBZ0d5Z0NSQ0lCQkVBZ0FTQUxRUUowYWlnQ0FFVU5BUXNnQ2lnQ0pFRUJhaUVCSUJrb0FoUkJBVVlFUUNBQklSNUJBQ0VJUVFBaEJ2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRjJJd0JCSUdzaUp5UUFBa0FDUUNBYktBSkFCRUJCQVNFSElBRkJBVVlOQWlBT0tBSWNJZ1lnRGlnQ0dFR1lBV3hxSWdGQmtBRnJLQUlBSWc4Z0FVR1lBV3NvQWdBaUVVWU5BaUFHS0FJRUlSUWdCaWdDRENFV0lBWW9BZ0FoR0NBR0tBSUlJUjBnR3lnQ0xDSVhLQUlFSVJBZ0hrRUJheUlOSVF3Z0JpRUhBa0FnRFVFRVR3UkFJQTFCQTNFaERDQUhJQTFCZkhFaUNVR1lBV3hxSVFkQkFDRUJBMEFnZGlBR0lBRkJtQUZzYWlJSVFlZ0VhaUFJUWRBRGFpQUlRYmdDYWlBSS9Wd0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhnQkdvZ0NFSElBMm9nQ0VHd0Ftb2dDUDFjQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQWhCN0FScUlBaEIxQU5xSUFoQnZBSnFJQWo5WEFLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlUUVhaUFJUWN3RGFpQUlRYlFDYWlBSS9Wd0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGRpQUJRUVJxSWdFZ0NVY05BQXNnZGlCMklIYjlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZGlCMklIYjlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaENDQUpJQTFHRFFFTEEwQWdDQ0FIS0FLZ0FTQUhLQUtZQVdzaUFTQUJJQWhKR3lJQklBY29BcVFCSUFjb0Fwd0JheUlJSUFFZ0NFc2JJUWdnQjBHWUFXb2hCeUFNUVFGcklnd05BQXNMUVFBaEJ5QUlRZi8vL3o5TERRSWdKeUFJUVFWMEloTVFOeUlNTmdJUUlBeEZEUUlnSnlBTU5nSUFJQTBFUUNBUElCRnJJUkVnRmlBVWF5RUpJQjBnR0dzaEFRTkFJQTRvQWlRaEZDQW5JQWtpRHpZQ0NDQW5JQUVpQnpZQ0dDQUdLQUtjQVNFSUlBWW9BcVFCSVFrZ0JpZ0NvQUVoQVNBbklBWW9BcGdCSWhaQkFtODJBaHdnSnlBQklCWnJJZ0VnQjJzMkFoUUNRQ0FRUVFKSUloMUZJQWtnQ0dzaUNVRUJTM0ZGQkVCQkFDRUlJQWxGRFFFRFFDQW5RUkJxSUJRZ0NDQVJiRUVDZEdvUVppQUlRUUZxSWdnZ0NVY05BQXNNQVFzZ0NTQVFJQWtnRUVrYkloWkJBV3NoSXlBSklCWnVJUmhCQUNFSEEwQkJKQkFZSWdoRkRRVWdKLzBBQWhBaGRpQUlJQlEyQWhnZ0NDQVJOZ0lVSUFnZ0FUWUNFQ0FJSUhiOUN3SUFJQWdnQnlBWWJEWUNIQ0FISUNOR0lSOGdDQ0FKSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FJSUJNUU55SWZOZ0lBSUI5RkJFQkJBQ0VISUJjUUpDQUlFQlFnREJBVURBY0xJQmRCQ2lBSUVETWdCeUFXUncwQUN5QVhFQ1FMSUNjZ0NTQVBhellDQkNBbklBWW9BcHdCUVFKdk5nSU1Ba0FnSFVVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQ0NBQlFRaFBCRUFEUUNBbklCUWdDRUVDZEdvZ0VVRUlFRFlnQnlJSVFRaHFJZ2NnQVUwTkFBc0xJQUVnQ0UwTkFTQW5JQlFnQ0VFQ2RHb2dFU0FCSUFockVEWU1BUXNnQVNBUUlBRWdFRWtiSWc5QkFXc2hHQ0FCSUE5dUlSWkJBQ0VIQTBCQkpCQVlJZ2hGRFFVZ0ovMEFBZ0FoZGlBSUlCUTJBaGdnQ0NBUk5nSVVJQWdnQ1RZQ0VDQUlJSGI5Q3dJQUlBZ2dCeUFXYkRZQ0hDQUhJQmhHSVIwZ0NDQUJJQWRCQVdvaUJ5QVdiQ0FkR3pZQ0lDQUlJQk1RTnlJZE5nSUFJQjFGQkVCQkFDRUhJQmNRSkNBSUVCUWdEQkFVREFjTElCZEJDeUFJRURNZ0J5QVBSdzBBQ3lBWEVDUUxJQVpCbUFGcUlRWWdEVUVCYXlJTkRRQUxDMEVCSVFjZ0RCQVVEQUlMUVFFaEJ5QU9LQUljSWdrZ0hrR1lBV3hxSWl0Qm1BRnJJbDBvQWdBZ0swR1FBV3NvQWdCR0RRRWdLMEdVQVdzaVhpZ0NBQ0FyUVl3QmF5Z0NBRVlOQVNBSktBSUVJUmNnQ1NnQ0RDRU5JQWtvQWdBaEVDQUpLQUlJSVJFZ0RpZ0NSQ0VvSUE0b0FrQWhHaUFPS0FJOElTWWdEaWdDT0NFdUlBNGdIaEJsSWpsRkJFQkJBQ0VIREFJTEFrQUNRQ0FlUVFGSEJFQUNRQUpBSUI1QkFXc2lEMEVFU1FSQUlBOGhBU0FKSVFjTUFRc2dEMEVEY1NFQklBa2dEMEY4Y1NJTVFaZ0JiR29oQndOQUlIWWdDU0FHUVpnQmJHb2lDRUhvQkdvZ0NFSFFBMm9nQ0VHNEFtb2dDUDFjQXFBQi9WWUNBQUg5VmdJQUF2MVdBZ0FESUFoQjRBUnFJQWhCeUFOcUlBaEJzQUpxSUFqOVhBS1lBZjFXQWdBQi9WWUNBQUw5VmdJQUEvMnhBZjI1QVNBSVFld0VhaUFJUWRRRGFpQUlRYndDYWlBSS9Wd0NwQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhrQkdvZ0NFSE1BMm9nQ0VHMEFtb2dDUDFjQXB3Qi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJWFlnQmtFRWFpSUdJQXhIRFFBTElIWWdkaUIyL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQkluWWdkaUIyL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2JrQi9Sc0FJUWdnRENBUFJnMEJDd05BSUFnZ0J5Z0NvQUVnQnlnQ21BRnJJZ1lnQmlBSVNSc2lCaUFIS0FLa0FTQUhLQUtjQVdzaUNDQUdJQWhMR3lFSUlBZEJtQUZxSVFjZ0FVRUJheUlCRFFBTEN5QUlRWUNBZ0lBQlR3MENJQWhCQkhRUU55SVNSUTBDQWtBZ0hrVU5BQ0FOSUJkcklSWWdFU0FRYXlFVElCSkJCR3NoT2lBU1FSeHFJVTRnRWtFWWFpRTRJQkpCRkdvaFBDQVNRUXhySVVFZ0VrRU1haUVwSUJKQkNHb2hKU0FTUVJCcklVSWdFa0VJYXlGQUlCSkJCR29oSVNBb3JTRjhJQnF0SVgwZ0pxMGhnQUVnTHEwaGdRRkJBU0ZEQTBBZ0NTZ0NuQUVpQVVFQ2J5RTNJQWtvQXBnQklnZEJBbThoUGlBSktBS2tBU0FCYXlJa0lCWnJJUzhnQ1NnQ29BRWdCMnNpTENBVGF5RXhJQzRpQmlFSElDWWlIU0VVSUJvaUFTRXdJQ2dpQ0NFUkFrQWdEaWdDRkNJUElFTkdEUUFnRHlCRGF5RVBRUUFoRkVFQUlRY2dCZ1JBUW44Z0Q2MGlmb1pDZjRVZ2dRRjhJSDZJcHlFSEN5QW1CRUJDZnlBUHJTSitoa0ovaFNDQUFYd2dmb2luSVJRTFFRQWhDRUVBSVFFZ0dnUkFRbjhnRDYwaWZvWkNmNFVnZlh3Z2ZvaW5JUUVMSUNnRVFFSi9JQSt0SW42R1FuK0ZJSHg4SUg2SXB5RUlDMEVBSVRCQkFDRUdRUUVnRDBFQmEzUWlEQ0F1U1FSQUlDNGdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVHQ3lBTUlCcEpCRUFnR2lBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklUQUxRUUFoRVVFQUlSMGdEQ0FtU1FSQUlDWWdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVkQ3lBTUlDaFBEUUFnS0NBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklSRUxRWDhnTUNBSktBSzBBU0lQYXlJTVFRQWdEQ0F3VFJzaURFRUNhaUlYSUF3Z0Ywc2JJZ3dnTVNBTUlERkpHeUkxUVg4Z0FTQUpLQUxZQVNJdGF5SU1RUUFnQVNBTVR4c2lBVUVDYWlJTUlBRWdERXNiSWdFZ0V5QUJJQk5KR3lJMklENGJRUUYwSWdFZ05pQTFJRDRiUVFGMFFRRnlJZ3dnQVNBTVN4c2lSaUFzU1NFWUlBWWdEMnNpQVVFQUlBRWdCazBiSWdGQkFtc2lCa0VBSUFFZ0JrOGJJaEFnQnlBdGF5SUJRUUFnQVNBSFRSc2lBVUVDYXlJR1FRQWdBU0FHVHhzaURTQStHMEVCZENJR0lBMGdFQ0ErRzBFQmRFRUJjaUlQU1NFZ0lCUWdDU2dDdUFFaUkyc2lERUVBSUF3Z0ZFMGJJZ3hCQW1zaUYwRUFJQXdnRjA4Yklnd2hIQ0FkSUFrb0F0d0JJaFJySWhkQkFDQVhJQjFOR3lJWFFRSnJJaDFCQUNBWElCMVBHeUlYSVNwQmZ5QUlJQ05ySWgxQkFDQUlJQjFQR3lJSVFRSnFJaDBnQ0NBZFN4c2lDQ0FXSUFnZ0Zra2JJaU1oTWtGL0lCRWdGR3NpQ0VFQUlBZ2dFVTBiSWdoQkFtb2lFU0FJSUJGTEd5SUlJQzhnQ0NBdlNSc2lIeUU3SURjRVFDQU1JU29nSHlFeUlDTWhPeUFYSVJ3TElFWWdMQ0FZR3lGSElBWWdEeUFnR3lFUElCWWdIMm9oVHlBV0lCZHFJVkFnSkFSQUlCSWdEVUVEZEdvaVJFRUVhaUE2SURGQkEzUWlCbW9pVVNBTklERklJZ2diSVZJZ05TQVRRUUZySUJNZ05Vb2JJU0JCQUNFWUlCTkJBVW9nTVVFQVNuSWhVeUFoSUQ1QkFuUWlFV3NnRUVFRGRHb2hWQ0FSSUVScUlWVWdEU0EySURFZ01TQTJTaHNpRVNBSElDMGdCeUF0U1J0cVFRSWdBU0FCUVFKUEcyb2dCMEYvYzJvaVNFRjhjU0pGYWlFMElBMUJBV29pRkNCRmFpRTlJQk1nTldvaFZpQVFJQk5xSVZjZ0RmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVhrZ0VpQVBRUUowYWlGWUlFQWdFMEVEZENJQmFpRkpJQUVnT21vaFNpQUdJRUJxSVVzZ0UwVWdNVUVCUm5FaFdTQVNJRWRCQW5RaUFXb2hXaUFCSURwcUlWc2dGUDBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklYb2dPaUFOSURFZ0NCdEJBM1JxSVZ3RFFBSkFBa0FnR0NBalNTQU1JQmhOY1EwQUlCZ2dUMGtnR0NCUVQzRU5BQ0FZUVFGcUlTME1BUXNnTENCR1N3UkFJRnRCQURZQ0FDQmFRUUEyQWdBTElEa2dEU0FZSURZZ0dFRUJhaUl0SUZWQkFrRUFFQ0lnT1NCWElCZ2dWaUF0SUZSQkFrRUFFQ0lDUUFKQUFrQWdQa1VFUUNCVFJRMERJQTBnTms0TkFnSkFBa0FnRFVFQVNnUkFJRndvQWdBaEJ3d0JDeUFoS0FJQUlnY2hBU0FOUVFCSURRRUxJQWNoQVNCU0tBSUFJUWNMSUVRZ1JDZ0NBQ0FCSUFkcVFRSnFRUUoxYXpZQ0FDQVVJZ2NnRVU0TkFVRUFJUWNnRkNFQklBMGhDQ0I2SVhZZ2VTRjRJRWhCQTBzRVFBTkFJQklnZGtFQi9hc0JJbmY5R3dCQkFuUnFJZ0VnRWlCMy9Sc0RRUUowYWlJR0lCSWdkLzBiQWtFQ2RHb2lDQ0FTSUhmOUd3RkJBblJxSWgwZ0FmMWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUI0UVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0o3L1JzRFFRSjBhaUFTSUh2OUd3SkJBblJxSUJJZ2UvMGJBVUVDZEdvZ0VpQjcvUnNBUVFKMGF2MWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUIzL1F3QkFBQUFBUUFBQUFFQUFBQUJBQUFBL1ZBaWQvMGJBMEVDZEdvZ0VpQjMvUnNDUVFKMGFpQVNJSGY5R3dGQkFuUnFJQklnZC8wYkFFRUNkR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlkLzFhQWdBQUlCMGdkLzFhQWdBQklBZ2dkLzFhQWdBQ0lBWWdkLzFhQWdBRElIajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoZUNCMi9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJWFlnQjBFRWFpSUhJRVZIRFFBTElEMGhBU0EwSVFnZ0VTRUhJRVVnU0VZTkFnc0RRQ0FTSUFGQkEzUnFJZ2NnQnlnQ0FDQVNJQWhCQTNScUtBSUVJQWNvQWdScVFRSnFRUUoxYXpZQ0FDQUJJZ2hCQVdvaUFTQVJSdzBBQ3lBUklRY01BUXNDUUNCWlJRUkFJQTBpQnlBMlRnMEJBMEFnRWlBSFFRTjBhaUlCS0FJRUlRWWdBU0FHQW44Q1FDQUhRUUJPQkVBZ0FTQkxJQWNnTVVnYktBSUFJVEFnQjBFQmFpRUJEQUVMSUJJb0FnQWhNRUVBSVFFZ0VpQUhRUUZxSWdjTkFSb0xJQUVnTVU0RVFDQUJJUWNnU3d3QkN5QVNJQUVpQjBFRGRHb0xLQUlBSURCcVFRSnFRUUoxYXpZQ0JDQUhJRFpJRFFBTERBRUxJQklnRWlnQ0FFRUNiVFlDQUF3REN5QVFJZ2NnTlU0TkFnTkFJQklnQjBFRGRDSUJhaUlHS0FJQUlRZ0NmeUFIUVFCSUJFQWdJU2dDQUNFZElDRU1BUXNnRWlBSFFRTjBha0VFYWlCS0lBY2dFMGdiS0FJQUlSMGdJU0FIUlEwQUdpQktJQWNnRTBvTkFCb2dBU0E2YWdzaEFTQUdJQUVvQWdBZ0hXcEJBWFVnQ0dvMkFnQWdCMEVCYWlJSElEVkhEUUFMREFJTElBY2dOazROQUFOQUlCSWdCMEVEZEdvaUFTQUJLQUlBQW44Q1FDQUhRUUJLQkVBZ09pQUhJREVnQnlBeFNCdEJBM1JxS0FJQUlRZ01BUXNnSVNnQ0FDRUlJQ0VnQjBFQVNBMEJHZ3NnVVNBSElERk9EUUFhSUJJZ0IwRURkR3BCQkdvTEtBSUFJQWhxUVFKcVFRSjFhellDQUNBSFFRRnFJZ2NnTmtjTkFBc0xJQkFnTlU0TkFDQWdJQkFpQVNJSFNnUkFBMEFnRWlBSFFRTjBhaUlCSUFFb0FnUWdFaUFIUVFGcUlnZEJBM1JxS0FJQUlBRW9BZ0JxUVFGMWFqWUNCQ0FISUNCSERRQUxJQ0FoQVFzZ0FTQTFUZzBBQTBBQ2Z3SkFJQUVpQjBFQVRnUkFJQklnQVVFRGRHb2dTU0FCSUJOSUd5Z0NBQ0VHSUFGQkFXb2hDQXdCQ3lBU0tBSUFJUVpCQUNFSUlCSWdCMEVCYWlJQkRRRWFDeUFJSUJOT0JFQWdDQ0VCSUVrTUFRc2dFaUFJSWdGQkEzUnFDeUVJSUJJZ0IwRURkR29pQnlBSEtBSUVJQWdvQWdBZ0JtcEJBWFZxTmdJRUlBRWdOVWdOQUFzTElEa2dEeUFZSUVjZ0xTQllRUUZCQUVFQUVDcEZEUVlMSUMwaUdDQWtSdzBBQ3dzZ0NVR1lBV29oQ1NBeVFRRjBJZ0VnTzBFQmRFRUJjaUlISUFFZ0Iwc2JJZ0VnSkNBQklDUkpHeUUrSUNrZ0RFRUZkQ0lCUVJCeUlnWnFJRG9nTDBFRmRDSUlhaUFNSUM5SUlnY2JJVVFnQmlBbGFpQUlJRUJxSUFjYklVVWdCaUFoYWlBSUlFRnFJQWNiSVVZZ0JpQVNhaUFJSUVKcUlBY2JJVWdnSHlBV1FRRnJJQllnSDBvYklRMGdMMEVBU2lJUUlCWkJBVXB5SVVrZ0FTQVNhaUlkSURkQkJIUnFJVW9nS1NBV1FRTjBJZ1pCQ0dzaU1rRUFJQlpCQUV3YlFRSjBJZ2hxSVVzZ0NDQWxhaUZSSUFnZ0lXb2hVaUFJSUJKcUlWTWdLVUVBSUM5QkEzUWlDRUVJYXlJN0lCQWJRUUowSWhCcUlWUWdFQ0FsYWlGVklCQWdJV29oVmlBUUlCSnFJVmNnRWtFRUlEZEJBblJyUVFKMGFpQVhRUVYwYWlGWUlDTWdMeUFqSUM5SUd5RVFJQXhCQVdvaEZDQVNJQnhCQVhRaUVTQXFRUUYwUVFGeUloTWdFU0FUU1JzaVdVRUVkR29oV2lBQklDbHFJVFFnQVNBbGFpRWNJQUVnSVdvaExTQXBJQlpCQlhRaUFXb2hXeUFHUVFGcklUMGdBU0FsYWlGY0lBWkJBbXNoTVNBQklDRnFJVjhnQmtFRGF5RTFJQUVnRW1vaFlDQUdRUVJySVRZZ0NFRUZheUZoSUFoQkJtc2hZaUFJUVFkcklXTWdGa1VnTDBFQlJuRWhaQ0FwSURKQkFuUWlBV29oWmlBQklDVnFJV2NnQVNBaGFpRm9JQUVnRW1vaGFTQXBJQWhCQkdzaWFrRUNkQ0lCYWlGcklBRWdKV29oYkNBQklDRnFJVzBnQVNBU2FpRnVJRG9nRENBdklBY2JRUVYwSWdGcUlXOGdBU0JBYWlFVElBRWdRV29oR0NBQklFSnFJWEFnS1NBN1FRSjBJZ0ZxSVhFZ0FTQWxhaUZ5SUFFZ0lXb2hjeUFCSUJKcUlYUURRQUpBQWtBQ2Z3SkFJQThpRVNCSFNRUkFJRGtnRHlBTVFRUWdSeUFQYXlJQklBRkJCRThiSUE5cUlnOGdJeUJLUVFGQkNCQWlJRGtnRVNCUUlBOGdUeUJZUVFGQkNCQWlJRGRGQkVBZ1NVVU5CU0FNSUNOT0RRUUNmeUFNUVFCS0JFQWdjQ2dDQUNFSElCTWhCaUFZSVFnZ2J3d0JDeUFTS0FJUUlRY2dERUVBU0EwRElEZ2hCaUE4SVFnZ1Rnc2dIU0FkS0FJQUlBY2dTQ2dDQUdwQkFtcEJBblZyTmdJQUlDMGdMU2dDQUNBSUtBSUFJRVlvQWdCcVFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ0JpZ0NBQ0JGS0FJQWFrRUNha0VDZFdzMkFnQWdSQ2dDQUNFSEtBSUFEQU1MSUdRRVFDQVNJQklvQWdCQkFtMDJBZ0FnRWlBU0tBSUVRUUp0TmdJRUlDVWdKU2dDQUVFQ2JUWUNBQ0FwSUNrb0FnQkJBbTAyQWdBTUJRc2dJeUFNSWdkS0JFQURRQ0FIUVFOMElRWUNRQUpBSUFkQkFFZ0VRQ0FIUVg5R0RRRWdFaUFHUVFKMGFpSUJJQUg5QUFJUUlCTDlBQUlBUVFIOXF3SDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFnc2dFaUFHUVFKMGFpSUJLQUlRSVFnZ0x5QUhRUUZxSWlCTUJFQWdBU0FJSUJJZ0JpQTdJQWNnTDBnaUNCdEJBblJxS0FJQUlIUW9BZ0JxUVFKcVFRSjFhellDRUNBQklBRW9BaFFnRWlBR1FRRnlJR01nQ0J0QkFuUnFLQUlBSUhNb0FnQnFRUUpxUVFKMWF6WUNGQ0FCSUFFb0FoZ2dFaUFHUVFKeUlHSWdDQnRCQW5ScUtBSUFJSElvQWdCcVFRSnFRUUoxYXpZQ0dDQUJJQUVvQWh3Z0VpQUdRUU55SUdFZ0NCdEJBblJxS0FJQUlIRW9BZ0JxUVFKcVFRSjFhellDSEF3Q0N5QUJJQUZCRkdvZ0NQMFIvVllDQUFFZ0FVRVlhdjFkQWdEOURRQUJBZ01FQlFZSEVCRVNFeFFWRmhjZ0FmMEFBZ0FnRWlBZ1FRVjBhdjBBQWdEOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFRc2dRaUJDS0FJQUlCSW9BZ0FnVnlnQ0FHcEJBbXBCQW5Wck5nSUFJRUVnUVNnQ0FDQVNLQUlFSUZZb0FnQnFRUUpxUVFKMWF6WUNBQ0JBSUVBb0FnQWdKU2dDQUNCVktBSUFha0VDYWtFQ2RXczJBZ0FnT2lBNktBSUFJQ2tvQWdBZ1ZDZ0NBR3BCQW1wQkFuVnJOZ0lBQ3lBSFFRRnFJZ2NnSTBjTkFBc0xJQjhnRnlJSFRBMEVBMEFnQjBFRGRDRUdBa0FnQjBFQVNBUkFJQklnQmtFQ2RHb2lBU0FTL1FBQ0VFRUIvYXNCUVFIOXJBRWdBZjBBQWdEOXJnSDlDd0lBREFFTElBY0VRQ0FTSUFaQkFuUWlDR29pQVNBQktBSUFJR0FnQVNBSElCWktJaUFiUVJCcktBSUFJQklnQmtFRWNpQTJJQWNnRmtnaUtodEJBblJxS0FJQWFrRUJkV28yQWdBZ0FTQUJLQUlFSUY4Z0NDQWhhaUFnRzBFUWF5Z0NBQ0FTSUFaQkJYSWdOU0FxRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FCSUFFb0FnZ2dYQ0FJSUNWcUlDQWJRUkJyS0FJQUlCSWdCa0VHY2lBeElDb2JRUUowYWlnQ0FHcEJBWFZxTmdJSUlBRWdBU2dDRENCYklBZ2dLV29nSUJ0QkVHc29BZ0FnRWlBR1FRZHlJRDBnS2h0QkFuUnFLQUlBYWtFQmRXbzJBZ3dNQVFzZ0VpQVNLQUlBSUJJb0FoQWdFa0VFSURZZ0J5QVdTQ0lCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FTSUJJb0FnUWdFaWdDRkNBU1FRVWdOU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FsSUNVb0FnQWdFaWdDR0NBU1FRWWdNU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FwSUNrb0FnQWdFaWdDSENBU1FRY2dQU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQXNnQjBFQmFpSUhJQjlIRFFBTERBUUxJQ3doRXlBa0lSWWdRMEVCYWlKRElCNUhEUVVNQmdzZ0hTQWRLQUlBSUFkQkFYUkJBbXBCQW5Wck5nSUFJQzBnTFNnQ0FDQThLQUlBUVFGMFFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ09DZ0NBRUVCZEVFQ2FrRUNkV3MyQWdBZ1RpZ0NBQ0lIQ3lFQklEUWdOQ2dDQUNBQklBZHFRUUpxUVFKMWF6WUNBQ0FNSVFZZ0VDQVVJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0FDQVNJQVpCQlhScS9RQUNFQ0FIL1FBQ0VQMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCL1FzQ0FDQUJJZ1pCQVdvaUFTQVFSdzBBQ3lBUUlRY0xJQWNnSTA0TkFBTkFJQWRCQTNRaUJrRUVjaUVnSUFjZ0wwZ2hDQUovSUFkQkFFd0VRQ0FTS0FJUUlTb2dCMEVBVGdSQUlCSWdCa0VDZENJd2FpSUJJQUVvQWdBZ0tpQVNJQ0FnYWlBSUcwRUNkQ0lCYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ0VnTUdvaUNDQUlLQUlBSUJJb0FoUWdBU0FoYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ1VnTUdvaUNDQUlLQUlBSUJJb0FoZ2dBU0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQklvQWh3Z0FTQXBhaWdDQUdwQkFtb01BZ3NnRWlBR1FRSjBJZ0ZxSWdnZ0NDZ0NBQ0FxUVFGMFFRSnFRUUoxYXpZQ0FDQUJJQ0ZxSWdnZ0NDZ0NBQ0FTS0FJVVFRRjBRUUpxUVFKMWF6WUNBQ0FCSUNWcUlnRWdBU2dDQUNBU0tBSVlRUUYwUVFKcVFRSjFhellDQUNBU0tBSWNRUUYwUVFKcURBRUxJQklnQnlBdklBZ2JRUU4wUVFSclFRSjBJZ0ZxS0FJQUlTb2dDRVVFUUNBU0lBWkJBblFpQ0dvaUlDQWdLQUlBSUNvZ2JpZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0lXb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ2JTZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0pXb2lDQ0FJS0FJQUlBRWdKV29vQWdBZ2JDZ0NBR3BCQW1wQkFuVnJOZ0lBSUFFZ0tXb29BZ0FnYXlnQ0FHcEJBbW9NQVFzZ0VpQUdRUUowSWpCcUlnZ2dDQ2dDQUNBcUlCSWdJRUVDZENJSWFpZ0NBR3BCQW1wQkFuVnJOZ0lBSUNFZ01Hb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ0NDQWhhaWdDQUdwQkFtcEJBblZyTmdJQUlDVWdNR29pSUNBZ0tBSUFJQUVnSldvb0FnQWdDQ0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS1dvb0FnQWdDQ0FwYWlnQ0FHcEJBbW9MSVFFZ0tTQUdRUUowYWlJR0lBWW9BZ0FnQVVFQ2RXczJBZ0FnQjBFQmFpSUhJQ05IRFFBTEN5QVhJQjlPRFFBZ0RTQVhJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0lDQUgvUUFDQVAydUFVRUIvYXdCSUFmOUFBSVEvYTRCL1FzQ0VDQUJRUUZxSWdFZ0RVY05BQXNnRFNFSEN5QUhJQjlPRFFBRFFDQXBJQWRCQTNRaUFVRUVjaUlHUVFKMGFpSXFBbjhnQjBFQVNBUkFJQklvQWdBaEFTQUhRWDlIQkVBZ0VpQUdRUUowSWdacUlnZ2dDQ2dDQUNBQmFqWUNBQ0FHSUNGcUlnRWdBU2dDQUNBaEtBSUFhallDQUNBR0lDVnFJZ0VnQVNnQ0FDQWxLQUlBYWpZQ0FDQXBLQUlBREFJTElCSWdCa0VDZENJR2FpSUlJQWdvQWdBZ1V5Z0NBQ0FCYWtFQmRXbzJBZ0FnQmlBaGFpSUJJQUVvQWdBZ1VpZ0NBQ0FoS0FJQWFrRUJkV28yQWdBZ0JpQWxhaUlCSUFFb0FnQWdVU2dDQUNBbEtBSUFha0VCZFdvMkFnQWdTeWdDQUNBcEtBSUFha0VCZFF3QkN5QVNJQUVnTWlBSElCWklHMEVDZEdvaUFTZ0NBQ0VJSUJZZ0IwRUJhaUl3VEFSQUlCSWdCa0VDZENJR2FpSWdJQ0FvQWdBZ2FTZ0NBQ0FJYWtFQmRXbzJBZ0FnQmlBaGFpSUlJQWdvQWdBZ2FDZ0NBQ0FCS0FJRWFrRUJkV28yQWdBZ0JpQWxhaUlHSUFZb0FnQWdaeWdDQUNBQktBSUlha0VCZFdvMkFnQWdaaWdDQUNBQktBSU1ha0VCZFF3QkN5QVNJQVpCQW5RaUlHb2lCaUFHS0FJQUlBZ2dFaUF3UVFWMGFpSUdLQUlBYWtFQmRXbzJBZ0FnSUNBaGFpSUlJQWdvQWdBZ0JpZ0NCQ0FCS0FJRWFrRUJkV28yQWdBZ0lDQWxhaUlJSUFnb0FnQWdCaWdDQ0NBQktBSUlha0VCZFdvMkFnQWdCaWdDRENBQktBSU1ha0VCZFFzZ0tpZ0NBR28yQWdBZ0IwRUJhaUlISUI5SERRQUxDeUE1SUJFZ1dTQVBJRDRnV2tFQlFRUkJBQkFxRFFBTEN3d0NDeUFTRUJSQkFTRUhDeUE1SUN0QkVHc29BZ0FpQVNCZEtBSUFJZ1pySUN0QkRHc29BZ0FnWGlnQ0FDSUlheUFyUVFocktBSUFJZ2tnQm1zZ0swRUVheWdDQUNBSWF5QU9LQUkwUVFFZ0NTQUJheEFpSURrUUp3d0RDeUE1RUNjZ0VoQVVRUUFoQnd3Q0N5QTVFQ2RCQUNFSERBRUxRUUFoQnlBWEVDUWdEQkFVQ3lBblFTQnFKQUFnQncwQkRBVUxJQUVoQjBFQUlRejlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhkaU1BUVVCcUloNGtBQUpBQW44Q1FDQWJLQUpBQkVBZ0RpZ0NIQ0lYSUE0b0FoaEJtQUZzYWlJQlFaZ0JheWdDQUNFWUlBRkJrQUZyS0FJQUlSMGdGeWdDQkNFTklCY29BZ3dnRnlnQ0FDRVJJQmNvQWdnaEZFRUJJUVlnR3lnQ0xDSWpLQUlFSVNZZ0IwRUJSZzBEUVFBaENDQUhRUUZySWc4aENTQVhJUUVDUUNBUFFRUlBCRUFnRDBFRGNTRUpJQUVnRDBGOGNTSU1RWmdCYkdvaEFVRUFJUVlEUUNCMklCY2dCa0dZQVd4cUlnZEI2QVJxSUFkQjBBTnFJQWRCdUFKcUlBZjlYQUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFIUWVBRWFpQUhRY2dEYWlBSFFiQUNhaUFIL1Z3Q21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQjBIc0JHb2dCMEhVQTJvZ0IwRzhBbW9nQi8xY0FxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBZEI1QVJxSUFkQnpBTnFJQWRCdEFKcUlBZjlYQUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTRjJJQVpCQkdvaUJpQU1SdzBBQ3lCMklIWWdkdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNKMklIWWdkdjBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzI1QWYwYkFDRUlJQXdnRDBZTkFRc0RRQ0FJSUFFb0FxQUJJQUVvQXBnQmF5SUhJQWNnQ0VrYklnY2dBU2dDcEFFZ0FTZ0NuQUZySWdZZ0JpQUhTUnNoQ0NBQlFaZ0JhaUVCSUFsQkFXc2lDUTBBQ3d0QkFDRUdJQWhCLy8vL1Awc05BeUFlSUFoQkJYUWlSeEFjSWdFMkFpQWdBVVVOQXlBZUlBRTJBZ0FnRDBVRVFFRUJJUVlnQVJBVURBUUxJQTFySVEwZ0ZDQVJheUVNUVFJZ0prRUJkaUlCSUFGQkFrMGJJVVFnRGlnQ0pDSUhJQjFCSEd3aVhTQVlRUnhzSWw1cmFpRWtJQWNnSFVFWWJDSlJJQmhCR0d3aVVtdHFJUzRnQnlBZFFSUnNJbE1nR0VFVWJDSlVhMm9oTENBSElCMUJCSFFpVlNBWVFRUjBJbFpyYWlFdElBY2dIVUVNYkNKWElCaEJER3dpV0d0cUlTQWdCeUFkUVFOMElsa2dHRUVEZENKYWEyb2hPQ0FkSUJockloRkJCWFFoUlNBUlFRZHNJVTRnRVVFR2JDRkdJQkZCQld3aFR5QVJRUU5zSVZBZ0VVRUJkQ0ZJSUFjZ0VVRUNkQ0pBYWlFOElCSDlFU0Y2QTBBZ0hpQU5OZ0lJSUI0Z0RDSUJOZ0lvSUJjb0Fwd0JJUjhnRnlnQ3BBRWhLQ0FYS0FLZ0FTRXFJQmNvQXBnQklSb2dIa0VBTmdJNElCNGdBVFlDTkNBZVFRQTJBakFnSGlBYVFRSnZJaHcyQWl3Z0hpQXFJQnBySWd3Z0FXc2lGRFlDUENBZUlCUTJBaVFDUUNBbVFRSklJbHRGSUNnZ0gyc2lEVUVQUzNGRkJFQkJBQ0VHSUFjaENDQU5RUWhKRFFFZ0xDQUhJRkVnS2tFQ2RDSUJhaUJTSUJwQkFuUWlDV3ByYWlJK1NTQXVJQWNnQVNCVGFpQUpJRlJxYTJvaVFVbHhJQ1FnUVVrZ0xDQUhJQUVnWFdvZ0NTQmVhbXRxSWtKSmNYSWhYQ0E4SUFjZ0FTQlphaUFKSUZwcWEyb2lTVWtnT0NBSElCMGdLbW9nR0NBYWFtdEJBblJxSWtwSmNTQWdJRXBKSUR3Z0J5QUJJRmRxSUFrZ1dHcHJhaUpMU1hGeUlWOGdMU0JCU1NBc0lBY2dBU0JWYWlBSklGWnFhMm9pUTBseElDMGdQa2tnTGlCRFNYRnlJQzBnUWtrZ0pDQkRTWEZ5SVdBZ0xpQkNTU0FrSUQ1SmNTRmhJRGdnUzBrZ0lDQkpTWEVoWWlBSElBRWdDV3RxSVRJZ0RFRjhjU0VKSUI0b0FpQWlGRUVNYWlFN0lCUkJDR29oTkNBVVFRUnFJVDBnRkVFY2FpRVNJQlJCR0dvaElTQVVRUlJxSVNVZ0ZFRVFhaUVwSUJRZ0RFRUZkR29pRmtFUWF5RW5JQlpCRkdzaEx5QVdRUmhySVRFZ0ZrRWNheUU1SUJaQkJHc2hPaUFXUVFocklUVWdGa0VNYXlFMlFRQWhIQ0FNUWF3QlNTRmpJQXhCTEVraFpBTkFJQVloRUNBZVFTQnFJZ0VnQ0NBUlFRZ1FReUFCRUNZQ1FDQU1SUTBBSUJ3Z1JXd2hCa0VBSVFFQ1FBSkFJR01OQUNCaUlBZ2dPVWtnRkNBR0lESnFJamRKY1NBZ0lESkpJQWdnQmlCTGFpSVRTWEVnQ0NBR0lFcHFJaXRKSURJZ1BFdHhJQWdnQmlCSmFpSXdTU0F5SURoTGNYSnljaUFJSURGSklEY2dQVXR4Y2lBSUlDOUpJRFFnTjBseGNpQUlJQ2RKSURjZ08wdHhjaUJmY2lBVUlDdEpJQVlnUEdvaU55QTVTWEZ5SUNzZ1BVc2dNU0EzUzNGeUlDc2dORXNnTHlBM1MzRnlJQ3NnTzBzZ0p5QTNTM0Z5Y2cwQUlCUWdNRWtnQmlBNGFpSXJJRGxKY1EwQUlDc2dNVWtnTUNBOVMzRU5BQ0FySUM5SklEQWdORXR4RFFBZ01DQTdTeUFuSUN0TGNRMEFJQVlnSUdvaUt5QTVTU0FUSUJSTGNRMEFJQ3NnTVVrZ0V5QTlTM0VOQUNBcklDOUpJQk1nTkV0eERRQWdFeUE3U3lBbklDdExjUTBBQTBBZ0NDQUJRUUowYWlBVUlBRkJCWFJxSWhOQjRBQnFJQk5CUUdzZ0UwRWdhaUFUL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdDQ0FCSUJGcVFRSjBhaUFUUWVRQWFpQVRRY1FBYWlBVFFTUnFJQlA5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnU0dwQkFuUnFJQk5CNkFCcUlCTkJ5QUJxSUJOQktHb2dFLzFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JRYWtFQ2RHb2dFMEhzQUdvZ0UwSE1BR29nRTBFc2FpQVQvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FVRUVhaUlCSUFsSERRQUxJQWtpQVNBTVJnMEJDd05BSUFnZ0FVRUNkR29nRkNBQlFRVjBhaUlUS2dJQU9BSUFJQWdnQVNBUmFrRUNkR29nRXlvQ0JEZ0NBQ0FJSUFFZ1NHcEJBblJxSUJNcUFnZzRBZ0FnQ0NBQklGQnFRUUowYWlBVEtnSU1PQUlBSUFGQkFXb2lBU0FNUncwQUN3dEJBQ0VCQWtBZ1pBMEFJR0VnQmlBc2FpSVRJRFpKSUNrZ0JpQkJhaUlyU1hFZ1lDQUdJQzFxSWpBZ05ra2dLU0FHSUVOcUlqZEpjWElnSlNBM1NTQXdJRFZKY1hJZ0lTQTNTU0F3SURwSmNYSWdFaUEzU1NBV0lEQkxjWElnWEhKeUlDVWdLMGtnRXlBMVNYRnlJQ0VnSzBrZ0V5QTZTWEZ5SUJJZ0swa2dFeUFXU1hGeWNnMEFJQVlnTG1vaUV5QTJTU0FwSUFZZ1Btb2lLMGx4RFFBZ0pTQXJTU0FUSURWSmNRMEFJQ0VnSzBrZ0V5QTZTWEVOQUNBU0lDdEpJQk1nRmtseERRQWdCaUFrYWlJVElEWkpJQ2tnQmlCQ2FpSUdTWEVOQUNBVElEVkpJQVlnSlV0eERRQWdFeUE2U1NBR0lDRkxjUTBBSUJNZ0Zra2dCaUFTUzNFTkFBTkFJQWdnQVNCQWFrRUNkR29nRkNBQlFRVjBhaUlHUWZBQWFpQUdRZEFBYWlBR1FUQnFJQWI5WEFJUS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnVDJwQkFuUnFJQVpCOUFCcUlBWkIxQUJxSUFaQk5Hb2dCdjFjQWhUOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JHYWtFQ2RHb2dCa0g0QUdvZ0JrSFlBR29nQmtFNGFpQUcvVndDR1AxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0NDQUJJRTVxUVFKMGFpQUdRZndBYWlBR1Fkd0FhaUFHUVR4cUlBYjlYQUljL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQlFRUnFJZ0VnQ1VjTkFBc2dDU0lCSUF4R0RRRUxBMEFnQ0NBQklFQnFRUUowYWlBVUlBRkJCWFJxSWdZcUFoQTRBZ0FnQ0NBQklFOXFRUUowYWlBR0tnSVVPQUlBSUFnZ0FTQkdha0VDZEdvZ0Jpb0NHRGdDQUNBSUlBRWdUbXBCQW5ScUlBWXFBaHc0QWdBZ0FVRUJhaUlCSUF4SERRQUxDeUFjUVFGcUlSd2dFRUVJYWlFR0lBZ2dSV29oQ0NBUVFROXFJQTFKRFFBTERBRUxJQTBnRFVFRGRpSUdJQ1lnQmlBbVNSc2lFMjVCZUhFaEZpQU5RWGh4SVFaQkFDRUpJQWNoQ0FOQVFUQVFHQ0lRUlEwRUlCQWdSeEFjSWpJMkFnQWdNa1VFUUNBakVDUWdFQkFVUVFBTUJnc2dFQ0FJTmdJb0lCQWdFVFlDSkNBUUlBdzJBaUFnRUNBVU5nSWNJQkJCQURZQ0dDQVFJQUUyQWhRZ0VFRUFOZ0lRSUJBZ0hEWUNEQ0FRSUFFMkFnZ2dFQ0FVTmdJRUlCQWdCaUFKSUJac2F5QVdJQWxCQVdvaUNTQVRSaHNpTWpZQ0xDQWpRUXdnRUJBeklBZ2dFU0F5YkVFQ2RHb2hDQ0FKSUJOSERRQUxJQ01RSkFzQ1FDQUdJQTFQRFFBZ0hrRWdhaUlCSUFnZ0VTQU5JQVpySWhRUVF5QUJFQ1lnREVVTkFDQWVLQUlnSWhZZ0trRUZkQ0FvUVFKMGFpQUdJQjlxUVFKMElCcEJCWFJxYTJwQklHc2hHaUFVUVh4eElSQWdRQ0FvSUFaQmYzTnFJQjlyYkNFcVFRQWhDUU5BSUJZZ0NVRUZkR29oSEVFQUlRRUNRQUpBSUJSQkJFa05BQ0FhSUFnZ0NVRUNkQ0lCYWlJR0lBZ2dBU0FxYW1vaUV5QUdJQk5KRzBzRVFFRUFJUUVnRmlBR0lCTWdCaUFUU3h0QkJHcEpEUUVMSUFuOUVTRjMvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUFJWFpCQUNFQkEwQWdDQ0IySUhyOXRRRWdkLzJ1QVNKNC9Sc0FRUUowYWlBY0lBRkJBblJxL1FBQ0FDSjUvUjhBT0FJQUlBZ2dlUDBiQVVFQ2RHb2dlZjBmQVRnQ0FDQUlJSGo5R3dKQkFuUnFJSG45SHdJNEFnQWdDQ0I0L1JzRFFRSjBhaUI1L1I4RE9BSUFJSGI5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGRpQUJRUVJxSWdFZ0VFY05BQXNnRUNJQklCUkdEUUVMQTBBZ0NDQUJJQkZzSUFscVFRSjBhaUFjSUFGQkFuUnFLZ0lBT0FJQUlBRkJBV29pQVNBVVJ3MEFDd3NnQ1VFQmFpSUpJQXhIRFFBTEN5QWVJQTBnSGlnQ0NDSVFheUlUTmdJRUlCY29BcHdCSVFFZ0hpQVROZ0ljSUI3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FVRUNieUlxL1J3QUlCRDlIQUlpZHYwTEFnd0NRQ0JiUlNBTVFROUxjVVVFUUNBSElRRWdERUVJU1EwQklBMUJmbkVoT3lBTlFRRnhJVFFnRTBGK2NTRTlJQk5CQVhFaEVpQVFRWDV4SVNFZ0VFRUJjU0VsSUNnZ0gwRi9jMm9oTWlBZUtBSUFJaFFnS2tFRmRDSUdhaUVXSUJRZ0JtdEJJR29oSENBUUlCRnNRUUowSVNrZ0RDRUpBMEJCQUNFSVFRQWhCZ0pBQWtBQ1FDQVFEZ0lDQVFBTEEwQWdGaUFJUVFaMGFpSWFJQUVnQ0NBUmJFRUNkR29pSi8wQUFnRDlDd0lBSUJvZ0ovMEFBaEQ5Q3dJUUlCWWdDRUVCY2lJYVFRWjBhaUluSUFFZ0VTQWFiRUVDZEdvaUd2MEFBaEQ5Q3dJUUlDY2dHdjBBQWdEOUN3SUFJQWhCQW1vaENDQUdRUUpxSWdZZ0lVY05BQXNMSUNWRkRRQWdGaUFJUVFaMGFpSUdJQUVnQ0NBUmJFRUNkR29pQ1AwQUFnRDlDd0lBSUFZZ0NQMEFBaEQ5Q3dJUUN3SkFJQTBnRUVZTkFDQUJJQ2xxSVJwQkFDRUlRUUFoQmlBUUlESkhCRUFEUUNBY0lBaEJCblJxSWljZ0dpQUlJQkZzUVFKMGFpSXYvUUFDQVAwTEFnQWdKeUF2L1FBQ0VQMExBaEFnSENBSVFRRnlJaWRCQm5ScUlpOGdHaUFSSUNkc1FRSjBhaUluL1FBQ0VQMExBaEFnTHlBbi9RQUNBUDBMQWdBZ0NFRUNhaUVJSUFaQkFtb2lCaUE5UncwQUN3c2dFa1VOQUNBY0lBaEJCblJxSWdZZ0dpQUlJQkZzUVFKMGFpSUkvUUFDQVAwTEFnQWdCaUFJL1FBQ0VQMExBaEFMSUI0UUpnSkFJQTFGRFFCQkFDRUlRUUFoQmlBeUJFQURRQ0FCSUFnZ0VXeEJBblJxSWhvZ0ZDQUlRUVYwYWlJbi9RQUNBUDBMQWdBZ0dpQW4vUUFDRVAwTEFoQWdBU0FJUVFGeUlob2dFV3hCQW5ScUlpY2dGQ0FhUVFWMGFpSWEvUUFDRVAwTEFoQWdKeUFhL1FBQ0FQMExBZ0FnQ0VFQ2FpRUlJQVpCQW1vaUJpQTdSdzBBQ3dzZ05FVU5BQ0FCSUFnZ0VXeEJBblJxSWdZZ0ZDQUlRUVYwYWlJSS9RQUNBUDBMQWdBZ0JpQUkvUUFDRVAwTEFoQUxJQUZCSUdvaEFTQUpRUWhySWdsQkIwc05BQXNNQVF0QkFTQU1RUU4ySWdFZ1JDQUJJRVJKR3lJSklBbEJBVTBiSVJZZ0RDQUpia0Y0Y1NFVUlBeEJlSEVoSEVFQUlRWWdCeUVCQTBCQk1CQVlJZ2hGRFFRZ0NDQkhFQndpR2pZQ0FDQWFSUVJBSUNNUUpDQUlFQlJCQUF3R0N5QUlJQUUyQWlnZ0NDQVJOZ0lrSUFnZ0RUWUNJQ0FJSUJNMkFod2dDQ0IyL1FzQ0RDQUlJQkEyQWdnZ0NDQVROZ0lFSUFnZ0hDQUdJQlJzYXlBVUlBWkJBV29pQmlBSlJoc2lHallDTENBalFRMGdDQkF6SUFFZ0drRUNkR29oQVNBR0lCWkhEUUFMSUNNUUpBc0NRQ0FNUVFkeElnWkZEUUFnS2tFRmRDRWFJQjRvQWdBaENRSkFJQkJGRFFBZ0NTQWFhaUVVSUFaQkFuUWhGa0VBSVFnZ0VFRUJSd1JBSUJCQmZuRWhLa0VBSVJ3RFFDQVVJQWhCQm5ScUlBRWdDQ0FSYkVFQ2RHb2dGaEFXR2lBVUlBaEJBWElpTWtFR2RHb2dBU0FSSURKc1FRSjBhaUFXRUJZYUlBaEJBbW9oQ0NBY1FRSnFJaHdnS2tjTkFBc0xJQkJCQVhGRkRRQWdGQ0FJUVFaMGFpQUJJQWdnRVd4QkFuUnFJQllRRmhvTEFrQWdEU0FRUmcwQUlBa2dHbXRCSUdvaEZpQUJJQkFnRVd4QkFuUnFJUndnQmtFQ2RDRWFRUUFoQ0NBUUlDZ2dIMEYvYzJwSEJFQWdFMEYrY1NFUVFRQWhGQU5BSUJZZ0NFRUdkR29nSENBSUlCRnNRUUowYWlBYUVCWWFJQllnQ0VFQmNpSXFRUVowYWlBY0lCRWdLbXhCQW5ScUlCb1FGaG9nQ0VFQ2FpRUlJQlJCQW1vaUZDQVFSdzBBQ3dzZ0UwRUJjVVVOQUNBV0lBaEJCblJxSUJ3Z0NDQVJiRUVDZEdvZ0doQVdHZ3NnSGhBbUlBMUZEUUFnQmtFQ2RDRVFRUUFoQ0NBZlFRRnFJQ2hIQkVBZ0RVRitjU0VVUVFBaEJnTkFJQUVnQ0NBUmJFRUNkR29nQ1NBSVFRVjBhaUFRRUJZYUlBRWdDRUVCY2lJVElCRnNRUUowYWlBSklCTkJCWFJxSUJBUUZob2dDRUVDYWlFSUlBWkJBbW9pQmlBVVJ3MEFDd3NnRFVFQmNVVU5BQ0FCSUFnZ0VXeEJBblJxSUFrZ0NFRUZkR29nRUJBV0dnc2dGMEdZQVdvaEZ5QVBRUUZySWc4TkFBdEJBUXdDQzBFQklRWWdEaWdDSENJWElBZEJtQUZzYWlJYVFaZ0JheUk4S0FJQUlCcEJrQUZyS0FJQVJnMENJQnBCbEFGcklpb29BZ0FnR2tHTUFXc29BZ0JHRFFJZ0Z5Z0NCQ0VOSUJjb0Fnd2hFQ0FYS0FJQUlSRWdGeWdDQ0NFWUlBNG9Ba1FoRkNBT0tBSkFJUk1nRGlnQ1BDRVdJQTRvQWpnaEhTQU9JQWNRWlNJb1JRUkFRUUFoQmd3REN5QUhRUUZHQkVBZ0tDQWFRUkJyS0FJQUlnRWdQQ2dDQUNJSGF5QWFRUXhyS0FJQUlDb29BZ0FpQ0dzZ0drRUlheWdDQUNJSklBZHJJQnBCQkdzb0FnQWdDR3NnRGlnQ05FRUJJQWtnQVdzUUlpQW9FQ2NNQXd0QkFDRUlBa0FDUUNBSFFRRnJJZ2xCQkVrRVFDQUpJUVlnRnlFQkRBRUxJQWxCQTNFaEJpQVhJQWxCZkhFaUQwR1lBV3hxSVFFRFFDQjJJQmNnREVHWUFXeHFJZ2hCNkFScUlBaEIwQU5xSUFoQnVBSnFJQWo5WEFLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlQUVhaUFJUWNnRGFpQUlRYkFDYWlBSS9Wd0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0NFSHNCR29nQ0VIVUEyb2dDRUc4QW1vZ0NQMWNBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQWhCNUFScUlBaEJ6QU5xSUFoQnRBSnFJQWo5WEFLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0YySUF4QkJHb2lEQ0FQUncwQUN5QjJJSFlnZHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8yNUFTSjJJSFlnZHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VJSUFrZ0QwWU5BUXNEUUNBSUlBRW9BcUFCSUFFb0FwZ0JheUlKSUFnZ0NVc2JJZ2dnQVNnQ3BBRWdBU2dDbkFGcklna2dDQ0FKU3hzaENDQUJRWmdCYWlFQklBWkJBV3NpQmcwQUN3c0NRQ0FJUVlDQWdNQUFUdzBBSUI0Z0NFRUZkQkFjSWlZMkFpQWdKa1VOQUNBZUlDWTJBZ0FDUUNBSEJFQWdFQ0FOYXlFTklCZ2dFV3NoQ0NBbVFTQnFJVElnQjYwaGZTQVVyU0dBQVNBVHJTR0JBU0FXclNGK0lCMnRJWUlCSUE0b0FoUWlQYTBoZ3dGQ0FTRjhBMEFnSGlBTk5nSUlJQjRnQ0RZQ0tDQVhLQUtrQVNFSElCY29BcUFCSVFZZ0Z5Z0NuQUVoQVNBZUlCY29BcGdCSWdsQkFtOGlKRFlDTENBZUlBRkJBbThpT3pZQ0RDQWVJQVlnQ1dzaUl5QUlheUl1TmdJa0lCNGdCeUFCYXlJUUlBMXJJalEyQWdRZ0hTSVBJUWtnRmlJQklRd2dFeUlHSVJ3Z0ZDSUhJUkVDUUNCOElJTUJVUTBBSUQwZ2ZLZHJJUmhCQUNFTVFRQWhDU0FQQkVCQ2Z5QVlyU0ovaGtKL2hTQ0NBWHdnZjRpbklRa0xJQllFUUVKL0lCaXRJbitHUW4rRklINThJSCtJcHlFTUMwRUFJUWRCQUNFR0lCTUVRRUovSUJpdEluK0dRbitGSUlFQmZDQi9pS2NoQmdzZ0ZBUkFRbjhnR0swaWY0WkNmNFVnZ0FGOElIK0lweUVIQzBFQUlSeEJBQ0VQUVFFZ0dFRUJhM1FpSHlBZFNRUkFJQjBnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFUEN5QVRJQjlMQkVBZ0V5QWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUndMUVFBaEVVRUFJUUVnRmlBZlN3UkFJQllnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFQkN5QVVJQjlORFFBZ0ZDQWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUkVMUVg4Z0hDQVhLQUswQVNJWWF5SWZRUUFnSENBZlR4c2lIMEVFYWlJY0lCd2dIMGtiSWg4Z0xpQWZJQzVKR3lJZ1FYOGdCaUFYS0FMWUFTSWZheUljUVFBZ0JpQWNUeHNpQmtFRWFpSWNJQVlnSEVzYklnWWdDQ0FHSUFoSkd5STRJQ1FiUVFGMElnWWdPQ0FnSUNRYlFRRjBRUUZ5SWh3Z0JpQWNTeHNpSENBalNTRXVJQThnR0dzaUJrRUFJQVlnRDAwYklnWkJCR3NpRDBFQUlBWWdEMDhiSWl3Z0NTQWZheUlHUVFBZ0JpQUpUUnNpQmtFRWF5SUpRUUFnQmlBSlR4c2lMU0FrRzBFQmRDSVNJQzBnTENBa0cwRUJkRUVCY2lJaFNTRWxJQXdnRnlnQ3VBRWlDV3NpQmtFQUlBWWdERTBiSWdaQkJHc2lEMEVBSUFZZ0QwOGJJZ1loRHlBQklCY29BdHdCSWd4ckloaEJBQ0FCSUJoUEd5SUJRUVJySWhoQkFDQUJJQmhQR3lJQklSOUJmeUFISUFscklnbEJBQ0FISUFsUEd5SUhRUVJxSWdrZ0J5QUpTeHNpQnlBTklBY2dEVWtiSWdraEIwRi9JQkVnREdzaURFRUFJQXdnRVUwYklneEJCR29pRVNBTUlCRkxHeUlNSURRZ0RDQTBTUnNpR0NFUklEc0VRQ0FCSVE4Z0JpRWZJQWtoRVNBWUlRY0xJQndnSXlBdUd5RXVJQklnSVNBbEd5RWNJQjRnSURZQ1BDQWVJQ3cyQWpnZ0hpQTROZ0kwSUI0Z0xUWUNNQUpBSUJCQkNFa0VRRUVISVFoQkFDRU1EQUVMSURJZ0pFRUZkQ0lNYXlBc1FRWjBhaUUwSUF3Z0ptb2dMVUVHZEdvaEVpQUlJQ0JxSVNBZ0NDQXNhaUVzSUEwZ0dHb2hJU0FCSUExcUlTVWdKaUFjUVFWMGFpRXBRUUFoREFOQUFrQUNRQ0FKSUF4TElBeEJCM0lpQ0NBR1QzRU5BQ0FNSUNGSklBZ2dKVTl4RFFBZ0RFRUlhaUVNREFFTFFRZ2dFQ0FNYXlJSUlBaEJDRThiSVNkQkFDRUlBMEFnS0NBdElBZ2dER29pSkNBNElDUkJBV29pTHlBU0lBaEJBblFpTVdwQkVFRUFFQ0lnS0NBc0lDUWdJQ0F2SURFZ05HcEJFRUVBRUNJZ0NFRUJhaUlJSUNkSERRQUxJQjVCSUdvUUppQW9JQndnRENBdUlBeEJDR29pRENBcFFRaEJBVUVBRUNwRkRRVUxJQXhCQjNJaUNDQVFTUTBBQ3dzQ1FDQU1JQkJQRFFBZ0JpQUlUU0FKSUF4TGNVVUVRQ0FNSUEwZ0dHcFBEUUVnQ0NBQklBMXFTUTBCQ3lBZVFTQnFJUWhCQUNFa0lCQWdER3NpTFFSQUEwQWdLQ0FJS0FJUUlpQWdEQ0FrYWlJc0lBZ29BaFFnTEVFQmFpSTRJQ1JCQW5RaU5DQUlLQUlBSUFnb0FneEJCWFJxSUNCQkJuUnFha0VRUVFBUUlpQW9JQWdvQWhnaUlDQUlLQUlJSWhKcUlDd2dDQ2dDSENBU2FpQTRJQWdvQWdBZ0NDZ0NERUVGZEdzZ0lFRUdkR29nTkdwQklHcEJFRUVBRUNJZ0pFRUJhaUlrSUMxSERRQUxDeUFJRUNZZ0tDQWNJQXdnTGlBUUlDWWdIRUVGZEdwQkNFRUJRUUFRS2tVTkF3c2dIaUFZTmdJY0lCNGdBVFlDR0NBZUlBazJBaFFnSGlBR05nSVFJQndnTGtrRVFDQUhRUUYwSWdjZ0VVRUJkRUVCY2lJSUlBY2dDRXNiSWdjZ0VDQUhJQkJKR3lFSElESWdPMEVGZENJSWF5QUJRUVowYWlFTUlBZ2dKbW9nQmtFR2RHb2hDQ0FOSUJocUlSRWdBU0FOYWlFTklDWWdEMEVCZENJQklCOUJBWFJCQVhJaUR5QUJJQTlKR3lJUFFRVjBhaUVZQTBBZ0tDQWNJQVpCQ0NBdUlCeHJJZ0VnQVVFSVR4c2dIR29pQVNBSklBaEJBVUVRRUNJZ0tDQWNJQTBnQVNBUklBeEJBVUVRRUNJZ0hoQW1JQ2dnSENBUElBRWdCeUFZUVFGQkNFRUFFQ3BGRFFRZ0hFRUlhaUljSUM1SkRRQUxDeUFYUVpnQmFpRVhJQ01oQ0NBUUlRMGdmRUlCZkNKOElIMVNEUUFMQzBFQklRWWdLQ0FhUVJCcktBSUFJZ0VnUENnQ0FDSUhheUFhUVF4cktBSUFJQ29vQWdBaUNHc2dHa0VJYXlnQ0FDSUpJQWRySUJwQkJHc29BZ0FnQ0dzZ0RpZ0NORUVCSUFrZ0FXc1FJaUFvRUNjZ0poQVVEQVFMSUNnUUp5QW1FQlJCQUNFR0RBTUxJQ2dRSjBFQUlRWU1BZ3NnSXhBa1FRQUxJUVlnSGlnQ0lCQVVDeUFlUVVCckpBQWdCZzBBREFRTElCbEJ1QWhxSVJrZ0NrRTBhaUVLSUE1QnpBQnFJUTRnQzBFQmFpSUxJQlVvQWhCSkRRQUxJQnNvQWlBaEdTQWJLQUlVS0FJQUlSVUxBa0FnR1NnQ0VDSU9SUTBBSUJzb0FrUU5BQ0FWS0FJVUlnb29BaHdoQVFKQUFrQUNRQUpBQWtBZ0d5Z0NRQ0lHQkVBZ0ZTZ0NFQ0lMUVFOSkRRSUNRQ0FLS0FJWUlnY2dDaWdDWkVZRVFDQUhJQW9vQXJBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SkN3SkFJQnNvQWhnb0FoZ2lDQ2dDSkNJSklBZ29BbGhIRFFBZ0NTQUlLQUtNQVVjTkFDQUJJQWRCbUFGc0lnaHFJZ0ZCakFGcktBSUFJQUZCbEFGcktBSUFheUFCUVpBQmF5Z0NBQ0FCUVpnQmF5Z0NBR3RzSWdFZ0NpZ0NhQ0FJYWlJSFFZd0JheWdDQUNBSFFaUUJheWdDQUdzZ0IwR1FBV3NvQWdBZ0IwR1lBV3NvQWdCcmJFY05BQ0FLS0FLMEFTQUlhaUlIUVl3QmF5Z0NBQ0FIUVpRQmF5Z0NBR3NnQjBHUUFXc29BZ0FnQjBHWUFXc29BZ0JyYkNBQlJnMENDeUF6UVFGQnhNNEFRUUFRRXd3SUN5QVZLQUlRSWd0QkEwa05BUUpBSUJzb0FoZ29BaGdpQnlnQ0pDSUlJQWNvQWxoSERRQWdDQ0FIS0FLTUFTSUpSdzBBSUFFZ0NFR1lBV3dpQjJvaUFTZ0NsQUVnQVNnQ2pBRnJJQUVvQXBBQklBRW9Bb2dCYTJ3aUFTQUhJQW9vQW1ocUlnY29BcFFCSUFjb0Fvd0JheUFIS0FLUUFTQUhLQUtJQVd0c1J3MEFJQW9vQXJRQklBbEJtQUZzYWlJSEtBS1VBU0FIS0FLTUFXc2dCeWdDa0FFZ0J5Z0NpQUZyYkNBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SEN5QU9RUUpHQkVBZ0dTZ0M2Q3RGRFFVZ0MwRUNkQkFZSWd0RkRRY2dGU2dDRUNJSlJRMEVJQnNvQWtBRVFFRUFJUlVnQ1VFTFRRMERJQXBCSkdvaUNDQUxJQWxCQW5ScVNRUi9JQW9nQ1VITUFHeHFRU1JySUF0TEJVRUFDdzBESUFwQmlBSnFJUThnQ2tHOEFXb2hEQ0FLUWZBQWFpRVhJQW9nQ1VGOGNTSUdRY3dBYkdvaENrRUFJUTREUUNBTElBNUJBblJxSUE4Z0RrSE1BR3dpQjJvZ0J5QU1haUFISUJkcUlBY2dDR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQU9RUVJxSWc0Z0JrY05BQXNnQmlBSlJ3MEVEQVVMUVFBaEZRSkFJQWxCREVrRVFFRUFJUVlNQVFzZ0NrRTBhaUVJQWtBZ0N5QUtJQWxCekFCc2FrRVVhMDhOQUNBSUlBc2dDVUVDZEdwUERRQkJBQ0VHREFFTElBcEJtQUpxSVE4Z0NrSE1BV29oRENBS1FZQUJhaUVYSUFvZ0NVRjhjU0lHUWN3QWJHb2hDa0VBSVE0RFFDQUxJQTVCQW5ScUlBOGdEa0hNQUd3aUIyb2dCeUFNYWlBSElCZHFJQWNnQ0dyOVhBSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FPUVFScUlnNGdCa2NOQUFzZ0JpQUpSZzBGQ3dKQUlBbEJBM0VpQjBVRVFDQUdJUTRNQVFzZ0JpRU9BMEFnQ3lBT1FRSjBhaUFLS0FJME5nSUFJQTVCQVdvaERpQUtRY3dBYWlFS0lCVkJBV29pRlNBSFJ3MEFDd3NnQmlBSmEwRjhTdzBFSUF0QkRHb2hCaUFMUVFocUlRZ2dDMEVFYWlFUEEwQWdDeUFPUVFKMElnZHFJQW9vQWpRMkFnQWdCeUFQYWlBS0tBS0FBVFlDQUNBSElBaHFJQW9vQXN3Qk5nSUFJQVlnQjJvZ0NpZ0NtQUkyQWdBZ0NrR3dBbW9oQ2lBT1FRUnFJZzRnQ1VjTkFBc01CQXNnR1NnQzBDc29BaFJCQVVZRVFDQUdCRUFnQ2lnQ0pDQUtLQUp3SUFvb0Fyd0JJQUVRYUF3R0N5QUtLQUkwSUFvb0FvQUJJQW9vQXN3QklBRVFhQXdGQ3lBR0JFQWdDaWdDSkNBS0tBSndJQW9vQXJ3QklBRVFad3dGQ3lBS0tBSTBJQW9vQW9BQklBb29Bc3dCSUFFUVp3d0VDeUEvSUFzMkFnQWdNMEVCUVlIUEFDQS9FQk1NQXd0QkFDRUdDd0pBSUFsQkEzRWlCMFVFUUNBR0lRNE1BUXNnQmlFT0EwQWdDeUFPUVFKMGFpQUtLQUlrTmdJQUlBNUJBV29oRGlBS1Fjd0FhaUVLSUJWQkFXb2lGU0FIUncwQUN3c2dCaUFKYTBGOFN3MEFJQXRCREdvaEJpQUxRUWhxSVFnZ0MwRUVhaUVQQTBBZ0N5QU9RUUowSWdkcUlBb29BaVEyQWdBZ0J5QVBhaUFLS0FKd05nSUFJQWNnQ0dvZ0NpZ0N2QUUyQWdBZ0JpQUhhaUFLS0FLSUFqWUNBQ0FLUWJBQ2FpRUtJQTVCQkdvaURpQUpSdzBBQ3dzZ0d5Z0NHQ2dDR0NnQ0lCb0NmeUFaS0FMb0t5RUhRUUFoRjBFQUlBbEJBM1FRR0NJT1JRMEFHZ0pBSUFGRkRRQWdDVVVOQUNBT0lBbEJBblJxSVJFZ0NVRjhjU0VOSUFsQkEzRWhHU0FKUVFGcklSQURRRUVBSVJWQkFDRUlJQkJCQTA4RVFBTkFJQTRnRlVFQ2RDSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlBNGdCa0VFY2lJUGFpQUxJQTlxS0FJQUtnSUFPQUlBSUE0Z0JrRUljaUlQYWlBTElBOXFLQUlBS2dJQU9BSUFJQTRnQmtFTWNpSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlCVkJCR29oRlNBSVFRUnFJZ2dnRFVjTkFBc0xRUUFoQ2lBWkJFQURRQ0FPSUJWQkFuUWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQVZRUUZxSVJVZ0NrRUJhaUlLSUJsSERRQUxDMEVBSVFZZ0J5RVZBMEFnRVNBR1FRSjBJaFJxSWdoQkFEWUNBRU1BQUFBQUlZUUJRUUFoQ2tFQUlROGdFRUVDU3dSQUEwQWdDQ0FWS2dJQUlBNGdDa0VDZEdvaURDb0NBSlFnaEFHU0lvUUJPQUlBSUFnZ0ZTb0NCQ0FNS2dJRWxDQ0VBWklpaEFFNEFnQWdDQ0FWS2dJSUlBd3FBZ2lVSUlRQmtpS0VBVGdDQUNBSUlCVXFBZ3dnRENvQ0RKUWdoQUdTSW9RQk9BSUFJQXBCQkdvaENpQVZRUkJxSVJVZ0QwRUVhaUlQSUExSERRQUxDMEVBSVF3Z0dRUkFBMEFnQ0NBVktnSUFJQTRnQ2tFQ2RHb3FBZ0NVSUlRQmtpS0VBVGdDQUNBS1FRRnFJUW9nRlVFRWFpRVZJQXhCQVdvaURDQVpSdzBBQ3dzZ0N5QVVhaUlJSUFnb0FnQWlDRUVFYWpZQ0FDQUlJSVFCT0FJQUlBWkJBV29pQmlBSlJ3MEFDeUFYUVFGcUloY2dBVWNOQUFzTElBNFFGRUVCQ3lBTEVCUkZEUUlMSUJzb0FoUW9BZ0FpRUNnQ0VFVUVRRUVCSVNJTUFnc2dHeWdDSUNnQzBDc2lGVUc0Q0dvaEZDQVZRYlFJYWlFVElCc29Ba1FoRVNBUUtBSVVJUWNnR3lnQ0dDZ0NHQ0VJUVFBaEZ3TkFBa0FnRVFSQUlCRWdGMEVDZEdvb0FnQkZEUUVMSUFjb0Fod2lBU0FJS0FJa1FaZ0JiR29oQ3dKL0lCc29Ba0JGQkVBZ0N5Z0NsQUVnQ3lnQ2pBRnJJUVlnQ3lnQ2tBRWdDeWdDaUFGcklRRkJBQ0VKUVRRTUFRc2dBU0FIS0FJWVFaZ0JiR29pQmtHUUFXc29BZ0FnQ3lnQ0NDQUxLQUlBYXlJQklBWkJtQUZyS0FJQWFtc2hDU0FMS0FJTUlBc29BZ1JySVFaQkpBc2hEeUFJS0FJWUlRc0NmeUFJS0FJZ0JFQkJBU0FMUVFGcmRDSUxRUUZySVE1QkFDQUxhd3dCQzBGL0lBdDBRWDl6SVE1QkFBc2hEU0FCUlEwQUlBWkZEUUFnQnlBUGFpZ0NBQ0VpSUJVb0FoUkJBVVlFUUNBVUlCZEJ1QWhzSWd0cUlSWWdDeUFUYWlFWUlBRkJBWEVoTXlBQlFRSjBJUjBnQVVGOGNTSVBRUUowSVNNZ0R2MFJJWGdnRGYwUklYWkJBQ0VNSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBWUlCMGdJbXBKSUJZZ0lrdHhEUUFnSWlBamFpRVpJQlg5Q1FLMENDRjVRUUFoQ3dOQUlDSWdDMEVDZEdvaUNpQjJJSGtnQ3YwQUFnRDlyZ0VpZWlCNC9iWUJJSG9nZHYwNS9WTDlDd0lBSUF0QkJHb2lDeUFQUncwQUN5QVBJZ3NnQVVZTkFnd0JDeUFpSVJsQkFDRUxDeUFMUVFGeUlRb2dNd1JBSUJrZ0RTQVZLQUswQ0NBWktBSUFhaUlMSUE0Z0N5QU9TQnNnQ3lBTlNCczJBZ0FnR1VFRWFpRVpJQW9oQ3dzZ0FTQUtSZzBBQTBBZ0dTQU5JQlVvQXJRSUlCa29BZ0JxSWdvZ0RpQUtJQTVJR3lBS0lBMUlHellDQUNBWklBMGdGU2dDdEFnZ0dTZ0NCR29pQ2lBT0lBb2dEa2diSUFvZ0RVZ2JOZ0lFSUJsQkNHb2hHU0FMUVFKcUlnc2dBVWNOQUFzTElCa2dDVUVDZEdvaElpQU1RUUZxSWd3Z0JrY05BQXNNQVFzZ0RxMGhmQ0FOckNHQUFVRUFJUXdEUUVFQUlRc0RRQ0FpQW44Z0RpQWlLZ0lBSW9RQlF3QUFBRTllRFFBYUlBMGdoQUZEQUFBQXoxME5BQm9nRFNBVk5BSzBDQUovSUlRQmtDS0VBWXREQUFBQVQxMEVRQ0NFQWFnTUFRdEJnSUNBZ0hnTHJId2lmU0I4SUh3Z2ZWVWJweUI5SUlBQlV4c0xOZ0lBSUNKQkJHb2hJaUFMUVFGcUlnc2dBVWNOQUFzZ0lpQUpRUUowYWlFaUlBeEJBV29pRENBR1J3MEFDd3NnQjBITUFHb2hCeUFWUWJnSWFpRVZJQWhCTkdvaENFRUJJU0lnRjBFQmFpSVhJQkFvQWhCSkRRQUxEQUVMUVFBaElpQUZRUUZCaHhwQkFCQVRDeUEvUVJCcUpBQWdJa1VFUUNCTkVEUWdBQ0FBS0FJSVFZQ0FBbkkyQWdnZ0JVRUJRWmJaQUVFQUVCTU1BUXNDUUNBQ1JRMEFBbjhnQWlFSFFRQWhCZ0pBSUFBb0F1Z0JJZ3BCQVJCZElnRkJmMFlOQUNBQklBTkxEUUJCQVNBS0tBSVlJZ0VvQWhCRkRRRWFJQUVvQWhnaER5QUtLQUlVS0FJQUtBSVVJUmNEUUNBUEtBSVlJZ0ZCQjNFaEFpQUJRUU4ySVFNZ0Z5Z0NIQ0lHSUE4b0FpUkJtQUZzYWlFQkFuOGdDaWdDUUFSQUlBWWdGeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQUVvQWdnZ0FTZ0NBR3NpQ0NBR1FaZ0JheWdDQUdwcklRd2dBU2dDRENBQktBSUVheUVPUVNRTUFRc2dBU2dDbEFFZ0FTZ0NqQUZySVE0Z0FTZ0NrQUVnQVNnQ2lBRnJJUWhCQUNFTVFUUUxJQmRxS0FJQUlRRUNRQUpBQWtBQ1FBSkFRUVFnQXlBQ1FRQkhhaUlDSUFKQkEwWWJRUUZyRGdRQkFnUUFCQXNnRGtVTkF5QUlJQXhxSVFZZ0NFRUNkQ0VDSUE1QkJFOEVRQ0FPUVh4eElRdEJBQ0VJQTBBZ0J5QUJJQUlRRmlFSElBRWdCa0VDZENJRGFpSUpJQU5xSWd3Z0Eyb2lGU0FEYWlFQklBSWdCMm9nQ1NBQ0VCWWdBbW9nRENBQ0VCWWdBbW9nRlNBQ0VCWWdBbW9oQnlBSVFRUnFJZ2dnQzBjTkFBc0xRUUFoQ0NBT1FRTnhJZ05GRFFNRFFDQUhJQUVnQWhBV0lRY2dBU0FHUVFKMGFpRUJJQUlnQjJvaEJ5QUlRUUZxSWdnZ0EwY05BQXNNQXdzZ0RrVWdDRVZ5SVFJZ0R5Z0NJRVVOQVNBQ0RRSWdDRUVDZENFVklBaEJmSEVpQTBFQ2RDRVpRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0NHcEpJQUVnRldvZ0IwdHhEUUFnQXlBSGFpQUJJQmxxSVFaQkFDRUxBMEFnQnlBTGFpQUJJQXRCQW5ScS9RQUNBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBOQUFRSURBQUFBQUFBQUFBQUFBQUFBUDFhQUFBQUlBdEJCR29pQ3lBRFJ3MEFDeUVISUFNaUFpQUlSZzBDREFFTElBRWhCa0VBSVFJTFFRQWhDeUFJSUFJaUFXdEJCM0VpRFFSQUEwQWdCeUFHS0FJQU9nQUFJQUZCQVdvaEFTQUhRUUZxSVFjZ0JrRUVhaUVHSUF0QkFXb2lDeUFOUncwQUN3c2dBaUFJYTBGNFN3MEFBMEFnQnlBR0tBSUFPZ0FBSUFjZ0JpZ0NCRG9BQVNBSElBWW9BZ2c2QUFJZ0J5QUdLQUlNT2dBRElBY2dCaWdDRURvQUJDQUhJQVlvQWhRNkFBVWdCeUFHS0FJWU9nQUdJQWNnQmlnQ0hEb0FCeUFIUVFocUlRY2dCa0VnYWlFR0lBRkJDR29pQVNBSVJ3MEFDd3NnQmlBTVFRSjBhaUVCSUFsQkFXb2lDU0FPUncwQUN3d0NDeUFPUlNBSVJYSWhBaUFQS0FJZ0JFQWdBZzBDSUFoQkFuUWhGU0FJUVFGMElSa2dDRUY4Y1NJRFFRSjBJUTBnQTBFQmRDRVFRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0dXcEpJQUVnRldvZ0IwdHhEUUFnQVNBTmFpRUdJQWNnRUdwQkFDRUxBMEFnQnlBTFFRRjBhaUFCSUF0QkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBRUVCUWdKREEwQUFRQUJBQUVBQWYxYkFRQUFJQXRCQkdvaUN5QURSdzBBQ3lFSElBTWlBaUFJUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ3lBSUlBSWlBV3RCQjNFaUVRUkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBdEJBV29pQ3lBUlJ3MEFDd3NnQWlBSWEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUlSdzBBQ3dzZ0JpQU1RUUowYWlFQklBbEJBV29pQ1NBT1J3MEFDd3dDQ3lBQ0RRRWdDRUVDZENFVklBaEJBWFFoR1NBSVFYeHhJZ05CQW5RaERTQURRUUYwSVJCQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFaYWtrZ0FTQVZhaUFIUzNFTkFDQUJJQTFxSVFZZ0J5QVFha0VBSVFzRFFDQUhJQXRCQVhScUlBRWdDMEVDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0MwRUVhaUlMSUFOSERRQUxJUWNnQXlJQ0lBaEdEUUlNQVFzZ0FTRUdRUUFoQWd0QkFDRUxJQWdnQWlJQmEwRUhjU0lSQkVBRFFDQUhJQVlvQWdBN0FRQWdBVUVCYWlFQklBZEJBbW9oQnlBR1FRUnFJUVlnQzBFQmFpSUxJQkZIRFFBTEN5QUNJQWhyUVhoTERRQURRQ0FISUFZb0FnQTdBUUFnQnlBR0tBSUVPd0VDSUFjZ0JpZ0NDRHNCQkNBSElBWW9BZ3c3QVFZZ0J5QUdLQUlRT3dFSUlBY2dCaWdDRkRzQkNpQUhJQVlvQWhnN0FRd2dCeUFHS0FJY093RU9JQWRCRUdvaEJ5QUdRU0JxSVFZZ0FVRUlhaUlCSUFoSERRQUxDeUFHSUF4QkFuUnFJUUVnQ1VFQmFpSUpJQTVIRFFBTERBRUxJQUlOQUNBSVFRSjBJUlVnQ0VGOGNTSURRUUowSVJsQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFJYWtrZ0FTQVZhaUFIUzNFTkFDQURJQWRxSUFFZ0dXb2hCa0VBSVFzRFFDQUhJQXRxSUFFZ0MwRUNkR3I5QUFJQS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9RMEFCQWdNQUFBQUFBQUFBQUFBQUFBQS9Wb0FBQUFnQzBFRWFpSUxJQU5IRFFBTElRY2dBeUlDSUFoR0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFTElBZ2dBaUlCYTBFSGNTSU5CRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDMEVCYWlJTElBMUhEUUFMQ3lBQ0lBaHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQWhIRFFBTEN5QUdJQXhCQW5ScUlRRWdDVUVCYWlJSklBNUhEUUFMQ3lBWFFjd0FhaUVYSUE5Qk5Hb2hEMEVCSVFZZ2RVRUJhaUoxSUFvb0FoZ29BaEJKRFFBTEN5QUdDMFVOQVNCTktBTGNLeUlCUlEwQUlBRVFGQ0JOUWdBM0F0d3JDeUFBSUFBdEFGeEIvZ0Z4T2dCY0lBQWdBQ2dDQ0VIL2ZuRTJBZ2hCQVNGbElBUXBBd2dpZkZBRWZrSUFCU0I4SUFRcEF6aDlDMUFnQUNnQ0NDSUJRY0FBUm5FTkFDQUJRWUFDUmcwQUlBUWdURUVLYWtFQ0lBVVFIVUVDUndSQUlBVkJBVUVDSUFBb0F0QUJHMEdERTBFQUVCTWdBQ2dDMEFGRklXVU1BUXNnVEVFS2FpQk1RUXhxUVFJUUZTQk1LQUlNSWdGQmtQOERSZzBBSUFGQjJmOERSZ1JBSUFCQmdBSTJBZ2dnQUVFQU5nTGtBUXdCQ3lBRUtRTUlJbnhRQkg1Q0FBVWdmQ0FFS1FNNGZRdFFCRUFnQUVIQUFEWUNDQ0FGUVFKQnZzRUFRUUFRRXd3QkMwRUFJV1VnQlVFQlFjM0FBRUVBRUJNTElFeEJFR29rQUNCbEN3c0FJQUFFUUNBQUVCUUxDN1FCQVFGL0lBQW9BZ3hGQkVBZ0FpQUFLQUlrSUFFUkF3QVBDd0pBUVFnUUdDSURSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQkJDQkFZSWdGRkJFQWdBeEFVRHdzZ0FTQUROZ0lBSUFBZ0FDZ0NCRUhrQUd3aUFqWUNLQU5BSUFBb0FoZ2dBa29OQUFzZ0FTQUFLQUlVTmdJRUlBQWdBVFlDRkNBQUlBQW9BaGhCQVdvMkFoZ2dBQ2dDSENJQlJRMEFJQUVvQWdCQkFEWUNDQ0FBSUFFb0FnUTJBaHdnQUNBQUtBSWdRUUZyTmdJZ0lBRVFGQXNMK2dJQkJIOENRQ0FBUlEwQUlBQW9BcXdvSWdFRVFDQUFLQUtvS0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NyQ2dnQVVFRGRHb29BZ0FpQXdSQUlBTVFGQ0FBS0FLb0tDRUNDeUFCUVFGcUlnRWdBa2tOQUFzZ0FDZ0NyQ2doQVFzZ0FFRUFOZ0tvS0NBQkVCUWdBRUVBTmdLc0tBc2dBQ2dDdENnaUFRUkFJQUVRRkNBQVFRQTJBclFvQ3lBQUtBTFFLeUlCQkVBZ0FSQVVJQUJCQURZQzBDc0xJQUFvQXV3cklnRUVRQ0FCRUJRZ0FFRUFOZ0xzS3dzZ0FDZ0M2Q3NpQVFSQUlBRVFGQ0FBUVFBMkF1Z3JDeUFBS0FMOEt5SUJCRUFnQVJBVUlBQkJBRFlDaEN3Z0FFSUFOd0w4S3dzZ0FDZ0M4Q3NpQVFSQUlBQW9BdlFySWdNRWYwRUFJUUlEUUNBQktBSU1JZ1FFUUNBRUVCUWdBVUVBTmdJTUlBQW9BdlFySVFNTElBRkJGR29oQVNBQ1FRRnFJZ0lnQTBrTkFBc2dBQ2dDOENzRklBRUxFQlFnQUVFQU5nTHdLd3NnQUNnQzVDc2lBUVJBSUFFUUZDQUFRUUEyQXVRckN5QUFLQUxjS3lJQlJRMEFJQUVRRkNBQVFnQTNBdHdyQ3d1d0J3SUxmd0YrSUFBb0FoQWlDRUVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlVSWdOQkJFNEVRQ0FBS0FJQUlnSkJBMnNvQWdBaEFTQUFJQU5CQkdzaUF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkF3QkN5QURRZjcvLy84SGNTRUpRUmdoQkFOQUlBQWdBa0VCYXlJR05nSUFJQUl0QUFBZ0FDQUNRUUpySWdJMkFnQWdBQ0FEUVFGck5nSVVJQVl0QUFBaEJpQUFJQU5CQW1zaUF6WUNGQ0FFZENBQmNpQUdJQVJCQ0d0MGNpRUJJQVJCRUdzaEJDQUZRUUpxSWdVZ0NVY05BQXNMQkVBZ0FDQUNRUUZyTmdJQUlBSXRBQUFnQUNBRFFRRnJOZ0lVSUFSMElBRnlJUUVMUVFBaEF3c2dBQ2dDR0NFQ0lBQWdBVUgvQVhFaUNVR1BBVXMyQWhnZ0FFRUhRUWdnQVVHQWdJRDRCM0ZCZ0lDQStBZEdHMEVJSUFJYklnSkJDRUVIUVFnZ0FVR0FnUHdEY1VHQWdQd0RSaHNnQVVILy8vLy9lRTBiYWlJRVFRaEJCMEVJSUFGQmdQNEJjVUdBL2dGR0d5QUJRUkIyUWY4QmNTSUZRWThCVFJ0cUlnWkJDRUVIUVFnZ0FVSC9BSEZCL3dCR0d5QUJRUWgyUWY4QmNTSUhRWThCVFJzZ0NHcHFJZ28yQWhBZ0FDQUFLUU1JSUFVZ0FuUWdBVUVZZG5JZ0J5QUVkSElnQ1NBR2RIS3RJQWl0aG9RaUREY0RDQ0FLUVI5TkJFQUNRQ0FEUVFST0JFQWdBQ2dDQUNJQ1FRTnJLQUlBSVFFZ0FDQURRUVJyTmdJVUlBQWdBa0VFYXpZQ0FBd0JDeUFEUVFCTUJFQkJBQ0VCREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkVFQUlRRU1BUXNnQTBIKy8vLy9CM0VoQmtFWUlRUkJBQ0VCUVFBaEJRTkFJQUFnQWtFQmF5SUhOZ0lBSUFJdEFBQWdBQ0FDUVFKcklnSTJBZ0FnQUNBRFFRRnJOZ0lVSUFjdEFBQWhCeUFBSUFOQkFtc2lBellDRkNBRWRDQUJjaUFISUFSQkNHdDBjaUVCSUFSQkVHc2hCQ0FGUVFKcUlnVWdCa2NOQUFzTFJRMEFJQUFnQWtFQmF6WUNBQ0FDTFFBQUlBQWdBMEVCYXpZQ0ZDQUVkQ0FCY2lFQkN5QUFJQUZCL3dGeElnSkJqd0ZMTmdJWUlBQkJDRUVIUVFnZ0FVR0FnSUQ0QjNGQmdJQ0ErQWRHR3lBSlFZOEJUUnNpQTBFSVFRZEJDQ0FCUVlDQS9BTnhRWUNBL0FOR0d5QUJRZi8vLy85NFRSdHFJZ1JCQ0VFSFFRZ2dBVUdBL2dGeFFZRCtBVVliSUFGQkVIWkIvd0Z4SWdWQmp3Rk5HMm9pQ0VFSVFRZEJDQ0FCUWY4QWNVSC9BRVliSUFGQkNIWkIvd0Z4SWdsQmp3Rk5HeUFLYW1vMkFoQWdBQ0FGSUFOMElBRkJHSFp5SUFrZ0JIUnlJQUlnQ0hSeXJTQUtyWVlnRElRaUREY0RDQXNnREtjTHdSUUNHMzhHZXlBQUtBSUlJZ29nQUNnQ0JHb2hDQUpBSUFBb0FneEZCRUFnQ0VFQ1NBMEJJQU5CQUV3TkFTQUFLQUlBSWdVZ0NFRUVheUlHUVFGMklneEJBblFpQ1NBQklBcEJBblJxSWdjZ0EwRUNkQ0lFYW1wQkJHcEpJQVVnREVFRGRHcEJDR29pQUNBSFFRUnFTM0VnQlNBQklBUnFJQWxxUVFScVNTQUJRUVJxSUFCSmNYSWhFaUFJUVFSSkloUWdBa0VCUjNJaEZTQUNRUUZHSUFaQkJVdHhJUllnQ0VIOC8vLy9CM0VoRXlBSVFRRnhJUmNnQ2tFQmFpRVBJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWlFWklBVWdDRUVCYXlJQVFRSjBhaUVhSUF4QkFXb2lHMEY4Y1NJUVFRRjBJUXNnQWlBS2JFRUNkQ0VjSUFCQkFYWWdBbXhCQW5RaEhRTkFJQUVvQWdBZ0FTQWNhaWdDQUNJSlFRRnFRUUYxYXlFSEFrQWdGQVJBSUFraEJFRUFJUVlNQVF0QkFDRUdBa0FDZjBFQUlCWkZEUUFhUVFBZ0VnMEFHaUFKL1JFaElDQUgvUkVoSC8wTUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUNFalFRQWhBQU5BSUFFZ0FFRUNkR3I5QUFJRUlTSWdBU0FBSUE5cVFRSjBhdjBBQWdBaElTQUZJQUJCQTNScUlnUWdILzFhQWdBRElBUkJDR29nSWlBaElDQWdJZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlpL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlJUDFhQWdBQUlBUkJFR29nSVAxYUFnQUJJQVJCR0dvZ0lQMWFBZ0FDSUFVZ0kvME1BUUFBQUFFQUFBQUJBQUFBQVFBQUFQMVFJaVQ5R3dCQkFuUnFJQ0FnSHlBZy9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYi9hNEJRUUg5ckFFZ0l2MnVBU0lmL1ZvQ0FBQWdCU0FrL1JzQlFRSjBhaUFmL1ZvQ0FBRWdCU0FrL1JzQ1FRSjBhaUFmL1ZvQ0FBSWdCU0FrL1JzRFFRSjBhaUFmL1ZvQ0FBTWdJLzBNQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBUDJ1QVNFaklDQWhIeUFoSVNBZ0FFRUVhaUlBSUJCSERRQUxJQ0Q5R3dNaEJDQWYvUnNESVFjZ0VDQWJSZzBCSUFzaEJpQUVJUWtnRUFzaEFBTkFJQUVnQUVFQmFpSUtJQUpzUVFKMGFpZ0NBQ0VlSUFFZ0FDQVBhaUFDYkVFQ2RHb29BZ0FoQkNBRklBWkJBblJxSWc0Z0J6WUNBQ0FPSUFjZ0hpQUVJQWxxUVFKcVFRSjFheUlIYWtFQmRTQUphallDQkNBR1FRSnFJUVlnQUNBTVJ5QUVJUWtnQ2lFQURRQUxEQUVMSUFzaEJnc2dCU0FHUVFKMGFpQUhOZ0lBUVh3aEFDQVhCSDhnR2lBQklCMXFLQUlBSUFSQkFXcEJBWFZySWdBMkFnQWdBQ0FIYWtFQmRTRUhRWGdGUVh3TElCbHFJQVFnQjJvMkFnQkJBQ0VHUVFBaEFFRUFJUVFDUUNBVklCZ2dEVUVDZEdwQkVFbHlSUVJBQTBBZ0FTQUFRUUowSWdScUlBUWdCV3I5QUFJQS9Rc0NBQ0FBUVFScUlnQWdFMGNOQUFzZ0V5SUVJQWhHRFFFTElBUWhBQ0FSQkVBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FFRUJhaUVBSUFaQkFXb2lCaUFSUncwQUN3c2dCQ0FJYTBGOFN3MEFBMEFnQVNBQUlBSnNRUUowYWlBRklBQkJBblJxS0FJQU5nSUFJQUVnQUVFQmFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUNhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVEYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUJCQkdvaUFDQUlSdzBBQ3dzZ0FVRUVhaUVCSUExQkFXb2lEU0FEUncwQUN3d0JDd0pBQWtBQ1FDQUlRUUZyRGdJQUFRSUxJQU5CQUV3TkFrRUFJUUlDUUNBRFFRUkpCRUFnQVNFQURBRUxJQUVnQTBIOC8vLy9CM0VpQWtFQ2RHb2hBQU5BSUFFZ0JrRUNkR29pQkNBRS9RQUNBQ0lmL1JzQVFRSnQvUkVnSC8wYkFVRUNiZjBjQVNBZi9Sc0NRUUp0L1J3Q0lCLzlHd05CQW0zOUhBUDlDd0lBSUFaQkJHb2lCaUFDUncwQUN5QUNJQU5HRFFNTEEwQWdBQ0FBS0FJQVFRSnROZ0lBSUFCQkJHb2hBQ0FDUVFGcUlnSWdBMGNOQUFzTUFnc2dBMEVBVEEwQklBQW9BZ0FoQ1NBQ0lBcHNRUUowSVFjRFFDQUpJQUVvQWdBZ0FTQUhhaUlFS0FJQVFRRnFRUUYxYXlJQU5nSUVJQWtnQUNBRUtBSUFhaUlBTmdJQUlBRWdBRFlDQUNBQklBSkJBblJxSUFrb0FnUTJBZ0FnQVVFRWFpRUJJQVpCQVdvaUJpQURSdzBBQ3d3QkN5QUlRUU5JRFFBZ0EwRUFUQTBBSUFBb0FnQWlCU0FJSUFoQkFYRWlGRVVpQm10QkJHc2lDVUVCZGlJTFFRSjBJZ2NnQVNBRFFRSjBJZ0JxYWtrZ0JTQUxRUU4wYWtFTWFpSUVJQUZCQkdwTGNTQUZRUVJxSUFBZ0FTQUtRUUowYWlJQWFpQUhha0VJYWtrZ0FFRUlhaUFFU1hGeUlSVWdBa0VCUnlBSVFRUkpjaUVXSUFKQkFVWWdDVUVGUzNFaEZ5QUlRZnovLy84SGNTRVFJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWtFRWF5RVpJQVVnQ0VFQ2F5SUFRUUowYWlFYUlBdEJBV29pRWtGOGNTSU1RUUZ5SVJNZ0RFRUJkRUVCY2lFTElBSWdDbXhCQW5RaEd5QUFJQVpyUVFKSklSd2dDRUVCZGtFQmF5QUNiRUVDZENFZEEwQWdCU0FCS0FJQUlBRWdHMm9pRHlBQ1FRSjBhaWdDQUNJSklBOG9BZ0FpQUdwQkFtcEJBblZySWdjZ0FHbzJBZ0JCQVNFRUFrQWdIQVJBSUFraEJnd0JDd0pBQW45QkFTQVhSUTBBR2tFQklCVU5BQm9nQ2YwUklSOGdCLzBSSVNCQkFDRUFBMEFnQlNBQVFRTjBhaUlISUFFZ0FFRUNkQ0lFYXYwQUFnUWdIeUFFSUE5cS9RQUNDQ0lmL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iSWlJZ0gvMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWlFZ0lTQWdJQ0g5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHY5cmdGQkFmMnNBU0FpL2E0QklpTDlEUVFGQmdjWUdSb2JDQWtLQ3h3ZEhoLzlDd0lVSUFjZ0lDQWkvUTBNRFE0UEVCRVNFd0FCQWdNVUZSWVhJQ0g5RFFBQkFnTUVCUVlIRUJFU0V3d05EZy85Q3dJRUlDRWhJQ0FBUVFScUlnQWdERWNOQUFzZ0gvMGJBeUVHSUNEOUd3TWhCeUFNSUJKR0RRRWdDeUVFSUFZaENTQVRDeUVBQTBBZ0FTQUFJQUpzUVFKMGFpZ0NBQ0VlSUE4Z0FFRUJhaUlLSUFKc1FRSjBhaWdDQUNFR0lBVWdCRUVDZEdvaURpQUhOZ0lBSUE0Z0J5QWVJQVlnQ1dwQkFtcEJBblZySWdkcVFRRjFJQWxxTmdJRUlBUkJBbW9oQkNBQUlCSkhJQW9oQUNBR0lRa05BQXNNQVFzZ0N5RUVDeUFZSUExQkFuUnFJUWtnQlNBRVFRSjBhaUFITmdJQUFrQWdGRVVFUUNBYUlBRWdIV29vQWdBZ0JrRUJha0VCZFdzaUFDQUhha0VCZFNBR2FqWUNBQXdCQ3lBR0lBZHFJUUFMSUJrZ0FEWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCWWdDVUVRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBUVJ3MEFDeUFRSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMQ3dzekFRRi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRU0FnQUJCNUlRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lBQlFSQnFKQUFMR3dFQmZ5QUFCRUFnQUNnQ0NDSUJCRUFnQVJBVUN5QUFFQlFMQ3pFQkFuOUJBVUVNRUJjaUFBUkFJQUJCQ2pZQ0JDQUFRUXBCQkJBWElnRTJBZ2dnQVFSQUlBQVBDeUFBRUJRTFFRQUxTQUVDZndKL0lBRkJIMDBFUUNBQUtBSUFJUUlnQUVFRWFnd0JDeUFCUVNCcklRRWdBQXNvQWdBaEF5QUFJQUlnQVhRMkFnQWdBQ0FESUFGMElBSkJJQ0FCYTNaeU5nSUVDNjhDQVFaL0l3QkI4QUZySWdZa0FDQUdJQUkyQXV3QklBWWdBVFlDNkFFZ0JpQUFOZ0lBSUFSRklRa0NRQUpBQWtBQ1FDQUJRUUZIQkVBZ0FDRUhRUUVoQ0F3QkN5QUFJUWRCQVNFSUlBSU5BQ0FBSVFRTUFRc0RRQ0FISUFVZ0EwRUNkR29pQ2lnQ0FHc2lCQ0FBRUN0QkFFd0VRQ0FISVFRTUFnc2dDVUYvY3lFTFFRRWhDUUpBSUFzZ0EwRUNTSEpCQVhGRkJFQWdDa0VJYXlnQ0FDRUtJQWRCQ0dzaUN5QUVFQ3RCQUU0TkFTQUxJQXBySUFRUUswRUFUZzBCQ3lBR0lBaEJBblJxSUFRMkFnQWdCa0hvQVdvZ0FTQUNFSGNpQVJBOElBaEJBV29oQ0NBQklBTnFJUU1nQmlnQzdBRWhBaUFFSVFjZ0JpZ0M2QUVpQVVFQlJ3MEJJQUlOQVF3REN3c2dCeUVFREFFTElBbEZEUUVMSUFZZ0NCQjJJQVFnQXlBRkVFUUxJQVpCOEFGcUpBQUxTd0VDZnlBQUtBSUVJUUlnQUFKL0lBRkJIMDBFUUNBQUtBSUFJUU1nQWd3QkN5QUJRU0JySVFFZ0FpRURRUUFMSWdJZ0FYWTJBZ1FnQUNBQ1FTQWdBV3QwSUFNZ0FYWnlOZ0lBQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFVSUFCQkFEWUNJQ0FBRUJRTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFVQ3d1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRYUhwQUNBREVCTkJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkI1dWtBSUFOQkVHb1FFMEVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUdiTkVFQUVCTUxJQU5CSUdva0FDQUNDLzBHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRURRZ0FDZ0NEQkFVSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBVUlBQkNBRGNERUFzZ0FDZ0NRQkFVSUFCQ0FEY0NQQ0FBS0FKSUVCUWdBRUVBTmdKSUlBQW9BbGdRRkNBQVFRQTJBbGdNQVFzZ0FDZ0NMQ0lCQkVBZ0FSQVVJQUJCQURZQ0xBc2dBQ2dDSUNJQkJFQWdBUkFVSUFCQ0FEY0RJQXNnQUNnQ05DSUJSUTBBSUFFUUZDQUFRZ0EzQWpRTElBQW9BdWdCRUY0Z0FDZ0N0QUVpQVFSQUlBQW9Bb0FCSUFBb0FvUUJiQ0lEQkg4RFFDQUJFRFFnQVVHTUxHb2hBU0FDUVFGcUlnSWdBMGNOQUFzZ0FDZ0N0QUVGSUFFTEVCUWdBRUVBTmdLMEFRc2dBQ2dDakFFaUFRUkFJQUFvQW9nQklnSUVRRUVBSVFFRFFDQUFLQUtNQVNBQlFRTjBhaWdDQUNJREJFQWdBeEFVSUFBb0FvZ0JJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUtNQVNFQkN5QUFRUUEyQW9nQklBRVFGQ0FBUVFBMkFvd0JDeUFBS0FLZ0FSQVVJQUJCQURZQ2tBRWdBRUVBTmdLZ0FTQUFLQUo4RUJRZ0FFRUFOZ0o4SUFBdEFOUUJRUUp4UlFSQUlBQW9Bc0FCRUJRTElBQkI2QUJxUVFCQjhBQVFHUm9nQUNnQzJBRVFPQ0FBUVFBMkF0Z0JJQUFvQXR3QkVEZ2dBRUVBTmdMWUFTQUFLQUxnQVNJQkJFQWdBU2dDSENJQ0JFQWdBaEFVSUFGQkFEWUNIQXNnQVNnQ0tDSUNCRUFnQVNnQ0pBUkFBMEFnQWlBRlFTaHNJZ05xS0FJa0lnUUVRQ0FFRUJRZ0FTZ0NLQ0lDSUFOcVFRQTJBaVFMSUFJZ0Eyb29BaEFpQkFSQUlBUVFGQ0FCS0FJb0lnSWdBMnBCQURZQ0VBc2dBaUFEYWlnQ0dDSUVCRUFnQkJBVUlBRW9BaWdpQWlBRGFrRUFOZ0lZQ3lBRlFRRnFJZ1VnQVNnQ0pFa05BQXNMSUFJUUZDQUJRUUEyQWlnTElBRVFGQXNnQUVFQU5nTGdBU0FBS0FKZ0VDVWdBRUVBTmdKZ0lBQW9BbVFRSlNBQVFRQTJBbVFnQUNnQzdBRWlBd1JBQWtBZ0F5Z0NDRVVOQUNBREtBSU1CRUFnQTBFQU5nSW9BMEFnQXlnQ0dFRUFTZzBBQ3dzZ0EwRUJOZ0lRSUFNb0FnQVFGQ0FES0FJY0lnSkZEUUFEUUNBQ0tBSUVJUUVnQWhBVUlBTWdBVFlDSENBQklnSU5BQXNMSUFNb0FpUWlBZ1JBSUFJb0FnUWlCVUVBU2dSQVFRQWhBUU5BSUFJb0FnQWdBVUVNYkdvaUJDZ0NDQ0lHQkVBZ0JDZ0NCQ0FHRVFJQUlBSW9BZ1FoQlFzZ0FVRUJhaUlCSUFWSURRQUxDeUFDS0FJQUVCUWdBaEFVQ3lBREVCUUxJQUJCQURZQzdBRWdBQkFVQ3d2bUF3SUlmd1IrSUFBb0FoUW9BZ0FvQWhRZ0FVSE1BR3hxSWdrb0Fnd2lDQ0FBS0FJWUtBSVlJQUZCTkd4cUlnbzFBZ1FpRUVJQmZTSVNJQUExQWp4OElCQ0FweUlMSUFnZ0Mwa2JJUXdnQ1NnQ0NDSUlJQW8xQWdBaUVVSUJmU0lUSUFBMUFqaDhJQkdBcHlJS0lBZ2dDa2tiSVFvZ0NTZ0NCQ0lJSUJJZ0FEVUNOSHdnRUlDbklnc2dDQ0FMU3hzaEN5QUpLQUlBSWdnZ0V5QUFOUUl3ZkNBUmdLY2lEU0FJSUExTEd5RU5RUUFoQ0NBQUtBSWdLQUxRS3lBQlFiZ0liR29vQWhRaERnSkFJQWtvQWhSQkFDQUNhMEYvSUFJYmFpSUNSUVJBSUFvaEFDQU5JUWdnQ3lFQkRBRUxJQU5CQVhFZ0FrRUJheUlQZENJSklBMUpCRUFnRFNBSmE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRZ0xRUUFoQUVFQUlRRWdBMEVCZGlBUGRDSURJQXRKQkVBZ0N5QURhNjFDZnlBQ3JTSVFoa0ovaFh3Z0VJaW5JUUVMSUFrZ0Nra0VRQ0FLSUFscnJVSi9JQUt0SWhDR1FuK0ZmQ0FRaUtjaEFBc2dBeUFNVHdSQVFRQWhEQXdCQ3lBTUlBTnJyVUovSUFLdEloQ0dRbitGZkNBUWlLY2hEQXNnQkVGL0lBQkJBa0VESUE1QkFVWWJJZ0pxSWdNZ0FDQURTeHRKSUFWQmZ5QUNJQXhxSWdBZ0FDQU1TUnRKY1NBR0lBZ2dBbXNpQUVFQUlBQWdDRTBiUzNFZ0J5QUJJQUpySWdCQkFDQUFJQUZORzB0eEM2SUJBUVovSUFBRVFDQUFLQUlFSWdJRVFDQUNFQlFnQUVFQU5nSUVDeUFCQkVBZ0FDRUNBMEFnQWlnQ3lBRWlBd1JBUVFBaEJTQUNLQUxFQVNJRUJIOERRQ0FES0FJTUlnWUVRQ0FHRUJRZ0EwRUFOZ0lNSUFJb0FzUUJJUVFMSUFOQkVHb2hBeUFGUVFGcUlnVWdCRWtOQUFzZ0FpZ0N5QUVGSUFNTEVCUWdBa0VBTmdMSUFRc2dBa0h3QVdvaEFpQUhRUUZxSWdjZ0FVY05BQXNMSUFBUUZBc0x3QmdDRzM4RGV5QUNRUWRzSVE4Z0FrRUdiQ0VRSUFKQkJXd2hFU0FDUVFKMElRd2dBa0VEYkNFU0lBSkJBWFFoRXlBQUtBSUFJZ29nQUNnQ0RDSVpRUVYwSWdScUlRWWdDaUFFYXlBQUtBSVFJUVVnQUNnQ0hDRUxJQUFvQWhRaEJ5QUFLQUlJSVEwQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFoSkRRQWdBVUVQY1EwQUlBWkJEM0ZGRFFFTElBVWdCMDhOQlFKQUFrQWdBMEVCYXc0Q0FBRURDeUFISUFWcklnaEJGMDBOQlNBQklBVkJBblJxSVFrZ0dVRUZkQ0lFSUFvZ0JVRUdkR3BxSUFFZ0IwRUNkR3BKQkVBZ0NTQUtJQWRCQm5ScUlBUnFRVHhyU1EwR0N5QUYvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaElDQUZJQWhCZkhFaURtb2hCVUVBSVFRRFFDQUdJQ0JCQnYyckFTSWYvUnNBYWlBSklBUkJBblJxL1FBQ0FDSWgvUjhBT0FJQUlBWWdILzBiQVdvZ0lmMGZBVGdDQUNBR0lCLzlHd0pxSUNIOUh3STRBZ0FnQmlBZi9Sc0RhaUFoL1I4RE9BSUFJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUVRUVJxSWdRZ0RrY05BQXNnQ0NBT1J3MEZEQVlMSUFFZ0FrRUNkR29oQ0NBSElBVnJJZzVCRzAwTkFpQVpRUVYwSWdRZ0NpQUZRUVowYW1vaUNTQUJJQUlnQjJwQkFuUnFTU0FLSUFkQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4RFFJZ0NTQUJJQWRCQW5ScVNTQUJJQVZCQW5ScUlBUkpjUTBDSUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VnSUFVZ0RrRjhjU0lVYWlFRVFRQWhDUU5BSUFZZ0lFRUcvYXNCSWgvOUd3QnFJaFVnQVNBRklBbHFRUUowSWhacS9RQUNBQ0loL1I4QU9BSUFJQVlnSC8wYkFXb2lGeUFoL1I4Qk9BSUFJQVlnSC8wYkFtb2lHQ0FoL1I4Q09BSUFJQVlnSC8wYkEyb2lHaUFoL1I4RE9BSUFJQlVnQ0NBV2F2MEFBZ0FpSC8wZkFEZ0NCQ0FYSUIvOUh3RTRBZ1FnR0NBZi9SOENPQUlFSUJvZ0gvMGZBemdDQkNBZy9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJU0FnQ1VFRWFpSUpJQlJIRFFBTElBNGdGRWNOQXd3RkN5QUZJQWRQRFFRZ0FTQVBRUUowYWlFSklBRWdFRUVDZEdvaERpQUJJQkZCQW5ScUlSUWdBU0FNUVFKMGFpRVZJQUVnRWtFQ2RHb2hGaUFCSUJOQkFuUnFJUmNnQVNBQ1FRSjBhaUVZQTBBZ0JpQUZRUVowYWlJRUlBRWdCVUVDZENJSWFpb0NBRGdDQUNBRUlBZ2dHR29xQWdBNEFnUWdCQ0FJSUJkcUtnSUFPQUlJSUFRZ0NDQVdhaW9DQURnQ0RDQUVJQWdnRldvcUFnQTRBaEFnQkNBSUlCUnFLZ0lBT0FJVUlBUWdDQ0FPYWlvQ0FEZ0NHQ0FFSUFnZ0NXb3FBZ0E0QWh3Z0JVRUJhaUlGSUFkSERRQUxEQVFMSUFFZ0QwRUNkR29oQ1NBQklCQkJBblJxSVE0Z0FTQVJRUUowYWlFVUlBRWdERUVDZEdvaEZTQUJJQkpCQW5ScUlSWWdBU0FUUVFKMGFpRVhJQUVnQWtFQ2RHb2hHQ0FEUVFOR0lSb2dBMEVFUmlFY0lBTkJCVVloSFNBRFFRZEdJUjREUUNBR0lBVkJCblJxSWdRZ0FTQUZRUUowSWdocUtnSUFPQUlBSUFRZ0NDQVlhaW9DQURnQ0JDQUVJQWdnRjJvcUFnQTRBZ2dDUUNBYURRQWdCQ0FJSUJacUtnSUFPQUlNSUJ3TkFDQUVJQWdnRldvcUFnQTRBaEFnSFEwQUlBUWdDQ0FVYWlvQ0FEZ0NGQ0FEUVFaR0RRQWdCQ0FJSUE1cUtnSUFPQUlZSUI0TkFDQUVJQWdnQ1dvcUFnQTRBaHdMSUFWQkFXb2lCU0FIUncwQUN3d0RDeUFGSVFRTElBUkJBV29oQlNBSElBUnJRUUZ4QkVBZ0JpQUVRUVowYWlJSklBRWdCRUVDZENJRWFpb0NBRGdDQUNBSklBUWdDR29xQWdBNEFnUWdCU0VFQ3lBRklBZEdEUUVEUUNBR0lBUkJCblJxSWdVZ0FTQUVRUUowSWdscUtnSUFPQUlBSUFVZ0NDQUphaW9DQURnQ0JDQUdJQVJCQVdvaUJVRUdkR29pQ1NBQklBVkJBblFpQldvcUFnQTRBZ0FnQ1NBRklBaHFLZ0lBT0FJRUlBUkJBbW9pQkNBSFJ3MEFDd3dCQ3lBSElBVWlCR3RCQTNFaUNRUkFRUUFoQ0FOQUlBWWdCRUVHZEdvZ0FTQUVRUUowYWlvQ0FEZ0NBQ0FFUVFGcUlRUWdDRUVCYWlJSUlBbEhEUUFMQ3lBRklBZHJRWHhMRFFBRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQmlBRVFRRnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRSnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRTnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQkVFRWFpSUVJQWRIRFFBTEMwRWdhaUVISUFFZ0RVRUNkR29oQmlBQUtBSVlJUVVDUUFKQUFrQUNRQ0FEUVFoSkRRQWdCa0VQY1EwQUlBZEJEM0ZGRFFFTElBVWdDMDhOQWdKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFzZ0JXc2lBRUViVFEwRElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdKcmFpQUJJQXNnRFdwQkFuUnFTUVJBSUFFZ0JTQU5ha0VDZEdvZ0MwRUdkQ0FDYXlBS2FrRWNhMGtOQkFzZ0JpQUZRUUowYWlFQ0lBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFZ0lBVWdBRUY4Y1NJQmFpRUZRUUFoQkFOQUlBY2dJRUVHL2FzQkloLzlHd0JxSUFJZ0JFRUNkR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlBaC9SOEJPQUlBSUFjZ0gvMGJBbW9nSWYwZkFqZ0NBQ0FISUIvOUd3TnFJQ0g5SHdNNEFnQWdJUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFZ0lBUkJCR29pQkNBQlJ3MEFDeUFBSUFGSERRTU1CQXNnQmlBQ1FRSjBhaUVEQWtBZ0N5QUZheUlBUVNSSkJFQWdCU0VFREFFTElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdScmFpSUlJQUVnQWlBTElBMXFJZ0pxUVFKMGFra2dDMEVHZENBRWF5QUtha0VZYXlJRUlBRWdEVUVDZEdvZ0JVRUNkR29pQ2lBTWFrdHhCRUFnQlNFRURBRUxJQWdnQVNBQ1FRSjBha2tnQkNBS1MzRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklTQWdCU0FBUVh4eElnSnFJUVJCQUNFQkEwQWdCeUFnUVFiOXF3RWlILzBiQUdvaUNpQUdJQUVnQldwQkFuUWlDR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlJTUlDSDlId0U0QWdBZ0J5QWYvUnNDYWlJTklDSDlId0k0QWdBZ0J5QWYvUnNEYWlJUElDSDlId000QWdBZ0NpQURJQWhxL1FBQ0FDSWYvUjhBT0FJRUlBd2dILzBmQVRnQ0JDQU5JQi85SHdJNEFnUWdEeUFmL1I4RE9BSUVJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUJRUVJxSWdFZ0FrY05BQXNnQUNBQ1JnMEVDeUFFUVFGcUlRQWdDeUFFYTBFQmNRUkFJQWNnQkVFR2RHb2lBU0FHSUFSQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEJBc2dBQ0FMUmcwREEwQWdCeUFFUVFaMGFpSUFJQVlnQkVFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQnlBRVFRRnFJZ0JCQm5ScUlnRWdCaUFBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FFUVFKcUlnUWdDMGNOQUFzTUF3c2dCaUFQUVFKMGFpRUVJQVlnRUVFQ2RHb2hDaUFHSUJGQkFuUnFJUWdnQmlBTVFRSjBhaUVNSUFZZ0VrRUNkR29oRFNBR0lCTkJBblJxSVE4Z0JpQUNRUUowYWlFQ0lBTkJBMFloRUNBRFFRUkdJUkVnQTBFRlJpRVNJQU5CQjBZaEV3TkFJQWNnQlVFR2RHb2lBQ0FHSUFWQkFuUWlBV29xQWdBNEFnQWdBQ0FCSUFKcUtnSUFPQUlFSUFBZ0FTQVBhaW9DQURnQ0NBSkFJQkFOQUNBQUlBRWdEV29xQWdBNEFnd2dFUTBBSUFBZ0FTQU1haW9DQURnQ0VDQVNEUUFnQUNBQklBaHFLZ0lBT0FJVUlBTkJCa1lOQUNBQUlBRWdDbW9xQWdBNEFoZ2dFdzBBSUFBZ0FTQUVhaW9DQURnQ0hBc2dCVUVCYWlJRklBdEhEUUFMREFJTElBVWdDMDhOQVNBR0lBOUJBblJxSVFNZ0JpQVFRUUowYWlFRUlBWWdFVUVDZEdvaENpQUdJQXhCQW5ScUlRZ2dCaUFTUVFKMGFpRU1JQVlnRTBFQ2RHb2hEU0FHSUFKQkFuUnFJUUlEUUNBSElBVkJCblJxSWdBZ0JpQUZRUUowSWdGcUtnSUFPQUlBSUFBZ0FTQUNhaW9DQURnQ0JDQUFJQUVnRFdvcUFnQTRBZ2dnQUNBQklBeHFLZ0lBT0FJTUlBQWdBU0FJYWlvQ0FEZ0NFQ0FBSUFFZ0Ntb3FBZ0E0QWhRZ0FDQUJJQVJxS2dJQU9BSVlJQUFnQVNBRGFpb0NBRGdDSENBRlFRRnFJZ1VnQzBjTkFBc01BUXNnQ3lBRklnUnJRUU54SWdBRVFFRUFJUWdEUUNBSElBUkJCblJxSUFZZ0JFRUNkR29xQWdBNEFnQWdCRUVCYWlFRUlBaEJBV29pQ0NBQVJ3MEFDd3NnQlNBTGEwRjhTdzBBQTBBZ0J5QUVRUVowYWlBR0lBUkJBblJxS2dJQU9BSUFJQWNnQkVFQmFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFQ2FpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFRGFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQVJCQkdvaUJDQUxSdzBBQ3dzTG5BRUJCWDhqQUVId0FXc2lCQ1FBSUFRZ0FEWUNBRUVCSVFVQ1FDQUJRUUpJRFFBZ0FDRURBMEFnQUNBRFFRaHJJZ01nQWlBQlFRSnJJZ2RCQW5ScUtBSUFheUlHRUN0QkFFNEVRQ0FBSUFNUUswRUFUZzBDQ3lBRUlBVkJBblJxSUFZZ0F5QUdJQU1RSzBFQVRpSUdHeUlETmdJQUlBVkJBV29oQlNBQlFRRnJJQWNnQmhzaUFVRUJTZzBBQ3dzZ0JDQUZFSFlnQkVId0FXb2tBQXVkQXdFRWZ5QUJJQUJCQkdvaUJHcEJBV3RCQUNBQmEzRWlCU0FDYWlBQUlBQW9BZ0FpQVdwQkJHdE5CSDhnQUNnQ0JDSURJQUFvQWdnaUJqWUNDQ0FHSUFNMkFnUWdCQ0FGUndSQUlBQWdBRUVFYXlnQ0FFRitjV3NpQXlBRklBUnJJZ1FnQXlnQ0FHb2lCVFlDQUNBRElBVkJmSEZxUVFScklBVTJBZ0FnQUNBRWFpSUFJQUVnQkdzaUFUWUNBQXNDZnlBQklBSkJHR3BQQkVBZ0FDQUNhaUlFSUFFZ0FtdEJDR3NpQVRZQ0NDQUVRUWhxSWdVZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBRUFuOGdCQ2dDQ0VFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBV2NoQXlBQlFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUJRZjhmVFEwQUdrRS9JQUZCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdFZ0FVRS9UeHNMSWdOQkJIUWlBVUhnelFGcU5nSU1JQVFnQVVIb3pRRnFJZ0VvQWdBMkFoQWdBU0FGTmdJQUlBUW9BaEFnQlRZQ0JFSG8xUUZCNk5VQktRTUFRZ0VnQTYyR2hEY0RBQ0FBSUFKQkNHb2lBVFlDQUNBQUlBRkJmSEZxREFFTElBQWdBV29MUVFScklBRTJBZ0FnQUVFRWFnVkJBQXNMd2dFQkEzOENRQ0FDS0FJUUlnTUVmeUFEQlNBQ0VFY05BU0FDS0FJUUN5QUNLQUlVSWdScklBRkpCRUFnQWlBQUlBRWdBaWdDSkJFQUFBOExBa0FDUUNBQ0tBSlFRUUJJRFFBZ0FVVU5BQ0FCSVFNRFFDQUFJQU5xSWdWQkFXc3RBQUJCQ2tjRVFDQURRUUZySWdNTkFRd0NDd3NnQWlBQUlBTWdBaWdDSkJFQUFDSUVJQU5KRFFJZ0FTQURheUVCSUFJb0FoUWhCQXdCQ3lBQUlRVkJBQ0VEQ3lBRUlBVWdBUkFXR2lBQ0lBSW9BaFFnQVdvMkFoUWdBU0FEYWlFRUN5QUVDMWtCQVg4Z0FDQUFLQUpJSWdGQkFXc2dBWEkyQWtnZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDOHdDQVFSL0lBRWdBUDBBQWdEOUN3SUFJQUVvQWhnaUFnUkFJQUVvQWhBaUF3Ui9RUUFoQWdOQUlBRW9BaGdnQWtFMGJHb29BaXdpQkFSQUlBUVFGQ0FCS0FJUUlRTUxJQUpCQVdvaUFpQURTUTBBQ3lBQktBSVlCU0FDQ3hBVUlBRkJBRFlDR0FzZ0FTQUFLQUlRSWdJMkFoQWdBU0FDUVRSc0VCZ2lBallDR0NBQ0JFQWdBU2dDRUFSQVFRQWhBd05BSUFJZ0EwRTBiQ0lGYWlJQ0lBQW9BaGdnQldvaUJQMEFBZ0Q5Q3dJQUlBSWdCQ2dDTURZQ01DQUNJQVQ5QUFJZy9Rc0NJQ0FDSUFUOUFBSVEvUXNDRUNBQktBSVlJZ0lnQldwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUVrTkFBc0xJQUVnQUNnQ0ZEWUNGQ0FCSUFBb0FpQWlBallDSUNBQ0JFQWdBU0FDRUJnaUFqWUNIQ0FDUlFSQUlBRkNBRGNDSEE4TElBSWdBQ2dDSENBQUtBSWdFQllhRHdzZ0FVRUFOZ0ljRHdzZ0FVRUFOZ0lRSUFGQkFEWUNHQXNFQUVFQkM4WUJBUU4vQTBBZ0FFRUVkQ0lCUWVUTkFXb2dBVUhnelFGcUlnSTJBZ0FnQVVIb3pRRnFJQUkyQWdBZ0FFRUJhaUlBUWNBQVJ3MEFDMEV3RUhvYUl3QkJFR3NpQUNRQUFrQWdBRUVNYWlBQVFRaHFFQkFOQUVIdzFRRkJDQ0FBS0FJTVFRSjBRUVJxRUNraUFUWUNBQ0FCUlEwQVFRZ2dBQ2dDQ0JBcElnRUVRRUh3MVFFb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFQUlEwQkMwSHcxUUZCQURZQ0FBc2dBRUVRYWlRQVFZeldBVUVxTmdJQVFkVFdBVUdZMXdFMkFnQUxrZ1lDQkg4RGV5TUFRUkJySWdZa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLMEFTQUFLQUxrQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUUFDUUNBREtBSUFJZ1ZGQkVCQkFDRUNJQVJCQVVHdEZFRUFFQk1NQVFzZ0FDZ0MwQ3NnQXlBRlFRRnJOZ0lBSUFJZ0JrRU1ha0VCRUJVZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRWlA5QUNBR0VCTWdCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRRlNBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMSUFVZ0F5Z0NBQ0lBU3dSQVFRQWhBZ3dFQ3lBQUlBVnJEQUlMSUFkQkhHb2hCRUVBSVFJRFFDQUFJQVpCREdwQkFoQVZJQUpCNEFCTkJFQWdCQ0FDUVFOMGFpSUZJQVlvQWd3aUNFSC9EM0UyQWdRZ0JTQUlRUXQyTmdJQUN5QUFRUUpxSVFBZ0FrRUJhaUlDSUFGSERRQUxJQUZCQVhRTElRQWdBQ0FES0FJQUlnRkxCRUJCQUNFQ0RBSUxJQUVnQUdzTE5nSUFRUUVoQWlBSEtBSVlRUUZIRFFBZ0IwRWNhaUVFSUFmOUNRSWNJUXNnQnlnQ0lDRUQvUXdCQUFBQUFnQUFBQU1BQUFBRUFBQUFJUXBCQUNFQkEwQWdCQ0FCUVFOMGFpSUFRUmhxSUFzZ0N2ME0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMnVBU0lKL1JzQVFRTnUvUkVnQ2YwYkFVRURidjBjQVNBSi9Sc0NRUU51L1J3Q0lBbjlHd05CQTI3OUhBUDlzUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5dUFFaUNmMWFBZ0FDSUFCQkVHb2dDZjFhQWdBQklBQkJDR29nQ2YxYUFnQUFJQVFnQVVFRWFpSUJRUU4wYWlJRklBbjlXZ0lBQXlBQUlBTTJBaHdnQUNBRE5nSVVJQUFnQXpZQ0RDQUZJQU0yQWdRZ0N2ME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0VLSUFGQjRBQkhEUUFMQ3lBR1FSQnFKQUFnQWd1RUJ3RUdmeU1BUVNCcklnWWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBSzBBU0FBS0FMa0FVR01MR3hxREFFTElBQW9BZ3dMSVFVQ1FDQURLQUlBUVFSTkJFQkJBQ0VBSUFSQkFVR0tGRUVBRUJNTUFRc2dBaUFGS0FMUUt5QUJRYmdJYkdvaUJTSUpRUVJxUVFFUUZTQUZJQVVvQWdSQkFXb2lCellDQkNBSFFTSlBCRUFnQmtFaE5nSUVJQVlnQnpZQ0FDQUVRUUZCcmpzZ0JoQVRRUUFoQUF3QkN5QUhJQUFvQXJnQklnaE5CRUFnQmlBSE5nSVlJQVlnQ0RZQ0ZDQUdJQUUyQWhBZ0JFRUJRWUtBQVNBR1FSQnFFQk1nQUNBQUtBSUlRWUNBQW5JMkFnaEJBQ0VBREFFTElBSkJBV29nQlVFSWFrRUJFQlVnQlNBRktBSUlRUUpxTmdJSUlBSkJBbW9nQlVFTWFrRUJFQlVnQlNBRktBSU1RUUpxSWdBMkFnd0NRQUpBSUFVb0FnZ2lBVUVLU3cwQUlBQkJDa3NOQUNBQUlBRnFRUTFKRFFFTFFRQWhBQ0FFUVFGQnR5cEJBQkFUREFFTElBSkJBMm9nQlVFUWFrRUJFQlVnQlMwQUVFR0FBWEVFUUVFQUlRQWdCRUVCUWY4eVFRQVFFd3dCQ3lBQ1FRUnFJQVZCRkdwQkFSQVZJQVVvQWhSQkFrOEVRRUVBSVFBZ0JFRUJRYjR5UVFBUUV3d0JDeUFESUFNb0FnQkJCV3NpQnpZQ0FFRUJJUUFnQlNnQ0JDRUJBa0FnQlMwQUFFRUJjVVVFUUNBQlJRMENJQVZCc0FkcUlRSWdCVUdzQm1vaEJFRUFJUVVnQVVFRFRRMEJJQUZCZkhFaEJVRUFJUU1EUUNBRUlBTkJBblFpQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQUlnQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQU5CQkdvaUF5QUZSdzBBQ3lBQklBVkhEUUVNQWdzZ0FTQUhUUVJBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBa0VGYWlBR1FSeHFRUUVRRlNBRklBWW9BaHdpQUVFRWRqWUNzQWNnQlNBQVFROXhOZ0tzQmlBRktBSUVJZ0ZCQWs4RVFDQUZRYkFIYWlFSElBVkJyQVpxSVFnZ0FrRUdhaUVBUVFFaEJRTkFJQUFnQmtFY2FrRUJFQlVDUUNBR0tBSWNJZ0ZCRUU4RVFDQUJRUTl4SWdJTkFRdEJBQ0VBSUFSQkFVSGtMa0VBRUJNTUJnc2dDQ0FGUVFKMElncHFJQUkyQWdBZ0J5QUthaUFCUVFSMk5nSUFJQUJCQVdvaEFDQUZRUUZxSWdVZ0NTZ0NCQ0lCU1EwQUN3c2dBeWdDQUNFSEN5QURJQWNnQVdzMkFnQkJBU0VBREFJTFFRQWhBQ0FFUVFGQmloUkJBQkFUREFFTEEwQWdCQ0FGUVFKMElnQnFRUTgyQWdBZ0FDQUNha0VQTmdJQVFRRWhBQ0FGUVFGcUlnVWdBVWtOQUFzTElBWkJJR29rQUNBQUMxSUFJQUVnQUMwQUFEb0FCeUFCSUFBdEFBRTZBQVlnQVNBQUxRQUNPZ0FGSUFFZ0FDMEFBem9BQkNBQklBQXRBQVE2QUFNZ0FTQUFMUUFGT2dBQ0lBRWdBQzBBQmpvQUFTQUJJQUF0QUFjNkFBQUxrZ0VCQkg4Z0FDQUJOZ0s0QVFKQUlBQW9BbUFpQTBVTkFDQURLQUlZSWdaRkRRQWdBQ2dDRENJRVJRMEFJQVFvQXRBclJRMEFJQU1vQWhBaUJFVUVRRUVCRHd0QkFDRURBMEFnQUNnQ0RDZ0MwQ3NnQTBHNENHeHFLQUlFSUFGTkJFQWdBa0VCUWJUSEFFRUFFQk5CQUE4TElBWWdBMEUwYkdvZ0FUWUNLRUVCSVFVZ0EwRUJhaUlESUFSSERRQUxDeUFGQzZVSEFnbC9DSDRqQUVFUWF5SUxKQUFDUUNBQ1JRUkFJQU5CQVVISTJnQkJBQkFUREFFTElBSW9BaEFpQ1NBQUtBSmdJZ2NvQWhCSkJFQWdBMEVCUWFYU0FFRUFFQk1NQVFzZ0FDZ0NnQUVpQlNBQUtBS0VBV3dpQmlBRVRRUkFJQXNnQkRZQ0FDQUxJQVpCQVdzMkFnUWdBMEVCUWNYL0FDQUxFQk5CQUNFRkRBRUxJQUlnQUNnQ2JDQUVJQVVnQkNBRmJpSUdiR3NpQ0NBQUtBSjBiR29pQlRZQ0FDQUNJQVVnQnlnQ0FDSUhJQVVnQjBzYklnYzJBZ0FnQWlBQUtBSnNJQUFvQW5RZ0NFRUJhbXhxSWdVMkFnZ2dBaUFGSUFBb0FtQW9BZ2dpQ0NBRklBaEpHeUlJTmdJSUlBSWdBQ2dDY0NBQUtBSjRJQVpzYWlJRk5nSUVJQUlnQlNBQUtBSmdLQUlFSWdvZ0JTQUtTeHNpQ2pZQ0JDQUNJQUFvQW5BZ0FDZ0NlQ0FHUVFGcWJHb2lCVFlDRENBQ0lBVWdBQ2dDWUNnQ0RDSUdJQVVnQmtrYklnVTJBZ3dnQUNnQ1lDSU1LQUlRSWdZRVFDQUZyRUlCZlNFUklBaXNRZ0Y5SVJJZ0NxMUNBWDBoRXlBSHJVSUJmU0VVSUF3b0FoZ2hDQ0FDS0FJWUlRVkJBQ0VIQTBBZ0JTQUlJQWRCTkd4cUtBSW9JZ28yQWlnZ0JTQVVJQVVvQWdBaURLMGlEbndnRG9BaUZUNENFQ0FGSUJNZ0JTZ0NCQ0lOclNJT2ZDQU9nQ0lRUGdJVUlBVkNmeUFLclNJT2hpSVBJQkRFZlNBT2g2Y2dEeUFSSUEyc0loQjhJQkIveEgwZ0RvZW5hellDRENBRklBOGdGY1I5SUE2SHB5QVBJQklnREt3aUQzd2dEMy9FZlNBT2g2ZHJOZ0lJSUFWQk5Hb2hCU0FIUVFGcUlnY2dCa2NOQUFzTElBWWdDVWtFUUNBQ0tBSVlJUVVEUUNBRklBWkJOR3dpQjJvb0Fpd1FGQ0FDS0FJWUlnVWdCMnBCQURZQ0xDQUdRUUZxSWdZZ0FpZ0NFRWtOQUFzZ0FpQUFLQUpnS0FJUU5nSVFDeUFBS0FKa0lnVUVRQ0FGRUNVTElBQkJBVUVrRUJjaUJqWUNaRUVBSVFVZ0JrVU5BQ0FDSUFZUVNDQUFJQVEyQWl3Z0FDZ0MyQUZCR0NBREVDaEZEUUFnQUNnQzJBRWlDU2dDQUNFRUlBa29BZ2doQmdKQUlBUUVRRUVCSVFVZ0JFRUJjU0VJSUFSQkFVWUVmMEVBQlNBRVFYNXhJUVJCQUNFSEEwQUNmMEVBSUFWRkRRQWFRUUFnQUNBQklBTWdCaWdDQUJFQUFFVU5BQm9nQUNBQklBTWdCaWdDQkJFQUFFRUFSd3NoQlNBR1FRaHFJUVlnQjBFQ2FpSUhJQVJIRFFBTElBVkZDeUVFUVFBZ0JTQUlHeUVGQWtBZ0NFVU5BQ0FFRFFBZ0FDQUJJQU1nQmlnQ0FCRUFBRUVBUnlFRkN5QUpRUUEyQWdBZ0JRMEJJQUFvQW1BUUpVRUFJUVVnQUVFQU5nSmdEQUlMSUFsQkFEWUNBQXNnQUNBQ0VGQWhCUXNnQzBFUWFpUUFJQVVMOGdNQkJYOENRQUpBSUFBb0Fqd2lBa1VFUUNBQktBSVFEUUZCQVE4TElBSkJOR3dRR0NJRlJRMEJJQUVvQWhBRVFDQUJLQUlZSVFJRFFDQUNJQU5CTkd3aUJHb29BaXdRRkNBQktBSVlJZ0lnQkdwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUNJRVNRMEFDd3NnQVNBQUtBSThCSDhnQUNnQ1pDZ0NHQ0VEUVFBaEFnTkFJQVVnQWtFMGJHb2lCQ0FESUFBb0FrQWdBa0VDZEdvb0FnQkJOR3dpQm1vaUEvMEFBZ0Q5Q3dJQUlBUWdBeWdDTURZQ01DQUVJQVA5QUFJZy9Rc0NJQ0FFSUFQOUFBSVEvUXNDRUNBRUlBQW9BbVFvQWhnaUF5QUdhaUlHS0FJa05nSWtJQVFnQmlnQ0xEWUNMQ0FHUVFBMkFpd2dBa0VCYWlJQ0lBQW9BandpQmtrTkFBc2dBU2dDRUFVZ0JBc0VmeUFBS0FKa0tBSVlJUUpCQUNFREEwQWdBaUFEUVRSc0lnUnFLQUlzRUJRZ0FDZ0NaQ2dDR0NJQ0lBUnFRUUEyQWl3Z0EwRUJhaUlESUFFb0FoQkpEUUFMSUFBb0Fqd0ZJQVlMTmdJUUlBRW9BaGdRRkNBQklBVTJBaGhCQVE4TElBRW9BaGdoQkNBQUtBSmtLQUlZSVFOQkFDRUNBMEFnQkNBQ1FUUnNJZ1ZxSWdRZ0F5QUZhaWdDSkRZQ0pDQUVLQUlzRUJRZ0FTZ0NHQ0lFSUFWcUlBQW9BbVFvQWhnaUF5QUZhaUlGS0FJc05nSXNJQVZCQURZQ0xDQUNRUUZxSWdJZ0FTZ0NFRWtOQUF0QkFROExJQUFvQW1BUUpTQUFRUUEyQW1CQkFBdkZCQUVJZndKQUlBSkZEUUFDUUNBQUtBSzRBU0lGUlEwQUlBQW9BbUFpQkVVTkFDQUVLQUlRUlEwQUlBUW9BaGdvQWlnZ0JVY05BQ0FDS0FJUUlnaEZEUUFnQWlnQ0dDSUdLQUlvRFFBZ0JpZ0NMQTBBUVFBaEJDQUlRUWhQQkVBZ0NFRjRjU0VKQTBBZ0JpQUVRVFJzYWlBRk5nSW9JQVlnQkVFQmNrRTBiR29nQlRZQ0tDQUdJQVJCQW5KQk5HeHFJQVUyQWlnZ0JpQUVRUU55UVRSc2FpQUZOZ0lvSUFZZ0JFRUVja0UwYkdvZ0JUWUNLQ0FHSUFSQkJYSkJOR3hxSUFVMkFpZ2dCaUFFUVFaeVFUUnNhaUFGTmdJb0lBWWdCRUVIY2tFMGJHb2dCVFlDS0NBRVFRaHFJUVFnQ2tFSWFpSUtJQWxIRFFBTEN5QUlRUWR4SWdnRVFBTkFJQVlnQkVFMGJHb2dCVFlDS0NBRVFRRnFJUVFnQzBFQmFpSUxJQWhIRFFBTEN5QUNJQU1RUHcwQVFRQVBDeUFBS0FKa0lnVkZCRUFnQUVFQlFTUVFGeUlGTmdKa0lBVkZEUUVMSUFJZ0JSQklJQUFvQXRnQlFSWWdBeEFvUlEwQUlBQW9BdGdCSWdZb0FnQWhCQ0FHS0FJSUlRVUNRQ0FFQkVCQkFTRUhJQVJCQVhFaENDQUVRUUZHQkg5QkFBVWdCRUYrY1NFSlFRQWhCQU5BQW45QkFDQUhSUTBBR2tFQUlBQWdBU0FESUFVb0FnQVJBQUJGRFFBYUlBQWdBU0FESUFVb0FnUVJBQUJCQUVjTElRY2dCVUVJYWlFRklBUkJBbW9pQkNBSlJ3MEFDeUFIUlFzaEJFRUFJQWNnQ0JzaEJ3SkFJQWhGRFFBZ0JBMEFJQUFnQVNBRElBVW9BZ0FSQUFCQkFFY2hCd3NnQmtFQU5nSUFJQWNOQVNBQUtBSmdFQ1VnQUVFQU5nSmdRUUFQQ3lBR1FRQTJBZ0FMSUFBZ0FoQlFJUWNMSUFjTCtBUUJCbjhDUUVFQlFUQVFGeUlDQkg4Z0FpQUFLQUxnQVNJQi9RQURBUDBMQXdBZ0FpQUJLUU1RTndNUUlBSWdBU2dDR0NJQk5nSVlJQUlnQVVFWWJCQVlJZ0UyQWh3Z0FVVUVRQ0FDRUJSQkFBOExBa0FnQUNnQzRBRW9BaHdpQXdSQUlBRWdBeUFDS0FJWVFSaHNFQllhREFFTElBRVFGQ0FDUVFBMkFod0xJQUlnQUNnQzRBRW9BaVFpQVRZQ0pDQUNJQUZCS0JBWElnRTJBaWdnQVVVRVFDQUNLQUljRUJRZ0FoQVVRUUFQQ3dKQUlBQW9BdUFCS0FJb0JFQWdBaWdDSkVVTkFRTkFJQUVnQlVFb2JDSURhaUFBS0FMZ0FTZ0NLQ0FEYWlnQ0ZDSUJOZ0lVSUFGQkdHd1FHQ0VCSUFJb0FpZ2lCQ0FEYWlJR0lBRTJBaGdnQVVVRVFDQUZCSDlCQUNFQkEwQWdBaWdDS0NBQlFTaHNhaWdDR0JBVUlBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFVREFVTEFrQWdBQ2dDNEFFb0FpZ2dBMm9vQWhnaUJBUkFJQUVnQkNBR0tBSVVRUmhzRUJZYUlBSW9BaWdoQVF3QkN5QUJFQlFnQWlnQ0tDSUJJQU5xUVFBMkFoZ0xJQUVnQTJvZ0FDZ0M0QUVvQWlnZ0Eyb29BZ1FpQVRZQ0JDQUJRUmhzRUJnaEFTQUNLQUlvSWdRZ0Eyb2lCaUFCTmdJUUlBRkZCRUFnQlFSL1FRQWhBUU5BSUFGQktHd2lBQ0FDS0FJb2FpZ0NHQkFVSUFJb0FpZ2dBR29vQWhBUUZDQUJRUUZxSWdFZ0JVY05BQXNnQWlnQ0tBVWdCQXNRRkF3RkN3SkFJQUFvQXVBQktBSW9JQU5xS0FJUUlnUUVRQ0FCSUFRZ0JpZ0NCRUVZYkJBV0dpQUNLQUlvSVFFTUFRc2dBUkFVSUFJb0FpZ2lBU0FEYWtFQU5nSVFDeUFCSUFOcVFnQTNBaUFnQlVFQmFpSUZJQUlvQWlSSkRRQUxEQUVMSUFFUUZDQUNRUUEyQWlnTElBSUZRUUFMRHdzZ0FpZ0NIQkFVSUFJUUZFRUFDNkFHQVE1L0l3QkJFR3NpQ0NRQUlBQW9BbUFvQWhBaERTQUlRUUZCT0JBWElnRTJBZ3dDUUNBQlJRMEFJQUVnQUNnQ1lDZ0NFQ0lKTmdJWUlBRWdBUDBBQW16OUN3SUFJQUVnQUNnQ2dBRTJBaEFnQUNnQ2hBRWhBeUFCUVFBMkFqUWdBU0FETmdJVUlBRWdBQ2dDRENJTUtBSUFOZ0lnSUFFZ0RDZ0NCRFlDSkNBQklBd29BZ2cyQWlnZ0FTQU1LQUlRTmdJc0lBRWdDVUc0Q0JBWElnQTJBakFnQUFSQUlBMEVRQU5BSUE1QnVBaHNJZ0FnRENnQzBDdHFJZ1FvQWdRaEFpQUJLQUl3SUFCcUlnVWdCUDBBQWdEOUN3SUVJQVVnQkNnQ0VEWUNGQ0FGSUFRb0FoUTJBaGdnQWtFZ1RRUkFJQVZCdEFkcUlBUkJzQWRxSUFJUUZob2dCVUd3Qm1vZ0JFR3NCbW9nQkNnQ0JCQVdHZ3NnQlNBRUtBSVlJZ0EyQWh3Z0JTQUVLQUtrQmpZQ3FBWkJBU0VHQWtBZ0FFRUJSd1JBSUFRb0FnUkJBMndpQUVFRGEwSGZBRXNOQVNBQVFRSnJJUVlMSUFWQnBBTnFJUWtnQlVFZ2FpRUtJQVJCSEdvaEMwRUFJUUFDUUNBR1FRaEpEUUFnQkNBR1FRTjBha0VjYWlBS1N3UkFJQXNnQlNBR1FRSjBha0drQTJwSkRRRUxJQVpCZkhFaEFFRUFJUU1EUUNBS0lBTkJBblFpQW1vZ0N5QURRUU4wYWlJSFFSeHFJQWRCRkdvZ0IwRU1haUFIL1Z3Q0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBaUFKYWlBSFFSaHFJQWRCRUdvZ0IwRUlhaUFIL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBMEVFYWlJRElBQkhEUUFMSUFBZ0JrWU5BUXNnQUVFQmNpRUNJQVpCQVhFRVFDQUtJQUJCQW5RaUEyb2dDeUFBUVFOMGFpSUFLQUlFTmdJQUlBTWdDV29nQUNnQ0FEWUNBQ0FDSVFBTElBSWdCa1lOQUFOQUlBb2dBRUVDZENJRGFpQUxJQUJCQTNScUlnSW9BZ1EyQWdBZ0F5QUphaUFDS0FJQU5nSUFJQW9nQUVFQmFpSUNRUUowSWdOcUlBc2dBa0VEZEdvaUFpZ0NCRFlDQUNBRElBbHFJQUlvQWdBMkFnQWdBRUVDYWlJQUlBWkhEUUFMQ3lBRklBUW9BcWdHTmdLc0JpQU9RUUZxSWc0Z0RVY05BQXNMSUFFaEFnd0JDeUFJUVF4cUJFQWdDQ2dDRENJQktBSXdJZ0FFZnlBQUVCUWdDQ2dDREFVZ0FRc1FGQ0FJUVFBMkFnd0xDeUFJUVJCcUpBQWdBZ3Y1QkFFSWZ5TUFRWUFDYXlJREpBQWdBQVJBUWVrTlFSRWdBaEFoSUFNZ0FDZ0NBRFlDOEFFZ0FrR0hFaUFEUWZBQmFoQWFJQU1nQUNnQ0JEWUM0QUVnQWtHVUVpQURRZUFCYWhBYUlBTWdBQ2dDQ0RZQzBBRWdBa0czT0NBRFFkQUJhaEFhSUFNZ0FDZ0NFRFlDd0FFZ0FrSHFFU0FEUWNBQmFoQWFJQUZCQUVvRVFBTkFJQUFvQXRBcklRUWdBeUFITmdLd0FTQUNRWThPSUFOQnNBRnFFQm9nQXlBRUlBZEJ1QWhzYWlJRUtBSUFOZ0tnQVNBQ1FZWVNJQU5Cb0FGcUVCb2dBeUFFS0FJRU5nS1FBU0FDUWFrNUlBTkJrQUZxRUJvZ0F5QUVLQUlJTmdLQUFTQUNRZFUzSUFOQmdBRnFFQm9nQXlBRUtBSU1OZ0p3SUFKQjVUY2dBMEh3QUdvUUdpQURJQVFvQWhBMkFtQWdBa0gxRVNBRFFlQUFhaEFhSUFNZ0JDZ0NGRFlDVUNBQ1FlczVJQU5CMEFCcUVCcEIrZ3RCRnlBQ0VDRWdCQ2dDQkFSQUlBUkJzQWRxSVFZZ0JFR3NCbW9oQ0VFQUlRVURRQ0FJSUFWQkFuUWlDV29vQWdBaENpQURJQVlnQ1dvb0FnQTJBa1FnQXlBS05nSkFJQUpCK0F3Z0EwRkFheEFhSUFWQkFXb2lCU0FFS0FJRVNRMEFDd3NnQWhCN0lBTWdCQ2dDR0RZQ01DQUNRZlUzSUFOQk1Hb1FHaUFESUFRb0FxUUdOZ0lnSUFKQnBqZ2dBMEVnYWhBYVFRRWhCa0dTREVFVUlBSVFJUUpBSUFRb0FoaEJBVWNFUUNBRUtBSUVJZ1ZCQUV3TkFTQUZRUU5zUVFKcklRWUxJQVJCSEdvaENFRUFJUVVEUUNBRElBZ2dCVUVEZEdvcEFnQkNJSWszQXhBZ0FrSDREQ0FEUVJCcUVCb2dCVUVCYWlJRklBWkhEUUFMQ3lBQ0VIc2dBeUFFS0FLb0JqWUNBQ0FDUVpVNElBTVFHa0dHRFVFRklBSVFJU0FIUVFGcUlnY2dBVWNOQUFzTFFZY05RUVFnQWhBaEN5QURRWUFDYWlRQUMrc0pBd2wvQVg0QmV5TUFRYkFCYXlJRkpBQUNRQ0FCUVlBRGNRUkFRWkl1UVFzZ0FoQWhEQUVMQWtBZ0FVRUJjVVVOQUNBQUtBSmdJZ1pGRFFBakFFSFFBR3NpQXlRQVFkc05RUTBnQWhBaElBTkJBRG9BVHlBRFFRazZBRTRnQXlBR0tRSUFOd0pFSUFNZ0EwSE9BR29pQkRZQ1FDQUNRYnM2SUFOQlFHc1FHaUFESUFZcEFnZzNBalFnQXlBRU5nSXdJQUpCcWpvZ0EwRXdhaEFhSUFNZ0JpZ0NFRFlDSkNBRElBUTJBaUFnQWtISU9DQURRU0JxRUJvQ1FDQUdLQUlZUlEwQUlBWW9BaEJGRFFBRFFDQURJQU5CemdCcUlnczJBaEFnQXlBSU5nSVVJQUpCK3cwZ0EwRVFhaEFhSUFZb0FoZ2dDRUUwYkdvaENTTUFRVEJySWdRa0FDQUVRUWs3QUM0Z0JFRUpPZ0F0SUFRZ0NTa0NBRGNDSkNBRUlBUkJMV29pQ2pZQ0lDQUNRWVE0SUFSQklHb1FHaUFFSUFrb0FoZzJBaFFnQkNBS05nSVFJQUpCK2prZ0JFRVFhaEFhSUFRZ0NTZ0NJRFlDQkNBRUlBbzJBZ0FnQWtIZk9TQUVFQm9nQkVFd2FpUUFJQU1nQ3pZQ0FDQUNRWUVOSUFNUUdpQUlRUUZxSWdnZ0JpZ0NFRWtOQUFzTFFZa05RUUlnQWhBaElBTkIwQUJxSkFBTEFrQWdBVUVDY1VVTkFDQUFLQUpnUlEwQVFlWU9RU1FnQWhBaElBVWdBQ2tDYkRjRG9BRWdBa0hVRWlBRlFhQUJhaEFhSUFVZ0FDa0NkRGNEa0FFZ0FrR3lFaUFGUVpBQmFoQWFJQVVnQUNrRGdBRTNBNEFCSUFKQnhCSWdCVUdBQVdvUUdpQUFLQUlNSUFBb0FtQW9BaEFnQWhCVVFZa05RUUlnQWhBaEN3SkFJQUZCQ0hGRkRRQWdBQ2dDWUVVTkFDQUFLQUtBQVNBQUtBS0VBV3dpQkVVTkFDQUFLQUswQVNFREEwQWdBeUFBS0FKZ0tBSVFJQUlRVkNBRFFZd3NhaUVESUFkQkFXb2lCeUFFUncwQUN3c2dBVUVRY1VVTkFDQUFLQUxnQVNFQVFjQU9RU1VnQWhBaElBVWdBUDBBQXdEOUN3UndJQUpCdlN3Z0JVSHdBR29RR2tHdURrRVJJQUlRSVFKQUlBQW9BaHhGRFFBZ0FDZ0NHRVVOQUVFQUlRTURRQ0FBS0FJY0lBTkJHR3hxSWdFdkFRQWhCQ0FCS1FNSUlRd2dCU0FCS0FJUU5nSmdJQVVnRERjRFdDQUZJQVEyQWxBZ0FrSEFPU0FGUWRBQWFoQWFJQU5CQVdvaUF5QUFLQUlZU1EwQUN3dEJodzFCQkNBQ0VDRUNRQ0FBS0FJb0lnUkZEUUFnQUNnQ0pDSUdSUTBBUVFBaEIwRUFJUU1EUUFKQUlBUWdBMEVvYkdvaUFTZ0NCQ0lJUlEwQUlBRW9BaEFpQVVVTkFDQUJLUU1BUWdCWERRQWdBU2tEQ0VJQVVnMEFRZm9LRUhnTkFnc2dCeUFJYWlFSElBTkJBV29pQXlBR1J3MEFDeUFIUlEwQVFaME9RUkFnQWhBaElBQW9BaVFFUUNBQUtBSW9JUUZCQUNFSEEwQWdCU0FCSUFkQktHd2lCR29vQWdRaUJqWUNSQ0FGSUFjMkFrQWdBa0dHT2lBRlFVQnJFQm9nQUNnQ0tDRUJBa0FnQmtVTkFFRUFJUU1nQVNBRWFpZ0NFRVVOQUFOQUlBQW9BaWdnQkdvb0FoQWdBMEVZYkdvaUFmMEFBd0FoRFNBRklBRXBBeEEzQXpnZ0JTQU4vUXNES0NBRklBTTJBaUFnQWtHVjFRQWdCVUVnYWhBYUlBTkJBV29pQXlBR1J3MEFDeUFBS0FJb0lRRUxBa0FnQVNBRWFpSUdLQUlZUlEwQVFRQWhBeUFHS0FJVVJRMEFBMEFnQVNBRWFpZ0NHQ0FEUVJoc2FpSUJMd0VBSVFZZ0FTa0RDQ0VNSUFVZ0FTZ0NFRFlDRUNBRklBdzNBd2dnQlNBR05nSUFJQUpCd0RrZ0JSQWFJQU5CQVdvaUF5QUFLQUlvSWdFZ0JHb29BaFJKRFFBTEN5QUhRUUZxSWdjZ0FDZ0NKRWtOQUFzTFFZY05RUVFnQWhBaEMwR0pEVUVDSUFJUUlRc2dCVUd3QVdva0FBdVJBZ0VEZndKQVFRRkJnQUlRRnlJQkJIOGdBVUVCTmdJQUlBRkJBVFlDMEFFZ0FTQUJMUURVQVVFR2Nqb0ExQUVnQVVFQlFZd3NFQmNpQURZQ0RDQUFSUTBCSUFGQkFVSG9CeEFYSWdBMkFoQWdBRVVOQVNBQlFnQTNBekFnQVVGL05nSXNJQUZCNkFjMkFoUUNRRUVCUVRBUUZ5SUFCRUFnQUVFQU5nSVlJQUJCNUFBMkFpQWdBRUhrQUVFWUVCY2lBallDSENBQ0RRRWdBQkFVQ3lBQlFRQTJBdUFCREFJTElBQkJBRFlDS0NBQklBQTJBdUFCSUFFUU9TSUFOZ0xjQVNBQVJRMEJJQUVRT1NJQU5nTFlBU0FBUlEwQkFrQkI1Z29RZUVVTkFBc2dBVUVBRUhNaUFEWUM3QUVnQUVVRVFDQUJRUUFRY3lJQU5nTHNBU0FBUlEwQ0N5QUJCVUVBQ3c4TElBRVFRRUVBQzVBSkFnbC9BWDRqQUVIUUFXc2lCeVFBSUFBb0FtQWhDUUpBQWtBQ1FDQUFLQUtBQVVFQlJ3MEFJQUFvQW9RQlFRRkhEUUFnQUNnQ3RBRW9BdHdyRFFFTElBQW9BZ2hCQ0VZTkFDQUdRUUZCMGRJQVFRQVFFd3dCQ3dKQUlBRW9BaEFpREVVTkFDQUFLQUs0QVNFS0lBRW9BaGdoQ3lBTVFRaFBCRUFnREVGNGNTRVBBMEFnQ3lBSVFUUnNhaUFLTmdJb0lBc2dDRUVCY2tFMGJHb2dDallDS0NBTElBaEJBbkpCTkd4cUlBbzJBaWdnQ3lBSVFRTnlRVFJzYWlBS05nSW9JQXNnQ0VFRWNrRTBiR29nQ2pZQ0tDQUxJQWhCQlhKQk5HeHFJQW8yQWlnZ0N5QUlRUVp5UVRSc2FpQUtOZ0lvSUFzZ0NFRUhja0UwYkdvZ0NqWUNLQ0FJUVFocUlRZ2dEa0VJYWlJT0lBOUhEUUFMQ3lBTVFRZHhJZ3hGRFFBRFFDQUxJQWhCTkd4cUlBbzJBaWdnQ0VFQmFpRUlJQTFCQVdvaURTQU1SdzBBQ3dzZ0FpQURjaUFFY2lBRmNrVUVRQ0FHUVFSQm96RkJBQkFUSUFCQ0FEY0NIQ0FBSUFBcEFvQUJOd0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEEvSVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkJsZUlBSUFjUUUwRUFJUWdNQVFzZ0NTZ0NDQ0lJSUFKSkJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkI2ZVVBSUFkQkVHb1FFMEVBSVFnTUFRc0NRQ0FKS0FJQUlnZ2dBa3NFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1Fjbm9BQ0FIUWNBQmFoQVRJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FteHJJQUFvQW5SdU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkIxZUVBSUFkQklHb1FFMEVBSVFnTUFRc2dDU2dDRENJQ0lBTkpCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCdk9RQUlBZEJNR29RRTBFQUlRZ01BUXNDUUNBSktBSUVJZ0lnQTBzRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRWnJuQUNBSFFiQUJhaEFUSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbkJySUFBb0FuaHVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFaUGhBQ0FIUVVCckVCTU1BUXNnQ1NnQ0FDSUNJQVJMQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQjhPY0FJQWRCMEFCcUVCTU1BUXNDUUNBSktBSUlJZ0lnQkVrRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRWkhsQUNBSFFhQUJhaEFUSUFBZ0FDZ0NnQUUyQWlRZ0NTZ0NDQ0VFREFFTElBQWdBRFVDZENJUUlBUWdBQ2dDYkd1dGZFSUJmU0FRZ0Q0Q0pBc2dBU0FFTmdJSUlBVkJBRXdFUUNBSElBVTJBbUFnQmtFQlFkRGdBQ0FIUWVBQWFoQVREQUVMSUFrb0FnUWlBaUFGU3dSQUlBY2dBallDZENBSElBVTJBbkFnQmtFQlFjRG1BQ0FIUWZBQWFoQVREQUVMQWtBZ0NTZ0NEQ0lDSUFWSkJFQWdCeUFDTmdLVUFTQUhJQVUyQXBBQklBWkJBa0hqNHdBZ0IwR1FBV29RRXlBQUlBQW9Bb1FCTmdJb0lBa29BZ3doQlF3QkN5QUFJQUExQW5naUVDQUZJQUFvQW5CcnJYeENBWDBnRUlBK0FpZ0xJQUVnQlRZQ0RDQUFJQUF0QUZ4QkFuSTZBRndnQVNBR0VEOUZCRUFNQVFzZ0J5QUIvUUFDQVAwTEJJQUJJQVpCQkVIcE9pQUhRWUFCYWhBVFFRRWhDQXNnQjBIUUFXb2tBQ0FJQzVFQ0FRWi9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1lDSUVSUVJBSUFOQkFVR1Q2d0JCQUJBVFFRQU1BUXRCQUVFRUlBUW9BaEFRRnlJRVJRMEFHaUFCQkVBZ0FDZ0NZQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQjVoSWdCVUVRYWhBVERBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRZm9hSUFVUUV3c2dCQkFVUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBVUlBQW9Ba0FRRkFKQUlBRUVRQ0FBSUFGQkFuUWlCQkFZSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBV0dnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUFGUVNCcUpBQUxtZ1FCQjM4Z0FVRUJRU1FRRnlJRU5nSmdBa0FDUUNBRVJRMEFBa0FnQVNnQzNBRkJFaUFERUNnRVFDQUJLQUxjQVVFVElBTVFLQTBCQ3d3Q0N5QUJLQUxjQVNJSEtBSUFJUVVnQnlnQ0NDRUdBa0FnQlFSQVFRRWhCQ0FGUVFGeElRZ2dCVUVCUmdSL1FRQUZJQVZCZm5FaEJRTkFBbjlCQUNBRVJRMEFHa0VBSUFFZ0FDQURJQVlvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVlvQWdRUkFBQkJBRWNMSVFRZ0JrRUlhaUVHSUFsQkFtb2lDU0FGUncwQUN5QUVSUXNoQlVFQUlBUWdDQnNoQkFKQUlBaEZEUUFnQlEwQUlBRWdBQ0FESUFZb0FnQVJBQUJCQUVjaEJBc2dCMEVBTmdJQUlBUU5BUXdEQ3lBSFFRQTJBZ0FMQWtBZ0FTZ0MyQUZCRkNBREVDZ0VRQ0FCS0FMWUFVRVZJQU1RS0EwQkN3d0NDeUFCS0FMWUFTSUhLQUlBSVFVZ0J5Z0NDQ0VHQWtBZ0JRUkFRUUVoQkNBRlFRRnhJUWdnQlVFQlJnUi9RUUFGSUFWQmZuRWhCVUVBSVFrRFFBSi9RUUFnQkVVTkFCcEJBQ0FCSUFBZ0F5QUdLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUdLQUlFRVFBQVFRQkhDeUVFSUFaQkNHb2hCaUFKUVFKcUlna2dCVWNOQUFzZ0JFVUxJUVZCQUNBRUlBZ2JJUVFDUUNBSVJRMEFJQVVOQUNBQklBQWdBeUFHS0FJQUVRQUFRUUJISVFRTElBZEJBRFlDQUNBRURRRU1Bd3NnQjBFQU5nSUFDeUFDUVFGQkpCQVhJZ0EyQWdBZ0FFVU5BQ0FCS0FKZ0lBQVFTRUVCSVFvTElBb1BDeUFCS0FKZ0VDVWdBVUVBTmdKZ1FRQUxBZ0FMQkFCQkFRczBBQUpBSUFCRkRRQWdBVVVOQUNBQUlBRW9BZ1EyQXJ3QklBQWdBU2dDQURZQ3VBRWdBQ0FCS0FLNFFFRUNjVFlDK0FFTEM3UUZBUWgvSUFBb0FoZ2lCQ2dDRUNJSlJRUkFRUUFQQ3lBRUtBSVlJUVVnQUNnQ0ZDZ0NBQ2dDRkNFRUFrQUNRQ0FCUlFSQVFRQWhBUU5BSUFVb0FoZ2hBaUFFS0FJY0lBUW9BaGhCbUFGc2FpSUFRWXdCYXlnQ0FDSUhJQUJCbEFGcktBSUFJZ2hySVFNZ0FFR1FBV3NvQWdBZ0FFR1lBV3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXRCQUNFQklBQW9Ba0JGQkVBRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVFRWF5Z0NBQ0lISUFCQkRHc29BZ0FpQ0dzaEF5QUFRUWhyS0FJQUlBQkJFR3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXNEUUNBRktBSVlJUUlnQkNnQ0hDQUVLQUlZUVpnQmJHb2lBRUdNQVdzb0FnQWlCeUFBUVpRQmF5Z0NBQ0lJYXlFRElBQkJrQUZyS0FJQUlBQkJtQUZyS0FJQWF5RUFBa0FnQnlBSVJnMEFJQUN0SUFPdGZrSWdpRkFOQUF3REN5QUFJQU5zSVFNQ1FFRUVJQUpCQTNZZ0FrRUhjVUVBUjJvaUFDQUFRUU5HR3lJQ1JRMEFJQUt0SUFPdGZrSWdpRkFOQUF3REMwRi9JUUFnQWlBRGJDSUNJQUZCZjNOTERRRWdCRUhNQUdvaEJDQUZRVFJxSVFVZ0FTQUNhaUlCSVFBZ0JrRUJhaUlHSUFsSERRQUxDeUFBRHd0QmZ3dmFCQUVMZnlBQUJFQWdBQ2dDRkNJQkJFQWdBU2dDQUNJRkJFQWdCU2dDRkNFRElBVW9BaEFFZjBFUVFSRWdBQzBBS0VFQmNSc2hDQU5BSUFNb0Fod2lBZ1JBSUFNb0FpQWlBVUdZQVc0aENrRUFJUWtnQVVHWUFVOEVmd05BSUFJb0FqQWlBUVJBSUFJb0FqUWlCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ01BVWdBUXNRRkNBQ1FRQTJBakFMSUFJb0FsUWlBUVJBSUFJb0FsZ2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ1ZBVWdBUXNRRkNBQ1FRQTJBbFFMSUFJb0FuZ2lBUVJBSUFJb0Fud2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ2VBVWdBUXNRRkNBQ1FRQTJBbmdMSUFKQm1BRnFJUUlnQ1VFQmFpSUpJQXBIRFFBTElBTW9BaHdGSUFJTEVCUWdBMEVBTmdJY0N3SkFJQU1vQWloRkRRQWdBeWdDSkNJQlJRMEFJQUVRRkNBRC9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NKQXNnQXlnQ05CQVVJQU5CekFCcUlRTWdDMEVCYWlJTElBVW9BaEJKRFFBTElBVW9BaFFGSUFNTEVCUWdCVUVBTmdJVUlBQW9BaFFvQWdBUUZDQUFLQUlVSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDRkFzZ0FDZ0NSQkFVSUFBUUZBc0wyUk1CRVg4akFFRWdheUlQSkFBZ0R5QUZOZ0lZSUFFZ0F5Z0NIRUhNQUd4cUtBSWNJQU1vQWlCQm1BRnNhaUVRQWtBQ1FDQURLQUlvRFFBZ0VDZ0NHRVVOQUNBUVFSeHFJUWtEUUFKQUlBa29BZ2dnQ1NnQ0FFY0VmeUFKS0FJTUlBa29BZ1JHQlVFQkN3MEFJQU1vQWlRaUFTQUpLQUlZUVNodVR3UkFJQWhCQVVIdkZVRUFFQk1NQkFzZ0NTZ0NGQ0FCUVNoc2FpSUJLQUlnRUdzZ0FTZ0NKQkJySUFFb0FoUWdBU2dDRUd3aURFVU5BQ0FCS0FJWUlRRWdERUVJVHdSQUlBeEJlSEVoQzBFQUlRb0RRQ0FCUWdBM0FvUUVJQUZDQURjQ3dBTWdBVUlBTndMOEFpQUJRZ0EzQXJnQ0lBRkNBRGNDOUFFZ0FVSUFOd0t3QVNBQlFnQTNBbXdnQVVJQU53SW9JQUZCb0FScUlRRWdDa0VJYWlJS0lBdEhEUUFMQzBFQUlRb2dERUVIY1NJTVJRMEFBMEFnQVVJQU53SW9JQUZCeEFCcUlRRWdDa0VCYWlJS0lBeEhEUUFMQ3lBSlFTUnFJUWtnRFVFQmFpSU5JQkFvQWhoSkRRQUxDeUFGSVF3Q1FDQUNMUUFBUVFKeFJRMEFJQWRCQlUwRVFDQUlRUUpCdnlCQkFCQVREQUVMQWtBZ0JTMEFBRUgvQVVZRVFDQUZMUUFCUVpFQlJnMEJDeUFJUVFKQjZTQkJBQkFUREFFTElBOGdCVUVHYWlJTU5nSVlDMEVVRUJnaUMwVU5BQUovSUFBdEFHeEJBWEVFUUNBQVFTaHFJUkVnQUNnQ0tDRU1JQUJCTEdvTUFRc2dBaTBBaUN4QkFuRUVRQ0FDUWJBb2FpRVJJQUlvQXJBb0lRd2dBa0c4S0dvTUFRc2dEeUFGSUFkcUlBeHJOZ0ljSUE5QkdHb2hFU0FQUVJ4cUN5SVNLQUlBSVFBZ0MwSUFOd0lNSUFzZ0REWUNDQ0FMSUF3MkFnQWdDeUFBSUF4cU5nSUVJQXRCQVJBalJRUkFJQXNRYlJvZ0N5Z0NDQ0FMS0FJQWF5QUxFRElnREdvaEFDQVJLQUlBSVFFZ0VpQVNLQUlBSWdNZ0FpMEFBRUVFY1FSL0lBTWdBR3NnQVdwQkFVMEVRQ0FJUVFGQm9TSkJBQkFUREFNTEFrQWdBQzBBQUVIL0FVWUVRQ0FBTFFBQlFaSUJSZzBCQ3lBSVFRRkJqQ0pCQUJBVERBTUxJQUJCQW1vRklBQUxJQUZySWdCck5nSUFJQkVnQUNBQmFqWUNBQ0FFUVFBMkFnQWdCaUFQS0FJWUlBVnJOZ0lBUVFFaEZ3d0JDeUFRS0FJWUJFQWdFRUVjYWlFSEEwQWdBeWdDSkNFQUlBY29BaFFoQVFKQUlBY29BZ2dnQnlnQ0FFY0VmeUFIS0FJTUlBY29BZ1JHQlVFQkN3MEFJQUVnQUVFb2JHb2lGQ2dDRkNBVUtBSVFiQ0lZUlEwQUlCUW9BaGdoQ1VFQUlSVURRQUpBQW44Z0NTZ0NLRVVFUUNBTElCUW9BaUFnRlNBREtBSW9RUUZxRUdrTUFRc2dDMEVCRUNNTFJRUkFJQWxCQURZQ0pBd0JDeUFKS0FJb1JRUkFRUUFoQVFOQUlBRWlBRUVCYWlFQklBc2dGQ2dDSkNBVklBQVFhVVVOQUFzZ0J5Z0NIQ0VCSUFsQkF6WUNJQ0FKSUFFMkFoZ2dDU0FCSUFCclFRRnFOZ0ljQ3lBSkFuOUJBU0FMUVFFUUkwVU5BQnBCQWlBTFFRRVFJMFVOQUJvZ0MwRUNFQ01pQUVFRFJ3UkFJQUJCQTJvTUFRc2dDMEVGRUNNaUFFRWZSd1JBSUFCQkJtb01BUXNnQzBFSEVDTkJKV29MTmdJa1FRQWhBUU5BSUFFaUFFRUJhaUVCSUF0QkFSQWpEUUFMSUFrZ0NTZ0NJQ0FBYWpZQ0lBSkFBa0FDZnlBSktBSW9JZ0JGQkVBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRQWdDU2dDTUVVRVFDQUpLQUlBUWZBQkVCc2lBVVVOQkNBSklBRTJBZ0FnQVNBSktBSXdRUmhzYWtFQVFmQUJFQmthSUFsQkNqWUNNQXNnQ1NnQ0FDSUtJZ0g5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJQUlBRkNBRGNDRUVFQlFRcEI3UUFnQUVFQmNSc2dBRUVFY1JzaEFVRUFEQUVMSUFrb0FnQWlBU0FBUVFGcklnMUJHR3hxSWdvb0FnUWdDaWdDREVjTkFTQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhEU0FKS0FJd0lnb2dBRUVCYWtrRWZ5QUJJQXBCQ21vaUNrRVliQkFiSWdGRkRRTWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBWkdpQUpJQW8yQWpBZ0NTZ0NBQVVnQVFzZ0FFRVliR29pQ2lJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQUNmMEVCSUExQkJIRU5BQnBCN1FBZ0RVRUJjVVVOQUJwQkFrRUNRUUVnQ2tFTWF5Z0NBQ0lCUVFwR0d5QUJRUUZHR3dzaEFTQUFDeUVOSUFvZ0FUWUNEQXNnQ1NnQ0pDRUFJQUlvQXRBcklBTW9BaHhCdUFoc2FpMEFFRUhBQUhFRVFBTkFJQTFCR0d3aURpQUpLQUlBYWlBQVFRRWdEUnNpRXpZQ0VDQUpLQUlnSVJaQkFDRUtJQUFoQVNBVFFRSlBCRUFEUUNBS1FRRnFJUW9nQVVFRFN5QUJRUUYySVFFTkFBc0xJQW9nRm1vaUFVRWhUd1JBSUE4Z0FUWUNFQ0FJUVFGQml2a0FJQTlCRUdvUUV3d0RDeUFMSUFFUUl5RUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFNZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBMUJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FHeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRR1JvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTlFRRnFJZzFCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FLUVFSeEJFQWdBVUVCTmdJTURBRUxJQXBCQVhFRVFDQUJRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoczJBZ3dGSUFGQjdRQTJBZ3dMREFBTEFBc0RRQ0FOUVJoc0lnNGdDU2dDQUdvaUFTQUJLQUlNSUFFb0FnUnJJZ0VnQUNBQUlBRktHeUlCTmdJUUlBa29BaUFoRTBFQUlRb2dBVUVDVHdSQUEwQWdDa0VCYWlFS0lBRkJBMHNnQVVFQmRpRUJEUUFMQ3lBS0lCTnFJZ0ZCSVU4RVFDQVBJQUUyQWdBZ0NFRUJRWXI1QUNBUEVCTU1BZ3NnQ3lBQkVDTWhDaUFKS0FJQUlnRWdEbW9pRGlBS05nSVVJQUFnRGlnQ0VHc2lBRUVBVEEwQ0lBSW9BdEFySUFNb0FoeEJ1QWhzYWlnQ0VDRUtJQWtvQWpBaURpQU5RUUpxU1FSQUlBRWdEa0VLYWlJT1FSaHNFQnNpQVVVTkFpQUpJQUUyQWdBZ0FTQUpLQUl3UVJoc2FrRUFRZkFCRUJrYUlBa2dEallDTUNBSktBSUFJUUVMSUFFZ0RVRUJhaUlOUVJoc2FpSUIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDQUNBQlFnQTNBaEFnQ2tFRWNRUkFJQUZCQVRZQ0RBd0JDeUFLUVFGeEJFQWdBVUVDUVFKQkFTQUJRUXhyS0FJQUlnRkJDa1liSUFGQkFVWWJOZ0lNQlNBQlFlMEFOZ0lNQ3d3QUN3QUxJQXNRTWd3RkN5QUpRY1FBYWlFSklCVkJBV29pRlNBWVJ3MEFDd3NnQjBFa2FpRUhJQmxCQVdvaUdTQVFLQUlZU1EwQUN3c2dDeEJ0UlFSQUlBc1FNZ3dCQ3lBTEtBSUlJQXNvQWdCcklBc1FNaUFNYWlFQklCRW9BZ0FoQUNBQ0xRQUFRUVJ4QkVBZ0VpZ0NBQ0FCYXlBQWFrRUJUUVJBSUFoQkFVR2hJa0VBRUJNTUFnc0NRQ0FCTFFBQVFmOEJSZ1JBSUFFdEFBRkJrZ0ZHRFFFTElBaEJBVUdNSWtFQUVCTU1BZ3NnQVVFQ2FpRUJDeUFBSUFGR0RRQWdFaUFTS0FJQUlBQWdBV3RxTmdJQUlCRWdBVFlDQUVFQklSY2dCRUVCTmdJQUlBWWdEeWdDR0NBRmF6WUNBQXNnRDBFZ2FpUUFJQmNMbHlRQ0ZIOE9mZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ1ZBNEZBQUVDQXdRS0N3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUJ5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFZYkNBRUVBRUJNTURBc2dBQ2dDTEVVRVFDQUFLQUlrSVFKQkFDRUJEQVVMSUFCQkFEWUNMQ0FBS0FKRUlRTkJBU0VCREFRTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQnM4SUFRUUFRRXd3TEN5QUFLQUlzUlFSQUlBQW9BaVFoQkVFQUlRRU1DQXNnQUVFQU5nSXNJQUFvQWpBaEEwRUJJUUVNQndzQ1FDQUFLQUkwSWdRZ0FDZ0N4QUVpQ2trRVFDQUFLQUpBSWc0Z0NrRUJha2tOQVFzZ0FDZ0M3QUZCQVVHNnd3QkJBQkFUREFvTElBQW9BaXhGQkVBZ0FDZ0NLQ0VMREFZTElBQkNBRGNDNUFFZ0FFRUFOZ0lzSUFBb0FzZ0JJUXdEUUNBTUlBZEJCSFJxSWdVb0FnZ2lEd1JBSUFVb0Fnd2hFa0VBSVFFRFFBSkFJQThnQVVGL2Myb2lFQ0FTSUFGQkJIUnFJaEVvQWdCcUlnbEJIMHNOQUNBRktBSUFJaE5CZnlBSmRrc05BQ0FBSUFJZ0V5QUpkQ0lKSUFJZ0NVa2JJQWtnQWhzaUFqWUM1QUVMQWtBZ0VTZ0NCQ0FRYWlJSlFSOUxEUUFnQlNnQ0JDSVFRWDhnQ1haTERRQWdBQ0FESUJBZ0NYUWlDU0FESUFsSkd5QUpJQU1iSWdNMkF1Z0JDeUFCUVFGcUlnRWdEMGNOQUFzTElBZEJBV29pQnlBS1J3MEFDeUFDUlEwSElBTkZEUWNnQUMwQUFFVUVRQ0FBSUFBb0F0QUJOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DeUFBS0FJd0lRVkJBU0VCREFVTEFrQWdBQ2dDTkNJRklBQW9Bc1FCSWdsSkJFQWdBQ2dDUUNJU0lBbEJBV3BKRFFFTElBQW9BdXdCUVFGQmpjTUFRUUFRRXd3SkN5QUFLQUlzUlFSQUlBQW9Bc2dCSWcwZ0FDZ0NIQ0lFUVFSMGFpRUxJQUFvQWlnaENBd0VDeUFBUWdBM0F1UUJJQUJCQURZQ0xDQUFLQUxJQVNFTkEwQWdEU0FHUVFSMGFpSUtLQUlJSWc0RVFDQUtLQUlNSVJCQkFDRUJBMEFDUUNBT0lBRkJmM05xSWhFZ0VDQUJRUVIwYWlJVEtBSUFhaUlNUVI5TERRQWdDaWdDQUNJVVFYOGdESFpMRFFBZ0FDQUNJQlFnREhRaURDQUNJQXhKR3lBTUlBSWJJZ0kyQXVRQkN3SkFJQk1vQWdRZ0VXb2lERUVmU3cwQUlBb29BZ1FpRVVGL0lBeDJTdzBBSUFBZ0F5QVJJQXgwSWd3Z0F5QU1TUnNnRENBREd5SUROZ0xvQVFzZ0FVRUJhaUlCSUE1SERRQUxDeUFHUVFGcUlnWWdDVWNOQUFzZ0FrVU5CaUFEUlEwR0FrQWdBQzBBQUFSQUlBQW9BbXdoQmd3QkN5QUFJQUFvQXRBQklnWTJBbXdnQUNBQUtBTE1BVFlDWkNBQUlBQW9BdGdCTmdKd0lBQWdBQ2dDMUFFMkFtZ0xRUUVoQVF3REN3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUR5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFlRENBRUVBRUJNTUJnc2dBQ2dDTEVVRVFDQUFLQUxJQVNBQUtBSWNJZ1pCQkhScUlRVWdBQ2dDS0NFSFFRQWhBUXdDQ3lBQUlBWTJBaHdnQUVFQU5nSXNRUUVoQVF3QkN3TkFBbjhDUUNBQlJRUkFJQUpCQVdvaEFnd0JDeUFBSUFNMkFpZ2dBQ2dDT0NBRFRRMEpJQUFvQWpBaEJFRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUVOZ0lnSUFRZ0FDZ0NQRThOQVNBQUlBWTJBaHdnQmlFQlFRQWhCUXdFQ3lBQUlBSTJBaVFnQUNnQ1RDQUNUUVJBSUFBb0Fod2hBVUVCSVFVTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBQW9BaWhzYWlBQUtBSVVJQUFvQWh4c2FpQUFLQUlZSUFKc2FpSUJJQUFvQWdoUEJFQU1EQXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNRFFzZ0FDZ0NLRUVCYWlFRERBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUNBRlJRUkFJQUVnQjA4TkFTQUFLQUlnSWdVZ0FDZ0N5QUVnQVVFRWRHb2lEU2dDQ0U4TkF5QUFMUUFBUlFSQUlBQWdEU2dDRENBRlFRUjBhaUlCS0FJTUlBRW9BZ2hzTmdKTUN5QUFLQUpJSVFKQkFTRUJEQVVMSUFBZ0FVRUJhaUlCTmdJY0RBRUxJQUFvQWlCQkFXb2hCRUVBSVFFTUF3dEJBQ0VGREFFTFFRRWhCUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0IwRUJhaUlITmdJb0RBRUxJQVlnRDA4TkNDQUFRZ0EzQXVRQklBQW9Bc2dCSUFaQkJIUnFJZ1VvQWdnaUMwVU5DQ0FGS0FJTUlRcEJBQ0VDUVFBaEJFRUFJUUVEUUFKQUlBc2dBVUYvYzJvaUNTQUtJQUZCQkhScUlnNG9BZ0JxSWdoQkgwc05BQ0FGS0FJQUlneEJmeUFJZGtzTkFDQUFJQVFnRENBSWRDSUlJQVFnQ0VrYklBZ2dCQnNpQkRZQzVBRUxBa0FnRGlnQ0JDQUphaUlJUVI5TERRQWdCU2dDQkNJSlFYOGdDSFpMRFFBZ0FDQUNJQWtnQ0hRaUNDQUNJQWhKR3lBSUlBSWJJZ0kyQXVnQkN5QUJRUUZxSWdFZ0MwY05BQXNnQkVVTkJpQUNSUTBHQWtBZ0FDMEFBQVJBSUFBb0Ftd2hBZ3dCQ3lBQUlBQW9BdEFCSWdJMkFtd2dBQ0FBS0FMTUFUWUNaQ0FBSUFBb0F0Z0JOZ0p3SUFBZ0FDZ0MxQUUyQW1nTFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBSTJBdUFCSUFJZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0IwMEVRQ0FBS0FJZ0lRTkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBSGJHb2dBQ2dDRkNBR2JHb2dBQ2dDR0NBQUtBSWtiR29pQVNBQUtBSUlUd1JBREFzTElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBd0xJQUFnQmtFQmFpSUdOZ0ljREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQ0FBQW44Z0FVVUVRQ0FBSUEwMkF0d0JJQTBnQUNnQ2FFOE5BaUFBS0FJd0RBRUxJQU5CQVdvTElnTTJBaUFnQUNnQ1BDSUJJQVVvQWdnaUJDQUJJQVJKR3lBRFN3UkFJQVVvQWdBaUFTQUJyU0llSUFRZ0EwRi9jMm9pQ0swaUZvWWlGeUFXaUtkSERRTWdCU2dDQkNJRVFuOGdGb2luY1NBRVJ3MERJQVN0SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlDYTE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlEcTE4SUJlQUlSd2dBVUovSUFVb0Fnd2dBMEVFZEdvaUN5Z0NBQ0lLSUFocXJTSWRpS2R4SUFGSERRTWdCQ0FWSUFzb0FnUWlBU0FJYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUJLMGlJaUFoZ2tJQVVnUkFJQVFnQ1VjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQkswaUZTQWVJQjJHZ2tJQVVnUkFJQVFnRGtjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0N5Z0NDQ0lFUlEwRElBc29BZ3hGRFFNZ0hLY2lDeUFncDBZTkF5QWFweUlJSUIrblJnMERJQUFnQUNnQ1JDSUhOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0NuWWdDeUFLZG1zZ0dTQWlmQ0FZZ0tjZ0FYWWdDQ0FCZG1zZ0JHeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnUnFJQUVnQkhCcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUVhaUFCSUFSd2F5RUNRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQUNBSVFRRnFJZ2cyQWlnTUFRc2dBQ0FHTmdMZ0FTQUFLQUp3SUFaTkRRY2dBQ2dDWkNFUFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBODJBdHdCSUE4Z0FDZ0NhRThOQVNBQUlBVTJBaHdnQlNFRVFRQWhBUXdFQ3lBQUtBSTRJQWhOQkVBZ0FDZ0NJQ0VIUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dDR3hxSUFBb0FoUWdCR3hxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0tDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdMQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ1pxSUFFZ0JuQnJJUVlNQVF0QkFDRUJEQU1MUVFFaEFRd0NDd05BQWtBQ1FBSkFBa0FnQVVVRVFDQUVJQkpQRFFJZ0FDQUFLQUl3SWdjMkFpQWdEU0FFUVFSMGFpRUxEQUVMSUFBZ0IwRUJhaUlITmdJZ0N5QUFLQUk4SWdFZ0N5Z0NDQ0lDSUFFZ0Fra2JJQWRMQkVBZ0N5Z0NBQ0lCSUFHdEloNGdBaUFIUVg5emFpSUtyU0lXaGlJWElCYUlwMGNOQXlBTEtBSUVJZ0pDZnlBV2lLZHhJQUpIRFFNZ0FxMGlGU0FXaGlJWVFnRjlJaGtnQURVQzJBRjhJQmlBSVI4Z0dTQUFLQUxRQVNJT3JYd2dHSUFoR2lBWFFnRjlJaHNnQURVQzFBRjhJQmVBSVNBZ0d5QUFLQUxNQVNJTXJYd2dGNEFoSENBQlFuOGdDeWdDRENBSFFRUjBhaUlES0FJQUlna2dDbXF0SWgySXAzRWdBVWNOQXlBQ0lCVWdBeWdDQkNJQklBcHFyU0lWaGlJaElCV0lwMGNOQXlBQUtBTGdBU0lDclNJaUlDR0NRZ0JTQkVBZ0FpQU9SdzBFUW44Z0ZZWkNmNFVnR2tMLy8vLy9ENE1nRm9hRFVBMEVDeUFBS0FMY0FTSUNyU0lWSUI0Z0hZYUNRZ0JTQkVBZ0FpQU1SdzBFUW44Z0hZWkNmNFVnSEVMLy8vLy9ENE1nRm9hRFVBMEVDeUFES0FJSUlnSkZEUU1nQXlnQ0RFVU5BeUFjcHlJRElDQ25SZzBESUJxbklnb2dINmRHRFFNZ0FDQUFLQUpFSWdnMkFpZ2dBQ0FWSUJ0OElCZUFweUFKZGlBRElBbDJheUFaSUNKOElCaUFweUFCZGlBS0lBRjJheUFDYkdvMkFpUkJBU0VCREFVTElBQWdCRUVCYWlJRU5nSWNEQUVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlBbW9nQVNBQ2NHc2hEMEVBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0MwRUJhaUlMTmdJb0RBRUxJQUFnQlRZQ0lDQUFLQUk4SUFWTkRRWWdBQ2dDYkNFSVFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBZzJBdUFCSUFnZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0MwMEVRQ0FBS0FJY0lRWkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBTGJHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUFLQUlrYkdvaUFTQUFLQUlJVHdSQURBa0xJQUFvQWdRZ0FVRUJkR29pQVM4QkFBMEJEQW9MSUFBb0FpQkJBV29oQlF3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnRFRZQzNBRWdEU0FBS0FKb1R3MENJQUFnQkRZQ0hDQUVJUVlNQVFzZ0FDQUdRUUZxSWdZMkFod0xJQVlnRGtrRVFDQUFLQUlnSWdjZ0FDZ0N5QUVnQmtFRWRHb2lBU2dDQ0NJRFR3MERJQUVvQWdBaUFpQUNyU0llSUFNZ0IwRi9jMm9pQ3EwaUZvWWlGeUFXaUtkSERRTWdBU2dDQkNJRFFuOGdGb2luY1NBRFJ3MERJQU90SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlENjE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlDYTE4SUJlQUlSd2dBa0ovSUFFb0Fnd2dCMEVFZEdvaUFTZ0NBQ0lISUFwcXJTSWRpS2R4SUFKSERRTWdBeUFWSUFFb0FnUWlBaUFLYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUE2MGlJaUFoZ2tJQVVnUkFJQU1nRDBjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQTYwaUZTQWVJQjJHZ2tJQVVnUkFJQU1nQ1VjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0FTZ0NDQ0lEUlEwRElBRW9BZ3hGRFFNZ0hLY2lBU0FncDBZTkF5QWFweUlLSUIrblJnMERJQUFnQUNnQ1JDSUxOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0IzWWdBU0FIZG1zZ0dTQWlmQ0FZZ0tjZ0FuWWdDaUFDZG1zZ0EyeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnSnFJQUVnQW5CcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUNhaUFCSUFKd2F5RUlRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQkVFQmFpRUVEQUVMSUFBZ0F6WUNJQ0FBS0FJOElBTk5EUVVnQUNnQ1JDRUNRUUFNQVF0QkFRc2hBUU5BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQUkyQWlnZ0FpQUFLQUk0VHcwQklBQWdCallDSENBR0lRRkJBQ0VGREFRTElBQWdCRFlDSkNBQUtBSk1JQVJOQkVBZ0FDZ0NIQ0VCUVFFaEJRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dBQ2dDS0d4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0JHeHFJZ0VnQUNnQ0NFOEVRQXdJQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3SkN5QUFLQUlnUVFGcUlRTU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUlBVkZCRUFnQVNBSFR3MEJJQUFvQWlBaUJTQUFLQUxJQVNBQlFRUjBhaUlOS0FJSVR3MERJQUF0QUFCRkJFQWdBQ0FOS0FJTUlBVkJCSFJxSWdFb0Fnd2dBU2dDQ0d3MkFrd0xJQUFvQWtnaEJFRUJJUUVNQlFzZ0FDQUJRUUZxSWdFMkFod01BUXNnQUNnQ0tFRUJhaUVDUVFBaEFRd0RDMEVBSVFVTUFRdEJBU0VGREFBTEFBc0FDd0FMUVFBUEN5QUFLQUxzQVVFQlFab0tRUUFRRXd0QkFBOExJQUZCQVRzQkFFRUJDNVlMQVFwL0FrQWdBU2dDQUNBRVFRTnNJZ3gySWdaQmtJQ0FBWEVOQUNBQUlBQkJIR29pRGlBQUtBSnNJQVpCN3dOeGFpMEFBRUVDZEdvaUNqWUNhQ0FBSUFBb0FnUWdDaWdDQUNJSktBSUFJZ2hySWdZMkFnUUNRQ0FJSUFBb0FnQWlCMEVRZGtzRVFDQUpLQUlFSVFzZ0FDQUlOZ0lFSUFvZ0NVRUlRUXdnQmlBSVNTSUdHMm9vQWdBMkFnQWdDeUFMUlNBR0d5RUpJQUFvQWdnaEJnTkFBa0FnQmcwQUlBQW9BaEFpQmtFQmFpRUxJQVl0QUFFaENpQUdMUUFBUWY4QlJnUkFJQXBCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJnd0NDeUFBSUFzMkFoQWdCeUFLUVFsMGFpRUhRUWNoQmd3QkN5QUFJQXMyQWhCQkNDRUdJQWNnQ2tFSWRHb2hCd3NnQUNBR1FRRnJJZ1kyQWdnZ0FDQUhRUUYwSWdjMkFnQWdBQ0FJUVFGMElnZzJBZ1FnQ0VHQWdBSkpEUUFMSUFnaEJnd0JDeUFBSUFjZ0NFRVFkR3NpQnpZQ0FDQUdRWUNBQW5GRkJFQWdDU2dDQkNFTElBb2dDVUVNUVFnZ0JpQUlTU0lJRzJvb0FnQTJBZ0FnQzBVZ0N5QUlHeUVKSUFBb0FnZ2hDQU5BQWtBZ0NBMEFJQUFvQWhBaUNFRUJhaUVMSUFndEFBRWhDaUFJTFFBQVFmOEJSZ1JBSUFwQmtBRlBCRUFnQUNBQUtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBQUlBczJBaEFnQnlBS1FRbDBhaUVIUVFjaENBd0JDeUFBSUFzMkFoQkJDQ0VJSUFjZ0NrRUlkR29oQndzZ0FDQUlRUUZySWdnMkFnZ2dBQ0FIUVFGMElnYzJBZ0FnQUNBR1FRRjBJZ1kyQWdRZ0JrR0FnQUpKRFFBTERBRUxJQWtvQWdRaENRc2dDVVVOQUNBQUlBNGdBU2dDQkNBTVFSRnFka0VFY1NBQlFRUnJJZzBvQWdBZ0RFRVRhblpCQVhFZ0FTZ0NBQ0lJSUF4QkVHcDJRY0FBY1NBSUlBeDJRYW9CY1hJZ0NDQU1RUXhxUVE0Z0JCdDJRUkJ4Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ3pZQ2FDQUFJQVlnQ3lnQ0FDSUtLQUlBSWdocklnWTJBZ1FDUUNBSUlBZEJFSFpMQkVBZ0NpZ0NCQ0VKSUFBZ0NEWUNCQ0FMSUFwQkNFRU1JQVlnQ0VraUJodHFLQUlBTmdJQUlBa2dDVVVnQmhzaENpQUFLQUlJSVFZRFFBSkFJQVlOQUNBQUtBSVFJZ1pCQVdvaEN5QUdMUUFCSVFrZ0JpMEFBRUgvQVVZRVFDQUpRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFZTUFnc2dBQ0FMTmdJUUlBY2dDVUVKZEdvaEIwRUhJUVlNQVFzZ0FDQUxOZ0lRUVFnaEJpQUhJQWxCQ0hScUlRY0xJQUFnQmtFQmF5SUdOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdDRUVCZENJSU5nSUVJQWhCZ0lBQ1NRMEFDd3dCQ3lBQUlBY2dDRUVRZEdzaUNUWUNBQ0FHUVlDQUFuRkZCRUFnQ2lnQ0JDRUhJQXNnQ2tFTVFRZ2dCaUFJU1NJSUcyb29BZ0EyQWdBZ0IwVWdCeUFJR3lFS0lBQW9BZ2doQndOQUFrQWdCdzBBSUFBb0FoQWlCMEVCYWlFTElBY3RBQUVoQ0NBSExRQUFRZjhCUmdSQUlBaEJrQUZQQkVBZ0FDQUFLQUlNUVFGcU5nSU1JQWxCZ1A0RGFpRUpRUWdoQnd3Q0N5QUFJQXMyQWhBZ0NTQUlRUWwwYWlFSlFRY2hCd3dCQ3lBQUlBczJBaEJCQ0NFSElBa2dDRUVJZEdvaENRc2dBQ0FIUVFGcklnYzJBZ2dnQUNBSlFRRjBJZ2syQWdBZ0FDQUdRUUYwSWdZMkFnUWdCa0dBZ0FKSkRRQUxEQUVMSUFvb0FnUWhDZ3NnQWlBRFFRQWdBMnNnQ2lBUFFaREFBV290QUFBaUFrWWJOZ0lBSUEwZ0RTZ0NBRUVnSUF4MGNqWUNBQ0FCSUFFb0FnQWdBaUFLY3lJRFFSTjBRUkJ5SUF4MGNqWUNBQ0FCSUFFb0FnUkJDQ0FNZEhJMkFnUWdCQ0FGY2tVRVFDQUJRWDRnQUNnQ2ZHdEJBblJxSWdJZ0FpZ0NCRUdBZ0FKeU5nSUVJQUlnQWlnQ0FDQURRUjkwY2tHQWdBUnlOZ0lBSUFKQkJHc2lBaUFDS0FJQVFZQ0FDSEkyQWdBTElBUkJBMGNOQUNBQklBQW9BbnhCQW5ScUlnQkJCR29nQUNnQ0JFRUVjallDQUNBQUlBQW9BZ3hCQVhJMkFnd2dBQ0FBS0FJSUlBTkJFblJ5UVFKeU5nSUlDd3V1Q3dFSmZ3SkFJQUVvQWdBZ0JFRURiQ0lOZGlJSFFaQ0FnQUZ4RFFBZ0IwSHZBM0VpQjBVTkFDQUFJQUJCSEdvaURpQUFLQUpzSUFkcUxRQUFRUUowYWlJTE5nSm9JQUFnQUNnQ0JDQUxLQUlBSWdvb0FnQWlDV3NpQnpZQ0JBSkFJQWtnQUNnQ0FDSUlRUkIyU3dSQUlBb29BZ1FoRENBQUlBazJBZ1FnQ3lBS1FRaEJEQ0FISUFsSklnY2JhaWdDQURZQ0FDQU1JQXhGSUFjYklRb2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRd2dCeTBBQVNFTElBY3RBQUJCL3dGR0JFQWdDMEdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSERBSUxJQUFnRERZQ0VDQUlJQXRCQ1hScUlRaEJCeUVIREFFTElBQWdERFlDRUVFSUlRY2dDQ0FMUVFoMGFpRUlDeUFBSUFkQkFXc2lCellDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWxCQVhRaUNUWUNCQ0FKUVlDQUFra05BQXNnQ1NFSERBRUxJQUFnQ0NBSlFSQjBheUlJTmdJQUlBZEJnSUFDY1VVRVFDQUtLQUlFSVF3Z0N5QUtRUXhCQ0NBSElBbEpJZ2tiYWlnQ0FEWUNBQ0FNUlNBTUlBa2JJUW9nQUNnQ0NDRUpBMEFDUUNBSkRRQWdBQ2dDRUNJSlFRRnFJUXdnQ1MwQUFTRUxJQWt0QUFCQi93RkdCRUFnQzBHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUpEQUlMSUFBZ0REWUNFQ0FJSUF0QkNYUnFJUWhCQnlFSkRBRUxJQUFnRERZQ0VFRUlJUWtnQ0NBTFFRaDBhaUVJQ3lBQUlBbEJBV3NpQ1RZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFkQkFYUWlCellDQkNBSFFZQ0FBa2tOQUFzTUFRc2dDaWdDQkNFS0N3SkFJQXBGRFFBZ0FDQU9JQUVvQWdRZ0RVRVJhblpCQkhFZ0FVRUVheUlQS0FJQUlBMUJFMnAyUVFGeElBRW9BZ0FpQ1NBTlFSQnFka0hBQUhFZ0NTQU5ka0dxQVhGeUlBa2dEVUVNYWtFT0lBUWJka0VRY1hKeWNpSUtRWkMrQVdvdEFBQkJBblJxSWd3MkFtZ2dBQ0FISUF3b0FnQWlDeWdDQUNJSmF5SUhOZ0lFSUFwQmtNQUJhaTBBQUNFT0FrQWdDU0FJUVJCMlN3UkFJQXNvQWdRaENpQUFJQWsyQWdRZ0RDQUxRUWhCRENBSElBbEpJZ2NiYWlnQ0FEWUNBQ0FLSUFwRklBY2JJUXNnQUNnQ0NDRUhBMEFDUUNBSERRQWdBQ2dDRUNJSFFRRnFJUXdnQnkwQUFTRUtJQWN0QUFCQi93RkdCRUFnQ2tHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUhEQUlMSUFBZ0REWUNFQ0FJSUFwQkNYUnFJUWhCQnlFSERBRUxJQUFnRERZQ0VFRUlJUWNnQ0NBS1FRaDBhaUVJQ3lBQUlBZEJBV3NpQnpZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFsQkFYUWlDVFlDQkNBSlFZQ0FBa2tOQUFzTUFRc2dBQ0FJSUFsQkVIUnJJZ28yQWdBZ0IwR0FnQUp4UlFSQUlBc29BZ1FoQ0NBTUlBdEJERUVJSUFjZ0NVa2lDUnRxS0FJQU5nSUFJQWhGSUFnZ0NSc2hDeUFBS0FJSUlRZ0RRQUpBSUFnTkFDQUFLQUlRSWdoQkFXb2hEQ0FJTFFBQklRa2dDQzBBQUVIL0FVWUVRQ0FKUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBS1FZRCtBMm9oQ2tFSUlRZ01BZ3NnQUNBTU5nSVFJQW9nQ1VFSmRHb2hDa0VISVFnTUFRc2dBQ0FNTmdJUVFRZ2hDQ0FLSUFsQkNIUnFJUW9MSUFBZ0NFRUJheUlJTmdJSUlBQWdDa0VCZENJS05nSUFJQUFnQjBFQmRDSUhOZ0lFSUFkQmdJQUNTUTBBQ3d3QkN5QUxLQUlFSVFzTElBSWdBMEVBSUFOcklBc2dEa1liTmdJQUlBOGdEeWdDQUVFZ0lBMTBjallDQUNBQklBRW9BZ0FnQ3lBT2N5SUNRUk4wUVJCeUlBMTBjallDQUNBQklBRW9BZ1JCQ0NBTmRISTJBZ1FnQkNBR2NrVUVRQ0FCSUFWQkFuUnJJZ0FnQUNnQ0JFR0FnQUp5TmdJRUlBQWdBQ2dDQUNBQ1FSOTBja0dBZ0FSeU5nSUFJQUJCQkdzaUFDQUFLQUlBUVlDQUNISTJBZ0FMSUFSQkEwY05BQ0FCSUFWQkFuUnFJZ0FnQUNnQ0JFRUJjallDQkNBQUlBQW9BZ0FnQWtFU2RISkJBbkkyQWdBZ0FFRUVheUlBSUFBb0FnQkJCSEkyQWdBTElBRWdBU2dDQUVHQWdJQUJJQTEwY2pZQ0FBc0xyUUVBSUFCQnNLSUJOZ0prSUFCQnNLSUJOZ0pnSUFCQnNLSUJOZ0pjSUFCQnNLSUJOZ0pZSUFCQnNLSUJOZ0pVSUFCQnNLSUJOZ0pRSUFCQnNLSUJOZ0pNSUFCQnNLSUJOZ0pJSUFCQnNLSUJOZ0pFSUFCQnNLSUJOZ0pBSUFCQnNLSUJOZ0k4SUFCQnNLSUJOZ0k0SUFCQnNLSUJOZ0kwSUFCQnNLSUJOZ0l3SUFCQnNLSUJOZ0lzSUFCQnNLSUJOZ0lvSUFCQnNLSUJOZ0lrSUFCQnNLSUJOZ0lnSUFCQnNLSUJOZ0ljQy9RRkFnbC9BWDRnQUNBQk5nSUFJQUQ5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dNSUlBQWdBellDSENBQUlBSkJBV3NpQmpZQ0dDQUJRUU54SVFvQ2Z5QUNRUUJNQkVBZ0FTRUVJQU1NQVFzZ0FDQUJRUUZxSWdRMkFnQWdBUzBBQUFzaEFVRUlJUWdnQUVFSU5nSVFJQUFnQVVIL0FVWWlDVFlDRkNBQUlBR3RJZzAzQXdnQ1FDQUtRUU5HRFFBZ0FDQUNRUUpySWdzMkFoZ2dBQUovSUFKQkFrZ0VRQ0FFSVFVZ0F3d0JDeUFBSUFSQkFXb2lCVFlDQUNBRUxRQUFDeUlFUWY4QlJpSUpOZ0lVSUFCQkQwRVFJQUZCL3dGR0d5SUlOZ0lRSUFBZ0JFRUlkQ0FCY3EwaURUY0RDQ0FLUVFKR0JFQWdCU0VFSUFZaEFpQUxJUVlNQVFzZ0FDQUNRUU5ySWd3MkFoZ2dBQUovSUFKQkEwZ0VRQ0FGSVFjZ0F3d0JDeUFBSUFWQkFXb2lCellDQUNBRkxRQUFDeUlCUWY4QlJpSUpOZ0lVSUFCQkIwRUlJQVJCL3dGR0d5QUlhaUlGTmdJUUlBQWdBYTBnQ0syR0lBMkVJZzAzQXdnZ0NrRUJSZ1JBSUFjaEJDQUZJUWdnQ3lFQ0lBd2hCZ3dCQ3lBQUlBSkJCR3NpQmpZQ0dDQUFBbjhnQWtFRVNBUkFJQWNoQkNBRERBRUxJQUFnQjBFQmFpSUVOZ0lBSUFjdEFBQUxJZ0pCL3dGR0lnazJBaFFnQUVFSFFRZ2dBVUgvQVVZYklBVnFJZ2cyQWhBZ0FDQUNyU0FGcllZZ0RZUWlEVGNEQ0NBTUlRSUxBa0FnQWtFRlRnUkFJQVFvQWdBaEF5QUFJQUpCQldzMkFoZ2dBQ0FFUVFScU5nSUFEQUVMUVFBaEFVRi9RUUFnQXhzaEF5QUNRUUpJRFFBRFFDQUFJQVJCQVdvaUFqWUNBQ0FFTFFBQUlRUWdBQ0FHUVFGcklnVTJBaGdnQTBIL0FTQUJkRUYvYzNFZ0JDQUJkSEloQXlBQlFRaHFJUUVnQmtFQlN5QUNJUVFnQlNFR0RRQUxDeUFBSUFOQkdIWWlBVUgvQVVZMkFoUWdBRUVIUVFnZ0NSc2lBa0VIUVFnZ0EwSC9BWEVpQkVIL0FVWWJhaUlHUVFkQkNDQURRUWgyUWY4QmNTSUZRZjhCUmh0cUlnZEJCMEVJSUFOQkVIWkIvd0Z4SWdOQi93RkdHeUFJYW1vMkFoQWdBQ0FGSUFKMElBTWdCblJ5SUFFZ0IzUnlJQVJ5clNBSXJZWWdEWVEzQXdnTHR3VUNFbjhDZmdKL0lBQW9BaHdnQVVHWUFXeHFJZ0pCa0FGcktBSUFJQUpCbUFGcktBSUFheUlESVFVZ0FrR01BV3NvQWdBZ0FrR1VBV3NvQWdCcklnSWhCa0hBQUNBRElBTkJ3QUJQR3lFRFFjQUFJQUlnQWtIQUFFOGJJUVFDUUNBRlJRMEFJQVpGRFFBZ0EwVU5BQ0FFUlEwQUlBTkJmeUFFYmtFQ2Rrc05BRUVCUVJ3UUZ5SUNJQVEyQWd3Z0FpQUROZ0lJSUFJZ0JqWUNCQ0FDSUFVMkFnQWdBaUFFclNJVUlBYXRmRUlCZlNBVWdDSVVweUlFTmdJVUlBSWdBNjBpRlNBRnJYeENBWDBnRllBaUZhY2lBellDRUFKQUlCUkMvLy8vL3crRElCVkMvLy8vL3crRGZrSWdpS2NOQUNBQ1FRUWdBeUFFYkJBWElnTTJBaGdnQTBVTkFDQUNEQUlMSUFJUUZBdEJBQXNpQ1VVRVFFRUFEd3NDUUNBQkJFQURRQ0FPUVpnQmJDSVBJQUFvQWh4cUlnVW9BaGdpQWdSQUlBVkJIR29oRUNBRktBSVVJUU1nQlNnQ0VDRUVRUUFoQ2dOQUlBTWdCR3dFUUNBUUlBcEJKR3hxSVFaQkFDRUxBMEFnQmlnQ0ZDQUxRU2hzYWlJSUtBSVVJZ0lnQ0NnQ0VDSUhiQVJBUVFBaEJBTkFJQWdvQWhnZ0JFSEVBR3hxSWdNb0Fqd2lFUVJBSUFNb0Fnd2hCeUFES0FJVUlSSWdBeWdDRUNFTUlBTW9BZ2dpRXlBR0tBSUFheUVESUFZb0FoQWlEVUVCY1FSQUlBQW9BaHdnRDJvaUFrR1FBV3NvQWdBZ0Eyb2dBa0dZQVdzb0FnQnJJUU1MSUFjZ0JpZ0NCR3NoQWlBTlFRSnhCRUFnQWlBQUtBSWNJQTlxSWcxQmpBRnJLQUlBYWlBTlFaUUJheWdDQUdzaEFnc2dDU0FESUFJZ0F5QU1JQk5ySWd4cUlCSWdCMnNnQW1vZ0VVRUJJQXhCQUJBcVJRMEpJQWdvQWhBaEJ5QUlLQUlVSVFJTElBUkJBV29pQkNBQ0lBZHNTUTBBQ3lBRktBSVFJUVFnQlNnQ0ZDRURDeUFMUVFGcUlnc2dBeUFFYkVrTkFBc2dCU2dDR0NFQ0N5QUtRUUZxSWdvZ0Fra05BQXNMSUE1QkFXb2lEaUFCUncwQUN3c2dDUThMSUFrUUowRUFDOGdNQWc1L0Juc2dBQ2dDQ0NJTElBQW9BZ1JxSVFjQ1FDQUFLQUlNUlFSQUlBZEJBa2dOQVNBQktBSUFJQUVnQzBFQ2RHb2lEU2dDQUNJRVFRRnFRUUYxYXlFRElBQW9BZ0FoQmdKQUlBZEJCRWtFUUNBRUlRSU1BUXNnQjBFRWF5SUFRUUYySWdsQkFXb2hEQUpBSUFCQkZra0VRRUVCSVFBTUFRc2dCaUFCSUF0QkFuUnFJZ1VnQ1VFQ2RDSUNha0VJYWtrZ0JpQUpRUU4wYWtFSWFpSUFJQVZCQkdwTGNRUkFRUUVoQUF3QkN5QUdJQUVnQW1wQkNHcEpJQUZCQkdvZ0FFbHhCRUJCQVNFQURBRUxJQXhCL1AvLy93ZHhJZ1ZCQVhJaEFDQUZRUUYwSVFnZ0JQMFJJUkFnQS8wUklSSDlEQUFBQUFBQ0FBQUFCQUFBQUFZQUFBQWhGRUVBSVFJRFFDQUJJQUpCQW5SQkJISWlBMnI5QUFJQUlSTWdBeUFOYXYwQUFnQWhFaUFHSUFKQkEzUnFJZ01nRWYxYUFnQURJQU5CQ0dvZ0V5QVNJQkFnRXYwTkRBME9EeEFSRWhNVUZSWVhHQmthR3lJVC9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUVpRVAxYUFnQUFJQU5CRUdvZ0VQMWFBZ0FCSUFOQkdHb2dFUDFhQWdBQ0lBWWdGUDBNQVFBQUFBRUFBQUFCQUFBQUFRQUFBUDFRSWhYOUd3QkJBblJxSUJBZ0VTQVEvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJUi9Wb0NBQUFnQmlBVi9Sc0JRUUowYWlBUi9Wb0NBQUVnQmlBVi9Sc0NRUUowYWlBUi9Wb0NBQUlnQmlBVi9Sc0RRUUowYWlBUi9Wb0NBQU1nRlAwTUNBQUFBQWdBQUFBSUFBQUFDQUFBQVAydUFTRVVJQkFoRVNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJEOUd3TWhBaUFSL1JzRElRTWdCU0FNUmcwQklBSWhCQXNEUUNBQklBQkJBblFpQW1vb0FnQWhDU0FDSUExcUtBSUFJUUlnQmlBSVFRSjBhaUlGSUFNMkFnQWdCU0FESUFrZ0FpQUVha0VDYWtFQ2RXc2lBMnBCQVhVZ0JHbzJBZ1FnQ0VFQ2FpRUlJQUFnREVjZ0FpRUVJQUJCQVdvaEFBMEFDd3NnQmlBSVFRSjBhaUFETmdJQVFYd2hBQ0FIUVFGeEJIOGdCaUFIUVFGcklnQkJBblJxSUFFZ0FFRUJkR29vQWdBZ0FrRUJha0VCZFdzaUFEWUNBQ0FBSUFOcVFRRjFJUU5CZUFWQmZBc2dCaUFIUVFKMElnQnFhaUFDSUFOcU5nSUFJQUVnQmlBQUVCWWFEd3NDUUFKQUFrQWdCMEVCYXc0Q0FBRUNDeUFCSUFFb0FnQkJBbTAyQWdBUEN5QUFLQUlBSWdRZ0FTZ0NBQ0FCSUF0QkFuUnFJZ01vQWdCQkFXcEJBWFZySWdBMkFnUWdCQ0FBSUFNb0FnQnFOZ0lBSUFFZ0JDa0NBRGNDQUE4TElBZEJBMGdOQUNBQUtBSUFJZ29nQVNnQ0FDQUJJQXRCQW5ScUlnNG9BZ1FpQkNBT0tBSUFJZ0JxUVFKcVFRSjFheUlESUFCcU5nSUFRUUVoQ0FKQUlBZEJBbXNpQmlBSFFRRnhJZ3hGSWdCclFRSkpCRUFnQkNFQ0RBRUxJQWNnQUd0QkJHc2lBRUVCZGlJQ1FRRnFJUThDUUFKQUlBQkJGa2tOQUNBS1FRUnFJZ1VnQVNBQ1FRSjBJZ0JxUVFocVNTQUtJQUpCQTNScVFReHFJZ0lnQVVFRWFrdHhEUUFnQlNBQUlBRWdDMEVDZEdvaUFHcEJER3BKSUFCQkNHb2dBa2x4RFFBZ0QwRjhjU0lGUVFGeUlRQWdCVUVCZEVFQmNpRUlJQVQ5RVNFUklBUDlFU0VRUVFBaEFnTkFJQW9nQWtFRGRHb2lCQ0FCSUFKQkFuUWlBMnI5QUFJRUlCRWdBeUFPYXYwQUFnZ2lFZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlUSUJIOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBU0lTSUJJZ0VDQVMvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJVC9RMEVCUVlIR0JrYUd3Z0pDZ3NjSFI0Zi9Rc0NGQ0FFSUJBZ0UvME5EQTBPRHhBUkVoTUFBUUlERkJVV0Z5QVMvUTBBQVFJREJBVUdCeEFSRWhNTURRNFAvUXNDQkNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJIOUd3TWhBaUFRL1JzRElRTWdCU0FQUmcwQ0lBSWhCQXdCQzBFQklRQUxBMEFnQVNBQVFRSjBhaWdDQUNFTklBNGdBRUVCYWlJRlFRSjBhaWdDQUNFQ0lBb2dDRUVDZEdvaUNTQUROZ0lBSUFrZ0F5QU5JQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBOUhJQUloQkNBRklRQU5BQXNMSUFvZ0NFRUNkR29nQXpZQ0FBSkFJQXhGQkVBZ0NpQUdRUUowYWlBQklBZEJBWFJxUVFScktBSUFJQUpCQVdwQkFYVnJJZ0FnQTJwQkFYVWdBbW8yQWdBTUFRc2dBaUFEYWlFQUN5QUtJQWRCQW5RaUEycEJCR3NnQURZQ0FDQUJJQW9nQXhBV0dnc0xvQWNEQTMwRGV3Si9JQU5CQ0U4RVFDQURRUU4ySVFzRFFDQUIvUUFFQUNFSElBQWdBUDBBQkFBaUNDQUMvUUFFQUNJSi9ReThkTE0vdkhTelA3eDBzeis4ZExNLy9lWUIvZVFCL1FzRUFDQUJJQWdnQi8wTXp6R3dQczh4c0Q3UE1iQSt6ekd3UHYzbUFmM2xBU0FKL1F6aDBUWS80ZEUyUCtIUk5qL2gwVFkvL2VZQi9lVUIvUXNFQUNBQ0lBZ2dCLzBNNWREaVArWFE0ai9sME9JLzVkRGlQLzNtQWYza0FmMExCQUFnQWYwQUJCQWhCeUFBSUFEOUFBUVFJZ2dnQXYwQUJCQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQkFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJCQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRUUlBSkJJR29oQWlBQlFTQnFJUUVnQUVFZ2FpRUFJQXBCQVdvaUNpQUxSdzBBQ3dzQ1FDQURRUWR4SWdORkRRQWdBU29DQUNFRUlBQWdBaW9DQUNJR1E3eDBzeitVSUFBcUFnQWlCWkk0QWdBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlBSUFJZ0JTQUVRK1hRNGorVWtqZ0NBQ0FEUVFGR0RRQWdBU29DQkNFRUlBQWdBaW9DQkNJR1E3eDBzeitVSUFBcUFnUWlCWkk0QWdRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlFSUFJZ0JTQUVRK1hRNGorVWtqZ0NCQ0FEUVFKR0RRQWdBU29DQ0NFRUlBQWdBaW9DQ0NJR1E3eDBzeitVSUFBcUFnZ2lCWkk0QWdnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlJSUFJZ0JTQUVRK1hRNGorVWtqZ0NDQ0FEUVFOR0RRQWdBU29DRENFRUlBQWdBaW9DRENJR1E3eDBzeitVSUFBcUFnd2lCWkk0QWd3Z0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlNSUFJZ0JTQUVRK1hRNGorVWtqZ0NEQ0FEUVFSR0RRQWdBU29DRUNFRUlBQWdBaW9DRUNJR1E3eDBzeitVSUFBcUFoQWlCWkk0QWhBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlRSUFJZ0JTQUVRK1hRNGorVWtqZ0NFQ0FEUVFWR0RRQWdBU29DRkNFRUlBQWdBaW9DRkNJR1E3eDBzeitVSUFBcUFoUWlCWkk0QWhRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlVSUFJZ0JTQUVRK1hRNGorVWtqZ0NGQ0FEUVFaR0RRQWdBU29DR0NFRUlBQWdBaW9DR0NJR1E3eDBzeitVSUFBcUFoZ2lCWkk0QWhnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlZSUFJZ0JTQUVRK1hRNGorVWtqZ0NHQXNMNEFFQ0JuOERld0pBSUFORkRRQWdBMEVFVHdSQUlBTkJmSEVoQmdOQUlBQWdCRUVDZENJRmFpSUhJQWY5QUFJQUlBSWdCV29pQi8wQUFnQWlDeUFCSUFWcUlnWDlBQUlBSWd6OXJnRkJBdjJzQWYyeEFTSUtJQXY5cmdIOUN3SUFJQVVnQ3YwTEFnQWdCeUFLSUF6OXJnSDlDd0lBSUFSQkJHb2lCQ0FHUncwQUN5QURJQVpHRFFFTEEwQWdBQ0FHUVFKMElnUnFJZ1VnQlNnQ0FDQUNJQVJxSWdVb0FnQWlCeUFCSUFScUlnZ29BZ0FpQ1dwQkFuVnJJZ1FnQjJvMkFnQWdDQ0FFTmdJQUlBVWdCQ0FKYWpZQ0FDQUdRUUZxSWdZZ0EwY05BQXNMQzlrQkFRTi9Jd0JCZ0FGcklnWWtBQ0FHSVFVQ1FDQUJLQUlNSUFKQkJIUnFJZ0lvQWdBaUJFVUVRQ0FDSVFFTUFRc0RRQ0FGSUFJMkFnQWdCVUVFYWlFRklBUWlBU0lDS0FJQUlnUU5BQXNMUVFBaEJBTkFJQUVvQWdnaUFpQUVTQVJBSUFFZ0JEWUNDQ0FFSVFJTEFrQWdBaUFEVGcwQUEwQWdBaUFCS0FJRVRnMEJBa0FnQUVFQkVDTUVRQ0FCSUFJMkFnUU1BUXNnQWtFQmFpRUNDeUFDSUFOSURRQUxDeUFCSUFJMkFnZ2dCU0FHUndSQUlBVkJCR3NpQlNnQ0FDRUJJQUloQkF3QkN3c2dBU2dDQkNBR1FZQUJhaVFBSUFOSUM4UUpBZzkvQTNzakFFR0FBbXNpQ1NRQUFrQWdBRVVFUUVFQUlRQU1BUXNDUUNBQklBQW9BZ0JHQkVBZ0FDZ0NCQ0FDUmcwQkN5QUFJQUkyQWdRZ0FDQUJOZ0lBSUFrZ0FqWUNBQ0FKSUFFMkFvQUJJQUloQkNBQklRWURRQ0FKSUFnaUQwRUJhaUlJUVFKMElncHFJQVJCQVdwQkFtMGlCellDQUNBSlFZQUJhaUFLYWlBR1FRRnFRUUp0SWdvMkFnQWdCU0FFSUFac0lneHFJUVVnQnlFRUlBb2hCaUFNUVFGTERRQUxJQUFnQlRZQ0NBSkFBa0FDUUNBRlJRUkFJQUFvQWd3aUFVVU5BU0FCRUJRZ0FFRUFOZ0lNREFFTElBVkJCSFFpQlNBQUtBSVFUUTBDSUFBb0Fnd2dCUkFiSWdJTkFTQURRUUZCampKQkFCQVRJQUFvQWd3aUFVVU5BQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUkJBQ0VBREFNTElBQWdBallDRENBQ0lBQW9BaEFpQVdwQkFDQUZJQUZyRUJrYUlBQWdCVFlDRUNBQUtBSUVJUUlnQUNnQ0FDRUJDeUFBS0FJTUlRWWdEd1JBSUFZZ0FTQUNiRUVFZEdvaUJDRUZBMEFDUUNBSklCQkJBblFpQVdvb0FnQWlDMEVBVEEwQUlBdEJBV3NoRFFKQUFrQWdDVUdBQVdvZ0FXb29BZ0FpQjBFQVRBUkFJQXRCQVhFaENrRUFJUWdnQzBFQlJ3MEJJQVVoQVF3Q0N5QUhRUUlnQnlBSFFRSk9HMnRCQVdwQkFYWWlBaUFIUVlHQWdJQjRiRUgvLy8vL0IycEJBWFlpQVNBQklBSkxHeUlDUVFGcUlnRWdBVUVEY1NJQlFRUWdBUnRySWc1QkJIUWhFU0FPUVFWMElSSWdCeUFPUVFGMGF5RU1JQUpCQTBzZ0IzRWhDRUVBSVFFZ0JTRUNBMEFnQ0FSL0lBUWdFV29nQmlBU2FrRUFJUVVEUUNBRy9SRWlGUDBNQUFBQUFDQUFBQUJBQUFBQVlBQUFBUDJ1QVNJVi9Sc0FJQVQ5RWYwTUFBQUFBQkFBQUFBZ0FBQUFNQUFBQVAydUFTSVQvVm9DQUFBZ0ZmMGJBU0FUL1ZvQ0FBRWdGZjBiQWlBVC9Wb0NBQUlnRmYwYkF5QVQvVm9DQUFNZ0ZQME1FQUFBQURBQUFBQlFBQUFBY0FBQUFQMnVBU0lVL1JzQUlCUDlXZ0lBQUNBVS9Sc0JJQlA5V2dJQUFTQVUvUnNDSUJQOVdnSUFBaUFVL1JzRElCUDlXZ0lBQXlBRVFVQnJJUVFnQmtHQUFXb2hCaUFGUVFScUlnVWdEa2NOQUFzaEJpRUVJQXdGSUFjTElRVURRQUpBSUFZZ0JEWUNBQ0FGUVFGR0JFQWdCa0VRYWlFR0lBUkJFR29oQkF3QkN5QUdJQVEyQWhBZ0JFRVFhaUVFSUFaQklHb2hCaUFGUVFKS0lBVkJBbXNoQlEwQkN3c2dCQ0FDSUFkQkJIUnFJQUVnQVNBTlJuSkJBWEVpQXhzaEJTQUVJQUlnQXhzaEJDQUZJUUlnQVVFQmFpSUJJQXRIRFFBTERBSUxJQXRCL3YvLy93ZHhJUU5CQUNFQ0EwQWdDQ0FOUmlFQklBaEJBbW9oQ0NBRUlBVWdBUnNpQkNFRklBUWhBU0FDUVFKcUlnSWdBMGNOQUFzTElBcEZCRUFnQkNFRkRBRUxJQVFnQVNBSFFRUjBhaUFJSUFnZ0RVWnlRUUZ4SWdJYklRVWdCQ0FCSUFJYklRUUxJQkJCQVdvaUVDQVBSdzBBQ3dzZ0JrRUFOZ0lBQ3lBQUtBSUlJZ0pGRFFBZ0FDZ0NEQ0VFSUFKQkJFOEVRQ0FDUVh4eElRRkJBQ0VHQTBBZ0JFRUFOZ0k4SUFSQzV3YzNBalFnQkVFQU5nSXNJQVJDNXdjM0FpUWdCRUVBTmdJY0lBUkM1d2MzQWhRZ0JFRUFOZ0lNSUFSQzV3YzNBZ1FnQkVGQWF5RUVJQVpCQkdvaUJpQUJSdzBBQ3dzZ0FrRURjU0lCUlEwQVFRQWhCZ05BSUFSQkFEWUNEQ0FFUXVjSE53SUVJQVJCRUdvaEJDQUdRUUZxSWdZZ0FVY05BQXNMSUFsQmdBSnFKQUFnQUF1eEFRRURmd0pBSUFCRkRRQWdBQ2dDQ0NJQlJRMEFJQUFvQWd3aEFDQUJRUVJQQkVBZ0FVRjhjU0VEQTBBZ0FFRUFOZ0k4SUFCQzV3YzNBalFnQUVFQU5nSXNJQUJDNXdjM0FpUWdBRUVBTmdJY0lBQkM1d2MzQWhRZ0FFRUFOZ0lNSUFCQzV3YzNBZ1FnQUVGQWF5RUFJQUpCQkdvaUFpQURSdzBBQ3dzZ0FVRURjU0lCUlEwQVFRQWhBZ05BSUFCQkFEWUNEQ0FBUXVjSE53SUVJQUJCRUdvaEFDQUNRUUZxSWdJZ0FVY05BQXNMQzhrSUFoSi9BM3NqQUVHQUFtc2lDU1FBQW45QkFVRVVFQmNpQjBVRVFDQUNRUUZCNkRGQkFCQVRRUUFNQVFzZ0J5QUJOZ0lFSUFjZ0FEWUNBQ0FKSUFFMkFnQWdDU0FBTmdLQUFRTkFJQWtnQmlJUFFRRnFJZ1pCQW5RaUJXb2dBVUVCYWtFQ2JTSUROZ0lBSUFsQmdBRnFJQVZxSUFCQkFXcEJBbTBpQlRZQ0FDQUVJQUFnQVd3aUNHb2hCQ0FESVFFZ0JTRUFJQWhCQVVzTkFBc2dCeUFFTmdJSUlBUkZCRUFnQnhBVVFRQU1BUXNnQnlBRVFSQVFGeUlETmdJTUlBTkZCRUFnQWtFQlFjY2JRUUFRRXlBSEVCUkJBQXdCQ3lBSElBY29BZ2dpREVFRWREWUNFQ0FESVFFZ0R3UkFJQU1nQnlnQ0JDQUhLQUlBYkVFRWRHb2lBQ0VHQTBBQ1FDQUpJQkJCQW5RaUFtb29BZ0FpQzBFQVRBMEFJQXRCQVdzaERRSkFJQWxCZ0FGcUlBSnFLQUlBSWdoQkFFd0VRRUVBSVFRZ0MwRUJSd1JBSUF0Qi92Ly8vd2R4SVFWQkFDRUNBMEFnQkNBTlJpRUtJQVJCQW1vaEJDQUdJQUFnQ2hzaUFDRUdJQUpCQW1vaUFpQUZSdzBBQ3dzZ0MwRUJjUTBCSUFBaEJnd0NDeUFJUVFJZ0NDQUlRUUpPRzJ0QkFXcEJBWFlpQWlBSVFZR0FnSUI0YkVILy8vLy9CMnBCQVhZaUJTQUNJQVZKR3lJQ1FRRnFJZ1VnQlVFRGNTSUZRUVFnQlJ0cklnNUJCWFFoRVNBT1FRUjBJUklnQ0NBT1FRRjBheUVUSUFKQkEwc2dDSEVoRkVFQUlRb2dBQ0VDQTBBQ2Z5QVVSUVJBSUFZaEFDQUlEQUVMSUFFZ0VXb2dCaUFTYWlFQVFRQWhCQU5BSUFIOUVTSVgvUXdBQUFBQUlBQUFBRUFBQUFCZ0FBQUEvYTRCSWhYOUd3QWdCdjBSL1F3QUFBQUFFQUFBQUNBQUFBQXdBQUFBL2E0QkloYjlXZ0lBQUNBVi9Sc0JJQmI5V2dJQUFTQVYvUnNDSUJiOVdnSUFBaUFWL1JzRElCYjlXZ0lBQXlBWC9Rd1FBQUFBTUFBQUFGQUFBQUJ3QUFBQS9hNEJJaFg5R3dBZ0Z2MWFBZ0FBSUJYOUd3RWdGdjFhQWdBQklCWDlHd0lnRnYxYUFnQUNJQlg5R3dNZ0Z2MWFBZ0FESUFGQmdBRnFJUUVnQmtGQWF5RUdJQVJCQkdvaUJDQU9SdzBBQ3lFQklCTUxJUVFEUUFKQUlBRWdBRFlDQUNBRVFRRkdCRUFnQVVFUWFpRUJJQUJCRUdvaEFBd0JDeUFCSUFBMkFoQWdBRUVRYWlFQUlBRkJJR29oQVNBRVFRSktJQVJCQW1zaEJBMEJDd3NnQUNBQ0lBb2dDaUFOUm5KQkFYRWlCUnNoQmlBQUlBSWdDRUVFZEdvZ0JSc2lBQ0VDSUFwQkFXb2lDaUFMUncwQUN3d0JDeUFHSUFBZ0NFRUVkR29nQkNBRUlBMUdja0VCY1NJRkd5QUdJQUFnQlJzaEJpRUFDeUFRUVFGcUloQWdEMGNOQUFzTElBRkJBRFlDQUFKQUlBeEZEUUFnREVFRVR3UkFJQXhCZkhFaEFFRUFJUUVEUUNBRFFRQTJBandnQTBMbkJ6Y0NOQ0FEUVFBMkFpd2dBMExuQnpjQ0pDQURRUUEyQWh3Z0EwTG5CemNDRkNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVVCcklRTWdBVUVFYWlJQklBQkhEUUFMQ3lBTVFRTnhJZ0JGRFFCQkFDRUJBMEFnQTBFQU5nSU1JQU5DNXdjM0FnUWdBMEVRYWlFRElBRkJBV29pQVNBQVJ3MEFDd3NnQndzZ0NVR0FBbW9rQUF0VEFRRi9BbjhnQUMwQURFSC9BVVlFUUNBQVFvRCtnNER3QURjQ0RFRUFJQUFvQWdnaUFTQUFLQUlFVHcwQkdpQUFJQUZCQVdvMkFnZ2dBQ0FCTFFBQVFZRCtBM0kyQWd3TElBQkJBRFlDRUVFQkN3c0ZBQkFNQUF1QkFnQUNRQ0FCUWY4QVRRMEFBa0JCMU5ZQktBSUFLQUlBUlFSQUlBRkJnSDl4UVlDL0EwWU5BZ3dCQ3lBQlFmOFBUUVJBSUFBZ0FVRS9jVUdBQVhJNkFBRWdBQ0FCUVFaMlFjQUJjam9BQUVFQ0R3c2dBVUdBUUhGQmdNQURSeUFCUVlDd0EwOXhSUVJBSUFBZ0FVRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFlQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FCUVFNUEN5QUJRWUNBQkd0Qi8vOC9UUVJBSUFBZ0FVRS9jVUdBQVhJNkFBTWdBQ0FCUVJKMlFmQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0UvY1VHQUFYSTZBQUZCQkE4TEMwSFV6UUZCR1RZQ0FFRi9Ed3NnQUNBQk9nQUFRUUVMZmdJQmZ3RitJQUM5SWdOQ05JaW5RZjhQY1NJQ1FmOFBSd1I4SUFKRkJFQWdBU0FBUkFBQUFBQUFBQUFBWVFSL1FRQUZJQUJFQUFBQUFBQUE4RU9pSUFFUWNDRUFJQUVvQWdCQlFHb0xOZ0lBSUFBUEN5QUJJQUpCL2dkck5nSUFJQU5DLy8vLy8vLy8vNGVBZjROQ2dJQ0FnSUNBZ1BBL2hMOEZJQUFMQzd3Q0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFSmF3NFNBQWdKQ2dnSkFRSURCQW9KQ2dvSUNRVUdCd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCS0FJQU5nSUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkF3QUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUMyOEJCWDhnQUNnQ0FDSURMQUFBUVRCcklnRkJDVXNFUUVFQUR3c0RRRUYvSVFRZ0FrSE1tYlBtQUUwRVFFRi9JQUVnQWtFS2JDSUZhaUFCSUFWQi8vLy8vd2R6U3hzaEJBc2dBQ0FEUVFGcUlnVTJBZ0FnQXl3QUFTQUVJUUlnQlNFRFFUQnJJZ0ZCQ2trTkFBc2dBZ3RKQVFGL0FrQkJBVUVzRUJjaUFRUkFJQUZCQURZQ0VBSkFJQUJCQUV3RVFDQUJRUUZCQ0JBWElnQTJBaVFnQUVVTkFRd0RDeUFCUVFBMkFnd0xJQUVRRkF0QkFDRUJDeUFCQzY0VUFoSi9BbjRqQUVGQWFpSUlKQUFnQ0NBQk5nSThJQWhCSjJvaEZ5QUlRU2hxSVJJQ1FBSkFBa0FDUUFOQVFRQWhCd05BSUFFaERTQUhJQTVCLy8vLy93ZHpTZzBDSUFjZ0Rtb2hEZ0pBQWtBQ1FBSkFJQUVpQnkwQUFDSU1CRUFEUUFKQUFrQWdERUgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hEQU5BSUF3dEFBRkJKVWNFUUNBTUlRRU1BZ3NnQjBFQmFpRUhJQXd0QUFJZ0RFRUNhaUlCSVF4QkpVWU5BQXNMSUFjZ0RXc2lCeUFPUWYvLy8vOEhjeUlZU2cwSklBQUVRQ0FBSUEwZ0J4QWVDeUFIRFFjZ0NDQUJOZ0k4SUFGQkFXb2hCMEYvSVJFQ1FDQUJMQUFCUVRCcklndEJDVXNOQUNBQkxRQUNRU1JIRFFBZ0FVRURhaUVIUVFFaEV5QUxJUkVMSUFnZ0J6WUNQRUVBSVFrQ1FDQUhMQUFBSWd4QklHc2lBVUVmU3dSQUlBY2hDd3dCQ3lBSElRdEJBU0FCZENJQlFZblJCSEZGRFFBRFFDQUlJQWRCQVdvaUN6WUNQQ0FCSUFseUlRa2dCeXdBQVNJTVFTQnJJZ0ZCSUU4TkFTQUxJUWRCQVNBQmRDSUJRWW5SQkhFTkFBc0xBa0FnREVFcVJnUkFBbjhDUUNBTExBQUJRVEJySWdGQkNVc05BQ0FMTFFBQ1FTUkhEUUFDZnlBQVJRUkFJQVFnQVVFQ2RHcEJDallDQUVFQURBRUxJQU1nQVVFRGRHb29BZ0FMSVJBZ0MwRURhaUVCUVFFTUFRc2dFdzBHSUF0QkFXb2hBU0FBUlFSQUlBZ2dBVFlDUEVFQUlSTkJBQ0VRREFNTElBSWdBaWdDQUNJSFFRUnFOZ0lBSUFjb0FnQWhFRUVBQ3lFVElBZ2dBVFlDUENBUVFRQk9EUUZCQUNBUWF5RVFJQWxCZ01BQWNpRUpEQUVMSUFoQlBHb1FjaUlRUVFCSURRb2dDQ2dDUENFQkMwRUFJUWRCZnlFS0FuOUJBQ0FCTFFBQVFTNUhEUUFhSUFFdEFBRkJLa1lFUUFKL0FrQWdBU3dBQWtFd2F5SUxRUWxMRFFBZ0FTMEFBMEVrUncwQUlBRkJCR29oQVFKL0lBQkZCRUFnQkNBTFFRSjBha0VLTmdJQVFRQU1BUXNnQXlBTFFRTjBhaWdDQUFzTUFRc2dFdzBHSUFGQkFtb2hBVUVBSUFCRkRRQWFJQUlnQWlnQ0FDSUxRUVJxTmdJQUlBc29BZ0FMSVFvZ0NDQUJOZ0k4SUFwQkFFNE1BUXNnQ0NBQlFRRnFOZ0k4SUFoQlBHb1FjaUVLSUFnb0Fqd2hBVUVCQ3lFVUEwQWdCeUVWUVJ3aEN5QUJJZzhzQUFBaUIwSDdBR3RCUmtrTkN5QUJRUUZxSVFFZ0J5QVZRVHBzYWtIL3hBRnFMUUFBSWdkQkFXdEIvd0Z4UVFoSkRRQUxJQWdnQVRZQ1BBSkFJQWRCRzBjRVFDQUhSUTBNSUJGQkFFNEVRQ0FBUlFSQUlBUWdFVUVDZEdvZ0J6WUNBQXdNQ3lBSUlBTWdFVUVEZEdvcEF3QTNBekFNQWdzZ0FFVU5DQ0FJUVRCcUlBY2dBaUFHRUhFTUFRc2dFVUVBVGcwTFFRQWhCeUFBUlEwSUN5QUFMUUFBUVNCeERRc2dDVUgvLzN0eElnd2dDU0FKUVlEQUFIRWJJUWxCQUNFUlFiQUlJUllnRWlFTEFrQUNRQUovQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBUExRQUFJZ2ZBSWc5QlUzRWdEeUFIUVE5eFFRTkdHeUFQSUJVYklnZEIyQUJyRGlFRUZoWVdGaFlXRmhZUUZna0dFQkFRRmdZV0ZoWVdBZ1VERmhZS0ZnRVdGZ1FBQ3dKQUlBZEJ3UUJyRGdjUUZnc1dFQkFRQUFzZ0IwSFRBRVlOQ3d3VkN5QUlLUU13SVJwQnNBZ01CUXRCQUNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FnRlE0SUFBRUNBd1FjQlFZY0N5QUlLQUl3SUE0MkFnQU1Hd3NnQ0NnQ01DQU9OZ0lBREJvTElBZ29BakFnRHF3M0F3QU1HUXNnQ0NnQ01DQU9Pd0VBREJnTElBZ29BakFnRGpvQUFBd1hDeUFJS0FJd0lBNDJBZ0FNRmdzZ0NDZ0NNQ0FPckRjREFBd1ZDMEVJSUFvZ0NrRUlUUnNoQ2lBSlFRaHlJUWxCK0FBaEJ3c2dFaUVCSUFncEF6QWlHaUlaUWdCU0JFQWdCMEVnY1NFTUEwQWdBVUVCYXlJQklCbW5RUTl4UVpESkFXb3RBQUFnREhJNkFBQWdHVUlQVmlBWlFnU0lJUmtOQUFzTElBRWhEU0FhVUEwRElBbEJDSEZGRFFNZ0IwRUVka0d3Q0dvaEZrRUNJUkVNQXdzZ0VpRUJJQWdwQXpBaUdpSVpRZ0JTQkVBRFFDQUJRUUZySWdFZ0dhZEJCM0ZCTUhJNkFBQWdHVUlIVmlBWlFnT0lJUmtOQUFzTElBRWhEU0FKUVFoeFJRMENJQW9nRWlBQmF5SUJRUUZxSUFFZ0NrZ2JJUW9NQWdzZ0NDa0RNQ0lhUWdCVEJFQWdDRUlBSUJwOUlobzNBekJCQVNFUlFiQUlEQUVMSUFsQmdCQnhCRUJCQVNFUlFiRUlEQUVMUWJJSVFiQUlJQWxCQVhFaUVSc0xJUllnR2lBU0VDOGhEUXNnRkNBS1FRQkljUTBSSUFsQi8vOTdjU0FKSUJRYklRa0NRQ0FhUWdCU0RRQWdDZzBBSUJJaERVRUFJUW9NRGdzZ0NpQWFVQ0FTSUExcmFpSUJJQUVnQ2tnYklRb01EUXNnQ0MwQU1DRUhEQXNMQW45Qi8vLy8vd2NnQ2lBS1FmLy8vLzhIVHhzaUJ5SUpRUUJISVFzQ1FBSkFBa0FnQ0NnQ01DSUJRZkVNSUFFYklnMGlEMEVEY1VVTkFDQUpSUTBBQTBBZ0R5MEFBRVVOQWlBSlFRRnJJZ2xCQUVjaEN5QVBRUUZxSWc5QkEzRkZEUUVnQ1EwQUN3c2dDMFVOQVFKQUlBOHRBQUJGRFFBZ0NVRUVTUTBBQTBCQmdJS0VDQ0FQS0FJQUlnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BaUFQUVFScUlROGdDVUVFYXlJSlFRTkxEUUFMQ3lBSlJRMEJDd05BSUE4Z0R5MEFBRVVOQWhvZ0QwRUJhaUVQSUFsQkFXc2lDUTBBQ3d0QkFBc2lBU0FOYXlBSElBRWJJZ0VnRFdvaEN5QUtRUUJPQkVBZ0RDRUpJQUVoQ2d3TUN5QU1JUWtnQVNFS0lBc3RBQUFORHd3TEN5QUlLUU13SWhsQ0FGSU5BVUVBSVFjTUNRc2dDZ1JBSUFnb0FqQU1BZ3RCQUNFSElBQkJJQ0FRUVFBZ0NSQWdEQUlMSUFoQkFEWUNEQ0FJSUJrK0FnZ2dDQ0FJUVFocUlnYzJBakJCZnlFS0lBY0xJUXhCQUNFSEEwQUNRQ0FNS0FJQUlnMUZEUUFnQ0VFRWFpQU5FRzhpRFVFQVNBMFBJQTBnQ2lBSGEwc05BQ0FNUVFScUlRd2dCeUFOYWlJSElBcEpEUUVMQzBFOUlRc2dCMEVBU0EwTUlBQkJJQ0FRSUFjZ0NSQWdJQWRGQkVCQkFDRUhEQUVMUVFBaEN5QUlLQUl3SVF3RFFDQU1LQUlBSWcxRkRRRWdDRUVFYWlJS0lBMFFieUlOSUF0cUlnc2dCMHNOQVNBQUlBb2dEUkFlSUF4QkJHb2hEQ0FISUF0TERRQUxDeUFBUVNBZ0VDQUhJQWxCZ01BQWN4QWdJQkFnQnlBSElCQklHeUVIREFnTElCUWdDa0VBU0hFTkNVRTlJUXNnQUNBSUt3TXdJQkFnQ2lBSklBY2dCUkVWQUNJSFFRQk9EUWNNQ2dzZ0J5MEFBU0VNSUFkQkFXb2hCd3dBQ3dBTElBQU5DU0FUUlEwRFFRRWhCd05BSUFRZ0IwRUNkR29vQWdBaUFBUkFJQU1nQjBFRGRHb2dBQ0FDSUFZUWNVRUJJUTRnQjBFQmFpSUhRUXBIRFFFTUN3c0xJQWRCQ2s4RVFFRUJJUTRNQ2dzRFFDQUVJQWRCQW5ScUtBSUFEUUZCQVNFT0lBZEJBV29pQjBFS1J3MEFDd3dKQzBFY0lRc01CZ3NnQ0NBSE9nQW5RUUVoQ2lBWElRMGdEQ0VKQ3lBS0lBc2dEV3NpRENBS0lBeEtHeUlCSUJGQi8vLy8vd2R6U2cwRFFUMGhDeUFRSUFFZ0VXb2lDaUFLSUJCSUd5SUhJQmhLRFFRZ0FFRWdJQWNnQ2lBSkVDQWdBQ0FXSUJFUUhpQUFRVEFnQnlBS0lBbEJnSUFFY3hBZ0lBQkJNQ0FCSUF4QkFCQWdJQUFnRFNBTUVCNGdBRUVnSUFjZ0NpQUpRWURBQUhNUUlDQUlLQUk4SVFFTUFRc0xDMEVBSVE0TUF3dEJQU0VMQzBIVXpRRWdDellDQUF0QmZ5RU9DeUFJUVVCckpBQWdEZ3VrQWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFTQUZRYUFCYWlJQ1FRQkJLQkFaR2lBRklBVW9Bc3dCTmdMSUFRSkFRUUFnQVNBRlFjZ0JhaUFGUWRBQWFpQUNJQU1nQkJCMFFRQklEUUFnQUNnQ1RFRUFTQ0FBSUFBb0FnQWlCMEZmY1RZQ0FBSi9Ba0FDUUNBQUtBSXdSUVJBSUFCQjBBQTJBakFnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlzSVFZZ0FDQUZOZ0lzREFFTElBQW9BaEFOQVF0QmZ5QUFFRWNOQVJvTElBQWdBU0FGUWNnQmFpQUZRZEFBYWlBRlFhQUJhaUFESUFRUWRBc2hBU0FHQkg4Z0FFRUFRUUFnQUNnQ0pCRUFBQm9nQUVFQU5nSXdJQUFnQmpZQ0xDQUFRUUEyQWh3Z0FDZ0NGQm9nQUVJQU53TVFRUUFGSUFFTEdpQUFJQUFvQWdBZ0IwRWdjWEkyQWdBTkFBc2dCVUhRQVdva0FBdVZBUUVHZjBFSUlRSWpBRUdBQW1zaUJTUUFJQUZCQWs0RVFDQUFJQUZCQW5ScUlnY2dCVFlDQUFOQUlBY29BZ0FnQUNnQ0FFR0FBaUFDSUFKQmdBSlBHeUlFRUJZYVFRQWhBd05BSUFBZ0EwRUNkR29pQmlnQ0FDQUFJQU5CQVdvaUEwRUNkR29vQWdBZ0JCQVdHaUFHSUFZb0FnQWdCR28yQWdBZ0FTQURSdzBBQ3lBQ0lBUnJJZ0lOQUFzTElBVkJnQUpxSkFBTEtRQWdBRUVCYXlJQWFFRUFJQUFiSWdBRWZ5QUFCU0FCYUVFQUlBRWJJZ0JCSUhKQkFDQUFHd3NMblFNQkNYOENRQ0FBSWdGQkEzRUVRQU5BSUFFdEFBQWlBa1VOQWlBQ1FUMUdEUUlnQVVFQmFpSUJRUU54RFFBTEN3SkFBa0JCZ0lLRUNDQUJLQUlBSWdOcklBTnlRWUNCZ29SNGNVR0FnWUtFZUVjTkFBTkFRWUNDaEFnZ0EwRzkrdlRwQTNNaUFtc2dBbkpCZ0lHQ2hIaHhRWUNCZ29SNFJ3MEJJQUVvQWdRaEF5QUJRUVJxSWdJaEFTQURRWUNDaEFnZ0EydHlRWUNCZ29SNGNVR0FnWUtFZUVZTkFBc01BUXNnQVNFQ0N3TkFJQUlpQVMwQUFDSURSUTBCSUFGQkFXb2hBaUFEUVQxSERRQUxDeUFBSUFGR0JFQkJBQThMQWtBZ0FDQUJJQUJySWdacUxRQUFEUUJCOE5VQktBSUFJZ1ZGRFFBZ0JTZ0NBQ0lCUlEwQUEwQUNRQUovSUFBaEF5QUJJUUpCQUNBR0lnZEZEUUFhSUFNdEFBQWlCQVIvQWtBRFFDQUVJQUl0QUFBaUNFY05BU0FJUlEwQklBZEJBV3NpQjBVTkFTQUNRUUZxSVFJZ0F5MEFBU0VFSUFOQkFXb2hBeUFFRFFBTFFRQWhCQXNnQkFWQkFBc2dBaTBBQUdzTFJRUkFJQUVnQm1vaUFTMEFBRUU5UmcwQkN5QUZLQUlFSVFFZ0JVRUVhaUVGSUFFTkFRd0NDd3NnQVVFQmFpRUpDeUFKQ3ljQkFYOUJIQ0VESUFGQkEzRUVmMEVjQlNBQUlBRWdBaEFwSWdBMkFnQkJBRUV3SUFBYkN3djlBd0VGZndKL1FhakxBU2dDQUNJQ0lBQkJCMnBCZUhFaUFVRUhha0Y0Y1NJRGFpRUFBa0FnQTBFQUlBQWdBazBiUlFSQUlBQS9BRUVRZEUwTkFTQUFFQTROQVF0QjFNMEJRVEEyQWdCQmZ3d0JDMEdveXdFZ0FEWUNBQ0FDQ3lJQ1FYOUhCRUFnQVNBQ2FpSUFRUVJyUVJBMkFnQWdBRUVRYXlJRFFSQTJBZ0FDUUFKL1FlRFZBU2dDQUNJQkJIOGdBU2dDQ0FWQkFBc2dBa1lFUUNBQ0lBSkJCR3NvQWdCQmZuRnJJZ1JCQkdzb0FnQWhCU0FCSUFBMkFnZ2dCQ0FGUVg1eGF5SUFJQUFvQWdCcVFRUnJMUUFBUVFGeEJFQWdBQ2dDQkNJQklBQW9BZ2dpQkRZQ0NDQUVJQUUyQWdRZ0FDQURJQUJySWdFMkFnQU1Bd3NnQWtFUWF3d0JDeUFDUVJBMkFnQWdBaUFBTmdJSUlBSWdBVFlDQkNBQ1FSQTJBZ3hCNE5VQklBSTJBZ0FnQWtFUWFnc2lBQ0FESUFCcklnRTJBZ0FMSUFBZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBQUFuOGdBQ2dDQUVFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBVUVkSUFGbklnTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlCSUFGQlAwOGJDeUlCUVFSMElnTkI0TTBCYWpZQ0JDQUFJQU5CNk0wQmFpSURLQUlBTmdJSUlBTWdBRFlDQUNBQUtBSUlJQUEyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxJQUpCZjBjTHZRRUJBbjhDUUNBQUtBSk1JZ0ZCQUU0RVFDQUJSUTBCUVl6V0FTZ0NBQ0FCUWYvLy8vOERjVWNOQVFzQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQklBQW9BaEJHRFFBZ0FDQUJRUUZxTmdJVUlBRkJDam9BQUE4TElBQVFmQThMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQWtBQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQ0lBQW9BaEJHRFFBZ0FDQUNRUUZxTmdJVUlBSkJDam9BQUF3QkN5QUFFSHdMSUFFb0FnQWFJQUZCQURZQ0FBdDhBUUovSXdCQkVHc2lBU1FBSUFGQkNqb0FEd0pBQWtBZ0FDZ0NFQ0lDQkg4Z0FnVWdBQkJIRFFJZ0FDZ0NFQXNnQUNnQ0ZDSUNSZzBBSUFBb0FsQkJDa1lOQUNBQUlBSkJBV28yQWhRZ0FrRUtPZ0FBREFFTElBQWdBVUVQYWtFQklBQW9BaVFSQUFCQkFVY05BQ0FCTFFBUEdnc2dBVUVRYWlRQUM3QUNBUUovSUFBRVFDQUFLQUlBRUVBZ0FFRUFOZ0lBSUFBb0FrZ2lBUVJBSUFFUUZDQUFRUUEyQWtnTElBQW9Ba1FpQVFSQUlBRVFGQ0FBUVFBMkFrUUxJQUFvQW13aUFRUkFJQUVRRkNBQVFRQTJBbXdMSUFBb0FuUWlBUVJBSUFFb0FnQWlBZ1JBSUFJUUZDQUFLQUowSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDZEFzZ0FDZ0NlQ0lCQkVBZ0FTZ0NEQ0lDQkVBZ0FoQVVJQUFvQW5naUFVRUFOZ0lNQ3lBQktBSUVJZ0lFUUNBQ0VCUWdBQ2dDZUNJQlFRQTJBZ1FMSUFFb0FnZ2lBZ1JBSUFJUUZDQUFLQUo0SWdGQkFEWUNDQXNnQVNnQ0FDSUNCRUFnQWhBVUlBQW9BbmdpQVVFQU5nSUFDeUFCRUJRZ0FFRUFOZ0o0Q3lBQUtBSUVJZ0VFUUNBQkVEZ2dBRUVBTmdJRUN5QUFLQUlJSWdFRVFDQUJFRGdnQUVFQU5nSUlDeUFBRUJRTEM0c2FBaDUvQlhzakFFSHdBV3NpQ0NRQVFRRWhEZ0pBSUFBb0FnQW9BandOQUNBQUtBS0FBUTBBQWtBQ1FDQUFLQUowSWdsRkJFQWdBQ2dDZUNFRkRBRUxJQUVvQWhBaEJpQUpMd0VFSVFRQ1FDQUFLQUo0SWdWRkRRQWdCU2dDREVVTkFDQUZMUUFTSVFZTEFrQWdCQVJBSUFrb0FnQWhDUU5BSUFrZ0EwRUdiR29pQ2k4QkFDSUhJQVpQQkVBZ0NDQUdOZ0swQVNBSUlBYzJBckFCSUFKQkFVSHU2Z0FnQ0VHd0FXb1FFMEVBSVE0TUJnc0NRQ0FLTHdFRUlncEZEUUFnQ2tILy93TkdEUUFnQ2tFQmF5SUtJQVpKRFFBZ0NDQUdOZ0trQVNBSUlBbzJBcUFCSUFKQkFVSHU2Z0FnQ0VHZ0FXb1FFMEVBSVE0TUJnc2dBMEVCYWlJRElBUkhEUUFMREFFTElBWU5BZ3dCQ3dOQUlBWkJBV3NoQmtFQUlRTURRQ0FKSUFOQkJteHFMd0VBSUFaSEJFQWdBMEVCYWlJRElBUkhEUUVNQkFzTElBWU5BQXNMQWtBZ0JVVU5BQ0FGS0FJTUlncEZEUUFDUUFKQUlBVXRBQklpQlFSQVFRQWhBMEVCSVFjRFFDQUJLQUlRSWdRZ0NpQURRUUowYWk4QkFDSUdUUVJBSUFnZ0JEWUNsQUVnQ0NBR05nS1FBU0FDUVFGQjd1b0FJQWhCa0FGcUVCTkJBQ0VIQ3lBRFFRRnFJZ01nQlVjTkFBc2dCVUVFRUJjaUJFVU5BVUVBSVFNRFFBSkFJQW9nQTBFQ2RHb2lCaTBBQWlJSlFRSlBCRUFnQ0NBSk5nSkVJQWdnQXpZQ1FDQUNRUUZCbWQ0QUlBaEJRR3NRRTBFQUlRY01BUXNnQlNBR0xRQURJZ1pOQkVBZ0NDQUdOZ0tBQVNBQ1FRRkI0ZDBBSUFoQmdBRnFFQk5CQUNFSERBRUxJQVFnQmtFQ2RHb2hDd0pBSUFsQkFVY2lEQTBBSUFzb0FnQkZEUUFnQ0NBR05nSlFJQUpCQVVIaTJRQWdDRUhRQUdvUUUwRUFJUWNNQVFzQ1FDQUpEUUFnQmtVTkFDQUlJQVkyQW1RZ0NDQUROZ0pnSUFKQkFVSFkzQUFnQ0VIZ0FHb1FFMEVBSVFjTUFRc0NRQ0FNRFFBZ0F5QUdSZzBBSUFnZ0JqWUNlQ0FJSUFNMkFuUWdDQ0FETmdKd0lBSkJBVUg4M0FBZ0NFSHdBR29RRTBFQUlRY01BUXNnQzBFQk5nSUFDeUFEUVFGcUlnTWdCVWNOQUFzZ0IwVWhCMEVBSVFNRFFBSkFBa0FnQkNBRFFRSjBJZ1pxS0FJQVJRUkFJQVlnQ21vdEFBSU5BUXNnQTBFQmFpSURJQVZIRFFJZ0IwRUJjUTBCSUFFb0FoQkJBVWNOQlVFQUlRTURRQ0FFSUFOQkFuUnFLQUlBQkVBZ0JTQURRUUZxSWdOSERRRU1Cd3NMUVFBaENTQUNRUUpCZ01nQVFRQVFFMEVBSVFNZ0JVRUVUd1JBSUFWQi9BRnhJUWRCQUNFR0EwQWdDaUFEUVFKMGFpSUxJQU02QUFNZ0MwRUJPZ0FDSUFvZ0EwRUJjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRUNjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRURjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFOQkJHb2hBeUFHUVFScUlnWWdCMGNOQUFzTElBVkJBM0VpQlVVTkJRTkFJQW9nQTBFQ2RHb2lCaUFET2dBRElBWkJBVG9BQWlBRFFRRnFJUU1nQ1VFQmFpSUpJQVZIRFFBTERBVUxJQWdnQXpZQ01FRUJJUWNnQWtFQlFialdBQ0FJUVRCcUVCTWdBMEVCYWlJRElBVkhEUUVMQ3lBRUVCUkJBQ0VPREFVTElBVkJCQkFYSWdRTkFRdEJBQ0VPSUFKQkFVSFkzd0JCQUJBVERBTUxJQVFRRkFzQ1FDQUFLQUo0SWdWRkRRQWdCU2dDRENJUFJRUkFJQVVvQWdRUUZDQUFLQUo0S0FJSUVCUWdBQ2dDZUNnQ0FCQVVJQUFvQW5naUJTZ0NEQ0lFQkg4Z0JCQVVJQUFvQW5nRklBVUxFQlFnQUVFQU5nSjREQUVMSUFFb0FoZ2hEUUpBQWtBZ0JTMEFFaUlMQkVBZ0JTZ0NBQ0VVSUFVb0FnUWhCaUFGS0FJSUlRcEJBQ0VEQWtBRFFDQU5JQThnQTBFQ2RHb3ZBUUJCTkd4cUtBSXNCRUFnQ3lBRFFRRnFJZ05IRFFFTUFnc0xJQWdnQXpZQ0lDQUNRUUZCa093QUlBaEJJR29RRTBFQUlRNE1CZ3NnQzBFMGJCQVlJZ2xGRFFGQkFDRURBMEFnRHlBRFFRSjBhaUlGTHdFQUlRY2dDU0FGTFFBQ0JIOGdCUzBBQXdVZ0F3dEJOR3hxSWdRZ0RTQUhRVFJzYWlJRi9RQUNBUDBMQWdBZ0JDQUZLQUl3TmdJd0lBUWdCZjBBQWlEOUN3SWdJQVFnQmYwQUFoRDlDd0lRSUFrZ0EwRTBiR29pQkNBRktBSUlJQVVvQWd4c1FRSjBFQndpQlRZQ0xDQUZSUVJBSUFNRVFDQURRZi8vQTNFaEFBTkFJQUJCTkd3Z0NXcEJDR3NvQWdBUUZDQUFRUUZySWdBTkFBc0xJQWtRRkVFQUlRNGdBa0VCUWR6ckFFRUFFQk1NQndzZ0JDQURJQXBxTFFBQU5nSVlJQVFnQXlBR2FpMEFBRFlDSUNBRFFRRnFJZ01nQzBjTkFBc2dBQ2dDZUM4QkVDSVFRUUZySVJJRFFDQUpJQk5CTkd4cUlnVW9BZ3dnQlNnQ0NHd2hCQ0FOSUE4Z0UwRUNkR29pQmk4QkFFRTBiR29vQWl3aENnSkFJQVl0QUFKRkJFQWdCRVVOQVNBRktBSXNJUU5CQUNFSFFRQWhCUUpBSUFSQkJFa05BQ0FESUFwclFSQkpEUUFnQkVGOGNTRUZRUUFoQmdOQUlBTWdCa0VDZENJTWFpQUtJQXhxL1FBQ0FQMExBZ0FnQmtFRWFpSUdJQVZIRFFBTElBUWdCVVlOQWdzZ0JTRUdJQVJCQTNFaURBUkFBMEFnQXlBR1FRSjBJaEZxSUFvZ0VXb29BZ0EyQWdBZ0JrRUJhaUVHSUFkQkFXb2lCeUFNUncwQUN3c2dCU0FFYTBGOFN3MEJBMEFnQXlBR1FRSjBJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0F5QUZRUVJxSWdkcUlBY2dDbW9vQWdBMkFnQWdBeUFGUVFocUlnZHFJQWNnQ21vb0FnQTJBZ0FnQXlBRlFReHFJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0JrRUVhaUlHSUFSSERRQUxEQUVMSUFSRkRRQWdGQ0FHTFFBRElnWkJBblJxSVFVZ0NTQUdRVFJzYWlnQ0xDRURRUUFoQmlBRVFRRkhCRUFnQkVGK2NTRVZRUUFoREFOQUlBTWdCa0VDZENJSGFpQUZJQWNnQ21vb0FnQWlFU0FTSUJBZ0VVb2JRUUFnRVVFQVRoc2dDMnhCQW5ScUtBSUFOZ0lBSUFNZ0IwRUVjaUlIYWlBRklBY2dDbW9vQWdBaUJ5QVNJQWNnRUVnYlFRQWdCMEVBVGhzZ0MyeEJBblJxS0FJQU5nSUFJQVpCQW1vaEJpQU1RUUpxSWd3Z0ZVY05BQXNMSUFSQkFYRkZEUUFnQXlBR1FRSjBJZ1JxSUFVZ0JDQUthaWdDQUNJRUlCSWdCQ0FRU0J0QkFDQUVRUUJPR3lBTGJFRUNkR29vQWdBMkFnQUxJQk5CQVdvaUV5QUxSdzBBQ3d3Q0N5QUxRVFJzRUJnaUNRMEJDMEVBSVE0Z0FrRUJRZHpyQUVFQUVCTU1Bd3NnQVNnQ0VDSUZCRUJCQUNFREEwQWdEU0FEUVRSc2FpZ0NMQ0lFQkVBZ0JCQVVDeUFEUVFGcUlnTWdCVWNOQUFzTElBMFFGQ0FCSUFzMkFoQWdBU0FKTmdJWUN5QUFLQUowSWdORkRRRWdBeWdDQUNFSElBTXZBUVFpQ3dSQUlBZEJLbW9oRWlBSFFTUnFJUk1nQjBFZWFpRVJJQWRCR0dvaEZDQUhRUkpxSVJVZ0IwRU1haUVXSUFkQkJtb2hGeUFMUVFKcklSaEJBQ0VEUVFFaEJRTkFBa0FnQVNnQ0VDSUVJQWNnQTBFR2JHb2lEUzhCQUNJR1RRUkFJQWdnQkRZQ0ZDQUlJQVkyQWhBZ0FrRUNRWUU1SUFoQkVHb1FFd3dCQ3lBTkx3RUVJZ2xCQVdwQi8vOERjVUVCVFFSQUlBRW9BaGdnQmtFMGJHb2dEUzhCQWpzQk1Bd0JDeUFKUVFGcklncEIvLzhEY1NJUElBUlBCRUFnQ0NBRU5nSUVJQWdnRHpZQ0FDQUNRUUpCMkRnZ0NCQVREQUVMQWtBZ0JpQVBSZzBBSUEwdkFRSU5BQ0FJSUFFb0FoZ2lDU0FHUVRSc2FpSUVLQUl3TmdMb0FTQUlJQVQ5QUFJZy9Rc0QyQUVnQ0NBRS9RQUNFUDBMQThnQklBZ2dCUDBBQWdEOUN3TzRBU0FFSUFrZ0QwRTBiQ0lNYWlJSktRSUlOd0lJSUFRZ0NTa0NFRGNDRUNBRUlBa3BBaGczQWhnZ0JDQUpLUUlnTndJZ0lBUWdDU2tDS0RjQ0tDQUVJQWtvQWpBMkFqQWdCQ0FKS1FJQU53SUFJQUVvQWhnZ0RHb2lCQ0FJL1FBRHVBSDlDd0lBSUFRZ0NQMEFBOWdCL1FzQ0lDQUVJQWo5QUFQSUFmMExBaEFnQkNBSUtBTG9BVFlDTUNBRFFRRnFJQXRQRFFBZ0JTRUpJQmdnQTJ0Qi8vOERjU0lFUVFkUEJFQWdCU0FFUVFGcUlobEIrUDhIY1NJUWFpRUpJQXI5RUNFa0lBYjlFQ0VqUVFBaERBTkFJQ01nSkNBSElBVWdER3BCQm13aUJHb2lHaThCQVAwUUlBUWdGMm9pR3k4QkFQMGFBU0FFSUJacUlod3ZBUUQ5R2dJZ0JDQVZhaUlkTHdFQS9Sb0RJQVFnRkdvaUhpOEJBUDBhQkNBRUlCRnFJaDh2QVFEOUdnVWdCQ0FUYWlJZ0x3RUEvUm9HSUFRZ0Vtb2lCQzhCQVAwYUJ5SWhJQ1A5TGlBaElDVDlMU0lsL1U1QkQvMkxBVUVQL1l3Qi9WSWhJaUFoSUNQOUxTQWwvVkFpSWYwWkFFRUJjUVJBSUJvZ0l2MVpBUUFBQ3lBaC9Sa0JRUUZ4QkVBZ0d5QWkvVmtCQUFFTElDSDlHUUpCQVhFRVFDQWNJQ0w5V1FFQUFnc2dJZjBaQTBFQmNRUkFJQjBnSXYxWkFRQURDeUFoL1JrRVFRRnhCRUFnSGlBaS9Wa0JBQVFMSUNIOUdRVkJBWEVFUUNBZklDTDlXUUVBQlFzZ0lmMFpCa0VCY1FSQUlDQWdJdjFaQVFBR0N5QWgvUmtIUVFGeEJFQWdCQ0FpL1ZrQkFBY0xJQXhCQ0dvaURDQVFSdzBBQ3lBUUlCbEdEUUVMQTBBZ0NpRUVBa0FnQmlBSElBbEJCbXhxSWd3dkFRQWlFRWNFUUNBR0lRUWdEeUFRUncwQkN5QU1JQVE3QVFBTElBc2dDVUVCYWlJSlFmLy9BM0ZIRFFBTEN5QUJLQUlZSUFaQk5HeHFJQTB2QVFJN0FUQUxJQVZCQVdvaEJTQURRUUZxSWdNZ0MwY05BQXNnQUNnQ2RDSURLQUlBSVFjTElBY0VmeUFIRUJRZ0FDZ0NkQVVnQXdzUUZDQUFRUUEyQW5RTUFRdEJBQ0VPSUFKQkFVSDJ5UUJCQUJBVEN5QUlRZkFCYWlRQUlBNEw1UUVCQlg4akFFRWdheUlFSkFBQ2Z3SkFJQUFvQWp3aUF3UkFRUUVoQlFOQUlBQW9BbVFvQWhnZ0FDZ0NRQ0FDUVFKMGFpZ0NBQ0lHUVRSc2FpZ0NMRVVFUUNBRUlBWTJBaEFnQVVFQ1FZODdJQVJCRUdvUUUwRUFJUVVnQUNnQ1BDRURDeUFDUVFGcUlnSWdBMGtOQUFzTUFRdEJBU0VGUVFFZ0FDZ0NaQ0lES0FJUVJRMEJHZ05BSUFNb0FoZ2dBa0UwYkdvb0FpeEZCRUFnQkNBQ05nSUFJQUZCQWtHUE95QUVFQk5CQUNFRklBQW9BbVFoQXdzZ0FrRUJhaUlDSUFNb0FoQkpEUUFMQzBFQklBVU5BQm9nQVVFQlFhd1dRUUFRRTBFQUN5QUVRU0JxSkFBTCtnWUNFMzhDZmlBQUtBSVlJaEFvQWhCRkJFQkJBUThMSUJBb0FoZ2hEU0FBS0FJVUtBSUFLQUlVSVFzRFFDQUJJQTBvQWlRaUFqWUNKQ0FMS0FJY0lnWWdBa0dZQVd4cUlRTUNRQUpBQW44Z0FDZ0NRQ0lSQkVBZ0JpQUxLQUlZUVpnQmJHb2lBa0dRQVdzb0FnQWdBa0dZQVdzb0FnQnJJUXdnQTBFTWFpRUdJQU5CQkdvaEJDQURLQUlJSVFJZ0F5Z0NBQ0VGUVNRTUFRc2dBMEdVQVdvaEJpQURRWXdCYWlFRUlBTW9BcEFCSWdJZ0F5Z0NpQUVpQldzaERFRTBDeUFMYWlnQ0FDSVNSUTBBSUFRb0FnQWhCeUFHS0FJQUlRa2dBaUFGYXlFR0lBRW9BZ2dpQTBKL0lBRTFBaWdpRllaQ2Y0VWlGaUFCTlFJUWZDQVZpS2NpQ0dvaEJBSi9JQVVnQ0VzRVFDQUZJQWhySVE1QkFDRUlRUUFnQWlBRVRRMEJHaUFHSUFRZ0JXc2lCbXNNQVFzZ0NDQUZheUVJSUFJZ0JFMEVRQ0FHSUFocklRWkJBQ0VPUVFBTUFRdEJBQ0VPSUFNaEJpQUNJQVJyQ3lBSklBZHJJUUlnQVNnQ0RDSUVJQllnQVRVQ0ZId2dGWWluSWdwcUlRVUNmeUFISUFwTEJFQWdCeUFLYXlFUFFRQWhDa0VBSUFVZ0NVOE5BUm9nQWlBRklBZHJJZ0pyREFFTElBb2dCMnNoQ2lBRklBbFBCRUFnQWlBS2F5RUNRUUFoRDBFQURBRUxRUUFoRHlBRUlRSWdDU0FGYXdzaEIwRUFJUVVnQ0VFQVNBMEJJQXBCQUVnTkFVRUFTQTBCSUFkQkFFZ05BU0FHUVFCSURRRWdBa0VBU0EwQklBTWdEMndnRG1vaEJ5QUtJQXhzSUFocUlRa0NRQUpBQWtBZ0FTZ0NMQ0lJRFFBZ0NRMEFJQWNOQUNBRElBeEhEUUFnQXlBR1J3MEFJQUlnQkVjTkFTQUJJQXRCSkVFMElCRWJhaUlDS0FJQU5nSXNJQUpCQURZQ0FBd0RDeUFJRFFFTElBUkZEUUlnQkswZ0E2MStRaUNJcHcwQ0lBTWdCR3dpQTBILy8vLy9BMHNOQWlBQklBTkJBblFRSENJRE5nSXNJQU5GRFFJZ0JpQUJLQUlJSWdSR0lBRW9BZ3dpQlNBQ1JuRU5BQ0FEUVFBZ0JDQUZiRUVDZEJBWkdnc2dBa1VOQUNBQ1FRRnhJQVpCQW5RaEJpQUJLQUlzSUFkQkFuUnFJUVFnRWlBSlFRSjBhaUVGSUFKQkFVY0VRQ0FDUWY3Ly8vOEhjU0VIUVFBaEFnTkFJQVFnQlNBR0VCWWdCU0FNUVFKMElnbHFJZ2dnQ1dvaEJTQUJLQUlJUVFKMGFpQUlJQVlRRmlBQktBSUlRUUowYWlFRUlBSkJBbW9pQWlBSFJ3MEFDd3RGRFFBZ0JDQUZJQVlRRmhvTElBdEJ6QUJxSVFzZ0RVRTBhaUVOSUFGQk5Hb2hBVUVCSVFVZ0ZFRUJhaUlVSUJBb0FoQkpEUUVMQ3lBRkN3UUFRWDhMZ0JRQ0NYOEtmaU1BUWFBQmF5SUZKQUFDUUNBQ1FTTk5CRUJCQUNFQ0lBTkJBVUdxTDBFQUVCTU1BUXNnQWtFa2F5SUNJQUpCQTI0aUNVRURiRWNFUUVFQUlRSWdBMEVCUWFvdlFRQVFFd3dCQ3lBQUtBSmdJUVlnQVNBRlFad0JhaUlDUVFJUUZTQUFJQVVvQXB3Qk93Rm9JQUZCQW1vZ0JrRUlha0VFRUJVZ0FVRUdhaUFHUVF4cVFRUVFGU0FCUVFwcUlBWkJCQkFWSUFGQkRtb2dCa0VFYWtFRUVCVWdBVUVTYWlBQVFmUUFha0VFRUJVZ0FVRVdhaUFBUWZnQWFrRUVFQlVnQVVFYWFpQUFRZXdBYWtFRUVCVWdBVUVlYWlBQVFmQUFha0VFRUJVZ0FVRWlhaUFDUVFJUUZRSkFBa0FDUUNBRktBS2NBU0lDUVlDQUFVMEVRQ0FHSUFJMkFoQWdBaUFKUndSQUlBVWdDVFlDaEFFZ0JTQUNOZ0tBQVNBRFFRRkIzL1FBSUFWQmdBRnFFQk5CQUNFQ0RBVUxJQVlvQWdRaUFpQUdLQUlNSWdkSklBWW9BZ2dpQ3lBR0tBSUFJZ1JMY1VVRVFDQUZJQWV0SUFLdGZUY0RlQ0FGSUF1dElBU3RmVGNEY0NBRFFRRkJxZkVBSUFWQjhBQnFFQk5CQUNFQ0RBVUxJQUFvQW5RaUNFRUFJQUFvQW5naUNodEZCRUFnQlNBS05nSUVJQVVnQ0RZQ0FDQURRUUZCMGZVQUlBVVFFMEVBSVFJTUJRc0NRQUpBSUFBb0Ftd2lEQ0FFU3cwQVFYOGdDQ0FNYWlJSUlBZ2dERWtiSUFSTkRRQWdBQ2dDY0NJSUlBSkxEUUJCZnlBSUlBcHFJZ29nQ0NBS1N4c2dBa3NOQVF0QkFDRUNJQU5CQVVIREZVRUFFQk1NQlFzQ1FDQUFLQUw0QVEwQUlBQW9BdkFCSWdoRkRRQWdBQ2dDOUFFaUNrVU5BQ0FMSUFScklnUWdDRVlnQnlBQ2F5SUNJQXBHY1EwQUlBVWdBallDYkNBRklBUTJBbWdnQlNBS05nSmtJQVVnQ0RZQ1lDQURRUUZCa2UwQUlBVkI0QUJxRUJOQkFDRUNEQVVMSUFZZ0NVRTBFQmNpQkRZQ0dDQUVSUTBCQWtBZ0JpZ0NFRVVOQUNBQlFTUnFJQVZCbUFGcUlnSkJBUkFWSUFRZ0JTZ0NtQUVpQ1VFSGRpSUtOZ0lnSUFRZ0NVSC9BSEZCQVdvaUREWUNHQ0FBS0FMNEFTRUxJQUZCSldvZ0FrRUJFQlVnQkNBRktBS1lBVFlDQUNBQlFTWnFJQUpCQVJBVklBUWdCU2dDbUFFaUJ6WUNCRUVBSVFJZ0JDZ0NBQ0lJUVlBQ2EwR0Jma2tFUUVFQUlRa01CUXRCQUNFSklBZEJnQUpyUVlGK1NRMEVJQVFvQWhnaUIwRWZTdzBESUFSQkFEWUNKQ0FFSUFBb0FyZ0JOZ0lvUVFFaENTQUdLQUlRUVFGTkRRQkJBQ0FLSUFzYklRcEJBQ0FNSUFzYklRc2dBVUVuYWlFQkEwQWdBU0FGUVpnQmFrRUJFQlVnQkNBRktBS1lBU0lJUVFkMklnYzJBbFFnQkNBSVFmOEFjVUVCYWlJSU5nSk1Ba0FnQUNnQytBRU5BQ0FBTFFEVUFVRUVjUTBBSUFnZ0MwWWdCeUFLUm5FTkFDQUZJQWMyQWxRZ0JTQUlOZ0pRSUFVZ0NUWUNUQ0FGSUFvMkFrZ2dCU0FMTmdKRUlBVWdDVFlDUUNBRFFRSkJsZk1BSUFWQlFHc1FFd3NnQVVFQmFpQUZRWmdCYWlJSFFRRVFGU0FFSUFVb0FwZ0JOZ0kwSUFGQkFtb2dCMEVCRUJVZ0JDQUZLQUtZQVNJSE5nSTRJQVFvQWpRaUNFR0FBbXRCZ1g1SkRRVWdCMEdBQW10QmdINU5EUVVnQkNnQ1RDSUhRU0JQRFFRZ0FVRURhaUVCSUFSQkFEWUNXQ0FFSUFBb0FyZ0JOZ0pjSUFSQk5Hb2hCQ0FKUVFGcUlna2dCaWdDRUVrTkFBc0xRUUFoQWlBQUtBSjBJZ2RGRFFRZ0FDZ0NlQ0lMUlEwRUlBQWdCNjBpRFVJQmZTSVBJQVlvQWdnZ0FDZ0NiQ0lJYTYxOElBMkFweUlCTmdLQUFTQUFJQXV0SWc1Q0FYMGlFQ0FHS0FJTUlBQW9BbkFpQ211dGZDQU9nS2NpQkRZQ2hBRUNRQUpBSUFGRkRRQWdCRVVOQUVILy93TWdCRzRnQVU4TkFRc2dCU0FFTmdJVUlBVWdBVFlDRUNBRFFRRkJnKzRBSUFWQkVHb1FFd3dGQ3lBQklBUnNJUWtDUUNBQUxRQmNRUUp4QkVBZ0FDQUFLQUljSUFocklBZHVOZ0ljSUFBZ0FDZ0NJQ0FLYXlBTGJqWUNJQ0FBSUE4Z0FDZ0NKQ0FJYTYxOElBMkFQZ0lrSUFBZ0VDQUFLQUlvSUFwcnJYd2dEb0ErQWlnTUFRc2dBQ0FFTmdJb0lBQWdBVFlDSkNBQVFnQTNBaHdMSUFBZ0NVR01MQkFYSWdFMkFyUUJJQUZGQkVBZ0EwRUJRYm9lUVFBUUV3d0ZDeUFHS0FJUVFiZ0lFQmNoQVNBQUtBSU1JQUUyQXRBcklBQW9BZ3dvQXRBclJRUkFJQU5CQVVHNkhrRUFFQk1NQlF0QkNrRVVFQmNoQVNBQUtBSU1JQUUyQXZBcklBQW9BZ3dpQVNnQzhDdEZCRUFnQTBFQlFib2VRUUFRRXd3RkN5QUJRUW8yQXZnclFRcEJGQkFYSVFFZ0FDZ0NEQ0FCTmdMOEt5QUFLQUlNSWdFb0F2d3JSUVJBSUFOQkFVRzZIa0VBRUJNTUJRc2dBVUVLTmdLRUxBSkFJQVlvQWhBaUIwVU5BQ0FHS0FJWUlRdEJBQ0VCSUFkQkFVY0VRQ0FIUVg1eElRaEJBQ0VFQTBBZ0N5QUJRVFJzYWlJS0tBSWdSUVJBSUFBb0Fnd29BdEFySUFGQnVBaHNha0VCSUFvb0FoaEJBV3QwTmdLMENBc2dDeUFCUVFGeUlncEJOR3hxSWd3b0FpQkZCRUFnQUNnQ0RDZ0MwQ3NnQ2tHNENHeHFRUUVnRENnQ0dFRUJhM1EyQXJRSUN5QUJRUUpxSVFFZ0JFRUNhaUlFSUFoSERRQUxDeUFIUVFGeFJRMEFJQXNnQVVFMGJHb2lCQ2dDSUEwQUlBQW9BZ3dvQXRBcklBRkJ1QWhzYWtFQklBUW9BaGhCQVd0ME5nSzBDQXNnQ1FSQUlBQW9BclFCSVFGQkFDRUVBMEFnQVNBR0tBSVFRYmdJRUJjaUJ6WUMwQ3NnQjBVRVFDQURRUUZCdWg1QkFCQVREQWNMSUFGQmpDeHFJUUVnQkVFQmFpSUVJQWxKRFFBTEN3Si9JQUFvQXVBQklBQW9Bb1FCSUFBb0FvQUJiQ0lCTmdJa0lBRkJLQkFYSVFFZ0FDZ0M0QUVpQXlBQk5nSW9RUUFnQVVVTkFCcEJBU0FES0FJa1JRMEFHa0VBSVFNRFFBSkFRUUFoQkNBQklBTkJLR3dpQjJvaUFVRUFOZ0lVSUFGQjVBQTJBaHhCNUFCQkdCQVhJUWtnQnlBQUtBTGdBU0lMS0FJb0lnRnFJQWsyQWhnZ0NVVU5BRUVCSVFRZ0EwRUJhaUlESUFzb0FpUkpEUUVMQ3lBRUMwVU5CQ0FBUVFRMkFnZ2dCaWdDRUNJREJFQkJmeUFBS0FKd0lnRWdBQ2dDZUNJQ0lBQW9Bb1FCUVFGcmJHb2lCQ0FDYWlJQ0lBSWdCRWtiSWdJZ0JpZ0NEQ0lFSUFJZ0JFa2JyVUlCZlNFUVFYOGdBQ2dDYkNJQ0lBQW9BblFpQkNBQUtBS0FBVUVCYTJ4cUlnQWdCR29pQkNBQUlBUkxHeUlBSUFZb0FnZ2lCQ0FBSUFSSkc2MUNBWDBoRVNBQklBWW9BZ1FpQUNBQUlBRkpHNjFDQVgwaEVpQUNJQVlvQWdBaUFDQUFJQUpKRzYxQ0FYMGhFeUFHS0FJWUlRQkJBQ0VCQTBBZ0FDQVNJQUExQWdRaURYd2dEWUFpRkQ0Q0ZDQUFJQk1nQURVQ0FDSU9mQ0FPZ0NJVlBnSVFJQUJDZnlBQU5RSW9JZytHUW4rRkloWWdEU0FRZkNBTmdDQVVmVUwvLy8vL0Q0TjhJQStJUGdJTUlBQWdEaUFSZkNBT2dDQVZmVUwvLy8vL0Q0TWdGbndnRDRnK0FnZ2dBRUUwYWlFQUlBRkJBV29pQVNBRFJ3MEFDd3RCQVNFQ0RBUUxJQVVnQWpZQ2tBRWdBMEVCUWRjOUlBVkJrQUZxRUJOQkFDRUNEQU1MUVFBaEFpQUdRUUEyQWhBZ0EwRUJRYm9lUVFBUUV3d0NDeUFGSUFjMkFqUWdCU0FKTmdJd0lBTkJBVUdGK0FBZ0JVRXdhaEFUREFFTElBVWdCellDS0NBRklBZzJBaVFnQlNBSk5nSWdJQU5CQVVIZjd3QWdCVUVnYWhBVEN5QUZRYUFCYWlRQUlBSUxtZ01CQm44akFFRVFheUlHSkFBQ2Z5QUNJQUpCQVVFQ0lBQW9BbUFvQWhBaUNFR0JBa2tiSWdkQkFYUkJCV29pQkc0aUJTQUViRVlnQWlBRVQzRkZCRUFnQTBFQlFmNGpRUUFRRTBFQURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0FyUUJJQUFvQXVRQlFZd3NiR29NQVFzZ0FDZ0NEQXNoQkVFQUlRQWdCQzBBaUN3aUFrRUVjUVJBSUFRb0FxUURRUUZxSVFBTElBQWdCV29pQlVFZ1R3UkFJQVlnQlRZQ0FDQURRUUZCd0R3Z0JoQVRRUUFNQVFzZ0JDQUNRUVJ5T2dDSUxDQUFJQVZKQkVBZ0JDQUFRWlFCYkdwQnFBTnFJUUlEUUNBQklBSkJBUkFWSUFGQkFXb2lBU0FDUVFScUlBY1FGU0FCSUFkcUlnRWdBa0VJYWtFQ0VCVWdBaUFDS0FJSUlnTWdCQ2dDQ0NJSklBTWdDVWtiTmdJSUlBRkJBbW9nQWtFTWFrRUJFQlVnQVVFRGFpSUJJQUpCRUdvZ0J4QVZJQUVnQjJvaUFTQUdRUXhxUVFFUUZTQUNJQVlvQWd3MkFpUWdBaUFDS0FJUUlnTWdDQ0FESUFoSkd6WUNFQ0FDUVpRQmFpRUNJQUZCQVdvaEFTQUFRUUZxSWdBZ0JVY05BQXNMSUFRZ0JVRUJhellDcEFOQkFRc2dCa0VRYWlRQUMrZ0JBUU4vSXdCQkVHc2lCQ1FBQW44Q1FDQUJJQVJCQ0dvQ2Z5QUFLQUpnS0FJUVFZQUNUUVJBSUFJRVFFRi9JUVZCQVF3Q0N5QURRUUZCc2lSQkFCQVRRUUFNQXdzZ0FrRUJUUTBCUVg0aEJVRUNDeUlHRUJVZ0JDQUNJQVZxTmdJTUlBUW9BZ2dpQWlBQUtBSmdLQUlRSWdWUEJFQWdCQ0FGTmdJRUlBUWdBallDQUNBRFFRRkIrenNnQkJBVFFRQU1BZ3NnQUNBQ0lBRWdCbW9nQkVFTWFpQURFRXRGQkVBZ0EwRUJRYklrUVFBUUUwRUFEQUlMUVFFZ0JDZ0NERVVOQVJvZ0EwRUJRYklrUVFBUUUwRUFEQUVMSUFOQkFVR3lKRUVBRUJOQkFBc2dCRUVRYWlRQUM5VUJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQUpBQWtBZ0FFRUFJQUVnQkVFTWFpQURFRXRGRFFBZ0JDZ0NEQTBBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREF0QkFTRUZJQUFvQW1Bb0FoQkJBa2tOQVNnQzBDc2lBa0VjYWlFR1FRRWhBU0FDSVFNRFFDQURJQUlvQWhnMkF0QUlJQU1nQWlnQ3BBWTJBdHdPSUFOQjFBaHFJQVpCaUFZUUZob2dBMEc0Q0dvaEF5QUJRUUZxSWdFZ0FDZ0NZQ2dDRUVrTkFBc01BUXNnQTBFQlFjb2pRUUFRRXdzZ0JFRVFhaVFBSUFVTDFnRUJBMzhqQUVFUWF5SUVKQUFDUUNBQ1FRRkJBaUFBS0FKZ0tBSVFJZ0pCZ1FKSkd5SUZRUUpxUndSQVFRQWhBQ0FEUVFGQm1DRkJBQkFUREFFTEFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXJRQklBQW9BdVFCUVl3c2JHb01BUXNnQUNnQ0RBc2hCaUFCSUFSQkRHb2dCUkFWUVFFaEFDQUJJQVZxSWdVZ0JFRUlha0VCRUJVZ0FpQUVLQUlNSWdGTkJFQWdCQ0FDTmdJRUlBUWdBVFlDQUNBRFFRRkJwdlFBSUFRUUUwRUFJUUFNQVFzZ0JVRUJhaUFHS0FMUUt5QUJRYmdJYkdwQnFBWnFRUUVRRlFzZ0JFRVFhaVFBSUFBTGhBSUJCWDhqQUVFUWF5SUVKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0N0QUVnQUNnQzVBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFR0FrQkJBVUVDSUFBb0FtQWlCeWdDRUVHQkFra2JJZ1VnQWs4RVFFRUFJUUlnQTBFQlFaZ2tRUUFRRXd3QkN5QUVJQUlnQlVGL2MybzJBZ3dnQVNBRVFRaHFJQVVRRlNBRUtBSUlJZ2dnQnlnQ0VFOEVRRUVBSVFJZ0EwRUJRYzd0QUVFQUVCTU1BUXRCQVNFQ0lBRWdCV29pQVNBR0tBTFFLeUFJUWJnSWJHcEJBUkFWSUFBZ0JDZ0NDQ0FCUVFGcUlBUkJER29nQXhCTVJRUkFRUUFoQWlBRFFRRkJtQ1JCQUJBVERBRUxJQVFvQWd4RkRRQkJBQ0VDSUFOQkFVR1lKRUVBRUJNTElBUkJFR29rQUNBQ0M2d0dBUWQvSXdCQkVHc2lCaVFBSUFZZ0FqWUNEQ0FBS0FKZ0lRa0NmeUFBS0FJSVFSQkdCRUFnQUNnQ3RBRWdBQ2dDNUFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUlFSUFRdEFJZ3NRUUZ5T2dDSUxBSkFJQUpCQkUwRVFDQURRUUZCc0NOQkFCQVREQUVMSUFFZ0JFRUJFQlVnQkNnQ0FFRUlUd1JBSUFOQkFVR09JMEVBRUJNTUFRc2dBVUVCYWlBR1FRaHFRUUVRRlNBRUlBWW9BZ2dpQWpZQ0JDQUNRUVZPQkVBZ0EwRUJRZVVpUVFBUUV5QUVRWDgyQWdRTElBRkJBbW9nQkVFSWFrRUNFQlVnQkNnQ0NDSUhRWUNBQkd0QmdJQjhUUVJBSUFZZ0J6WUNBQ0FEUVFGQmlqOGdCaEFUREFFTElBUWdBQ2dDdkFFaUFpQUhJQUliTmdJTUlBRkJCR29nQkVFUWFrRUJFQlVnQkNnQ0VFRUNUd1JBSUFOQkFVSDdLa0VBRUJNTUFRc2dBVUVGYWlFQ0lBWWdCaWdDREVFRmF6WUNEQUpBSUFrb0FoQWlCMFVOQUNBRUtBSUFRUUZ4SVFnZ0JDZ0MwQ3NoQkVFQUlRa2dCMEVJVHdSQUlBZEJlSEVoQVFOQUlBUWdCVUc0Q0d4cUlBZzJBZ0FnQkNBRlFRRnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkFuSkJ1QWhzYWlBSU5nSUFJQVFnQlVFRGNrRzRDR3hxSUFnMkFnQWdCQ0FGUVFSeVFiZ0liR29nQ0RZQ0FDQUVJQVZCQlhKQnVBaHNhaUFJTmdJQUlBUWdCVUVHY2tHNENHeHFJQWcyQWdBZ0JDQUZRUWR5UWJnSWJHb2dDRFlDQUNBRlFRaHFJUVVnQ2tFSWFpSUtJQUZIRFFBTEN5QUhRUWR4SWdGRkRRQURRQ0FFSUFWQnVBaHNhaUFJTmdJQUlBVkJBV29oQlNBSlFRRnFJZ2tnQVVjTkFBc0xRUUFoQlNBQVFRQWdBaUFHUVF4cUlBTVFURVVFUUNBRFFRRkJzQ05CQUJBVERBRUxJQVlvQWd3RVFDQURRUUZCc0NOQkFCQVREQUVMQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEFTQUFLQUpnS0FJUVFRSlBCRUFnQVNnQzBDc2lBU2dDQkVFQ2RDRUhJQUZCc0FkcUlRb2dBVUdzQm1vaEEwRUJJUWtnQVNFQ0EwQWdBaUFCL1FBQ0JQMExBcndJSUFJZ0FTZ0NGRFlDekFnZ0FrSGtEbW9nQXlBSEVCWWFJQUpCNkE5cUlBb2dCeEFXR2lBQ1FiZ0lhaUVDSUFsQkFXb2lDU0FBS0FKZ0tBSVFTUTBBQ3d0QkFTRUZDeUFHUVJCcUpBQWdCUXZyQ2dFR2Z5TUFRWUFCYXlJRkpBQWdCVUVBTmdKNEFrQWdBa0VJUndSQUlBTkJBVUdxSDBFQUVCTWdBMEVCUWFvZlFRQVFFd3dCQ3lBQklBQkI1QUZxUVFJUUZTQUJRUUpxSUFWQi9BQnFRUVFRRlNBQlFRWnFJQVZCOUFCcVFRRVFGU0FCUVFkcUlBVkIrQUJxUVFFUUZTQUFLQUxrQVNJQklBQW9Bb0FCSWdnZ0FDZ0NoQUZzVHdSQUlBVWdBVFlDY0NBRFFRRkIvandnQlVId0FHb1FFd3dCQ3lBQUtBSzBBU0FCUVl3c2JHb2hBaUFCSUFodUlRY2dCU2dDZENFRUFrQWdBQ2dDTENJR1FRQk9JQUVnQmtkeERRQWdBaWdDMUN0QkFXb2lCaUFFUmcwQUlBVWdCallDYUNBRklBUTJBbVFnQlNBQk5nSmdJQU5CQVVHV1BTQUZRZUFBYWhBVFFRQWhCQXdCQ3lBQ0lBUTJBdFFyQWtBZ0JTZ0NmQ0lFUVFGclFReE5CSDhnQkVFTVJ3MEJJQVZCRERZQ1FDQURRUUpCczl3QUlBVkJRR3NRRXlBRktBSjhCU0FFQzBVRVFDQURRUVJCb3RNQVFRQVFFeUFBUVFFMkFqZ0xBa0FDUUFKQUFrQWdBaWdDMkNzaUJnUkFJQVVvQW5RaUJDQUdTUTBCSUFVZ0JqWUNOQ0FGSUFRMkFqQWdBMEVCUWZrbklBVkJNR29RRXlBQVFRRTJBamhCQUNFRURBWUxJQVVvQW5naUJBMEJEQU1MSUFVb0FuZ2lCRVVOQVFzZ0JTQUVJQUF0QUZ4QkJIWkJBWEZxSWdZMkFuZ2dCU2dDZENJRUlBSW9BdGdySWdsQkFXdExCRUFnQlNBSk5nSVVJQVVnQkRZQ0VDQURRUUZCbGljZ0JVRVFhaEFUSUFCQkFUWUNPRUVBSVFRTUJBc2dCQ0FHVHdSQUlBVWdCallDSkNBRklBUTJBaUFnQTBFQlFkMG9JQVZCSUdvUUV5QUFRUUUyQWpoQkFDRUVEQVFMSUFJZ0JqWUMyQ3NMSUFZZ0JTZ0NkRUVCYWtjTkFDQUFJQUF0QUZ4QkFYSTZBRndMSUFVb0Fud2hBaUFBUVJBMkFnZ2dBRUVBSUFKQkRHc2dBQ2dDT0JzMkFoZ0NRQ0FBS0FJc0lnSkJmMFlFUUVFRUlRUUNRQ0FCSUFjZ0NHeHJJZ0VnQUNnQ0hFa05BQ0FCSUFBb0FpUlBEUUFnQnlBQUtBSWdTUTBBSUFjZ0FDZ0NLRTlCQW5RaEJBc2dBQ0FBTFFCY1Fmc0JjU0FFY2pvQVhDQUFLQUxrQVNFQkRBRUxJQUFnQUMwQVhFSDdBWEVnQUNnQzVBRWlBU0FDUjBFQ2RISTZBRndMSUFBb0F1QUJLQUlvSUFGQktHeHFJZ0lnQVRZQ0FDQUNJQVVvQW5RMkFnd2dCU2dDZUNFRUlBQW9Ba3hGQkVBZ0FpZ0NCQ0FFVHdSQVFRRWhCQXdEQ3lBRklBRTJBZ0FnQTBFQ1FhY01JQVVRRXlBQVFRRTJBa3dnQlNnQ2VDRUVDeUFBS0FMa0FTRUJJQUFvQXVBQktBSW9JUUlnQkFSQUlBSWdBVUVvYkdvaUFTQUVOZ0lFSUFFZ0JTZ0NlQ0lDTmdJSUlBRW9BaEFpQVVVRVFDQUNRUmdRRnlFQklBQW9BdUFCS0FJb0lBQW9BdVFCUVNoc2FpQUJOZ0lRSUFFRVFFRUJJUVFNQkF0QkFDRUVJQU5CQVVIK05VRUFFQk1NQXdzZ0FTQUNRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0RDeUFDSUFFMkFoQkJBU0VFREFJTEFrQWdBaUFCUVNoc2FpSUVLQUlRSWdZTkFDQUVRUW8yQWdoQkNrRVlFQmNoQmlBQUtBTGdBU2dDS0NJQ0lBQW9BdVFCSWdGQktHeHFJQVkyQWhBZ0JnMEFRUUFoQkNBQ0lBRkJLR3hxUVFBMkFnZ2dBMEVCUWY0MVFRQVFFd3dDQ3lBRktBSjBJZ2NnQWlBQlFTaHNhaUlCS0FJSVNRUkFRUUVoQkF3Q0MwRUJJUVFnQVNBSFFRRnFJZ0UyQWdnZ0JpQUJRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFJZ0JCQURZQ0NDQUFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0NDeUFDSUFFMkFoQU1BUXNnQlNBRU5nSlFJQU5CQVVIQTNnQWdCVUhRQUdvUUUwRUFJUVFMSUFWQmdBRnFKQUFnQkF2YUJnRUlmeU1BUWRBQWF5SURKQUFnQTBFQk5nSk1JQUFvQWl3aENRSkFBa0FnQUNnQzRBRW9BaWdpQkVVTkFDQUVLQUlRUlEwQUFrQWdCQ0FKUVNoc2FpSUVLQUlFUlFSQUlBRWdBQ2tETUVJQ2ZDQUNFREFOQVNBQ1FRRkJteXBCQUJBVERBTUxJQUVnQkNnQ0VDa0RBQ0FDRURCRkJFQWdBa0VCUVpzcVFRQVFFd3dEQ3lBQklBQW9BaEJCQWlBQ0VCMUJBa2NFUUNBQ1FRRkJneE5CQUJBVERBTUxJQUFvQWhBZ0EwSElBR3BCQWhBVklBTW9Ba2hCa1A4RFJnMEFJQUpCQVVIRUgwRUFFQk1NQWdzZ0FDZ0NDRUdBQWtjTkFDQUFRUWcyQWdnTEFrQWdBQ2dDaEFFZ0FDZ0NnQUZzSWdkRkRRQWdBQ2dDdEFFaEJVRUFJUVFnQjBFSVR3UkFJQWRCZUhFaENBTkFJQVVnQkVHTUxHeHFRWDgyQXRRcklBVWdCRUVCY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVDY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVEY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVFY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVGY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVHY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVIY2tHTUxHeHFRWDgyQXRRcklBUkJDR29oQkNBS1FRaHFJZ29nQ0VjTkFBc0xJQWRCQjNFaUIwVU5BQU5BSUFVZ0JFR01MR3hxUVg4MkF0UXJJQVJCQVdvaEJDQUdRUUZxSWdZZ0IwY05BQXNMUVFBaEJpQUFJQU5CeUFCcVFRQWdBMEhFQUdvZ0EwRkFheUFEUVR4cUlBTkJPR29nQTBFMGFpQURRY3dBYWlBQklBSVFMRVVOQUNBSlFRRnFJUWNEUUFKQUlBTW9Ba3hGRFFBZ0FDQURLQUpJSWdSQkFFRUFJQUVnQWhBeFJRMENJQUFvQW9BQklRZ2dBQ2dDaEFFaENpQURJQVJCQVdvaUJUWUNJQ0FESUFnZ0NtdzJBaVFnQWtFRVFlN2JBQ0FEUVNCcUVCTWdBQ2dDNkFFZ0FDZ0NaQ2dDR0JDQUFVVU5BaUFBS0FLMEFTQUVRWXdzYkdvaUJpZ0MzQ3NpQ0FSQUlBZ1FGQ0FHUWdBM0F0d3JDeUFESUFVMkFoQWdBa0VFUWJTQkFTQURRUkJxRUJNZ0JDQUpSZ1JBSUFFZ0FDZ0M0QUVwQXdoQ0Fud2dBaEF3RFFGQkFDRUdJQUpCQVVHYktrRUFFQk1NQXdzZ0F5QUhOZ0lFSUFNZ0JUWUNBQ0FDUVFKQnErb0FJQU1RRTBFQUlRWWdBQ0FEUWNnQWFrRUFJQU5CeEFCcUlBTkJRR3NnQTBFOGFpQURRVGhxSUFOQk5Hb2dBMEhNQUdvZ0FTQUNFQ3dOQVF3Q0N3c2dBQ0FDRUg4aEJnc2dBMEhRQUdva0FDQUdDNFlVQXc1L0FuNEJleU1BUWRBQWF5SUpKQUFnQ1VFQk5nSk1Ba0FDUUNBQUtBS0FBVUVCUncwQUlBQW9Bb1FCUVFGSERRQWdBQ2dDYkEwQUlBQW9BbkFOQUNBQUtBSmtJZ01vQWdBTkFDQURLQUlFRFFBZ0F5Z0NDQ0FBS0FKMFJ3MEFJQU1vQWd3Z0FDZ0NlRWNOQUVFQUlRTWdBQ0FKUWNnQWFrRUFJQWxCeEFCcUlBbEJRR3NnQ1VFOGFpQUpRVGhxSUFsQk5Hb2dDVUhNQUdvZ0FTQUNFQ3hGRFFFQ1FBSkFJQWtvQWt4RkRRQWdBQ0FKS0FKSVFRQkJBQ0FCSUFJUU1VVU5BQ0FBS0FKa0lnRW9BaEFOQVVFQklRTU1Bd3NnQWtFQlFhUEVBRUVBRUJNTUFnc2dBU2dDR0NFRkEwQWdCU0FFUVRSc0lnRnFLQUlzRUJRZ0FDZ0NaQ0lDS0FJWUlnVWdBV29pQXlBQUtBTG9BU0lIS0FJVUtBSUFLQUlVSUFSQnpBQnNhaUlHS0FJa05nSXNJQU1nQnlnQ0dDZ0NHQ0FCYWlnQ0pEWUNKQ0FHUVFBMkFpUkJBU0VESUFSQkFXb2lCQ0FDS0FJUVNRMEFDd3dCQ3lBQVFnQTNBMUFnQUNnQ1dCQVVJQUJCQURZQ1dBSkFBa0FnQUNnQ0hBMEFJQUFvQWlBTkFDQUFLQUlrSUFBb0FvQUJSdzBBUWdJaEVTQUFLQUlvSUFBb0FvUUJSZzBCQzBJQ0lSRWdBQ2dDVEEwQUlBRW9BaHhCQWtZTkFDQUFLQUtBQVNJTklBQW9Bb1FCYkNJREJINGdBMEVCY1NFRUlBQW9BdUFCS0FJb0lRY0NRQ0FEUVFGR0JFQkJBQ0VEUWdBaEVRd0JDeUFEUVg1eElRWkJBQ0VEUWdBaEVRTkFJQWNnQTBFb2JHb2lDQ2dDQkNJS0JFQWdDQ2dDRUNBS1FSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnQnlBRFFRRnlRU2hzYWlJSUtBSUVJZ29FUUNBSUtBSVFJQXBCR0d4cVFRaHJLUU1BSWhJZ0VTQVJJQkpUR3lFUkN5QURRUUpxSVFNZ0JVRUNhaUlGSUFaSERRQUxDd0pBSUFSRkRRQWdCeUFEUVNoc2FpSURLQUlFSWdWRkRRQWdBeWdDRUNBRlFSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnRVVJQ2ZBVkNBZ3NoRVVFQUlRUUNRQ0FBS0FJZ0lnWWdBQ2dDS0NJT1R3MEFJQUFvQWlRaUNDQUFLQUljSWdWTkRRQWdCU0FJSUFWcklncEJmSEVpQzJvaEJ5QUFLQUxnQVNnQ0tDRVBJQXBCQkVraEVBTkFJQThnQmlBTmJFRW9iR29oREFKQUFrQWdFQVJBSUFVaEF3d0JDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFL1J3QUlSTkJBQ0VFQTBBZ0RDQUVJQVZxUVNoc2FpSURRZndBYWlBRFFkUUFhaUFEUVN4cUlBTkJCR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJQOXJnRWhFeUFFUVFScUlnUWdDMGNOQUFzZ0V5QVRJQlA5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5cmdFaUV5QVRJQlA5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5cmdIOUd3QWhCQ0FISVFNZ0NpQUxSZzBCQ3dOQUlBd2dBMEVvYkdvb0FnUWdCR29oQkNBRFFRRnFJZ01nQ0VjTkFBc0xJQVpCQVdvaUJpQU9SdzBBQ3dzZ0FDQUVRUU4wRUJnaUJ6WUNXQ0FFUlEwQUlBZEZEUUJCQUNFRUFrQWdBQ2dDSUNJR0lBQW9BaWdpQTA4TkFDQUFLQUlrSWdVZ0FDZ0NIRTBOQUFOQUlBVWdBQ2dDSENJSFN3UkFJQUFvQXVBQktBSW9JQUFvQW9BQklBWnNRU2hzYWlFTkEwQWdEU0FIUVNoc2FpSUlLQUlFSWdNRVFDQURRUU54SVFvZ0NDZ0NFQ0VGUVFBaEN3SkFJQU5CQkVrRVFFRUFJUU1NQVFzZ0EwRjhjU0VPUVFBaEEwRUFJUXdEUUNBRVFRTjBJZ2dnQUNnQ1dHb2dCU0FEUVJoc2Fpa0RBRGNEQUNBQUtBSllJQWhxSUFVZ0EwRUJja0VZYkdvcEF3QTNBd2dnQUNnQ1dDQUlhaUFGSUFOQkFuSkJHR3hxS1FNQU53TVFJQUFvQWxnZ0NHb2dCU0FEUVFOeVFSaHNhaWtEQURjREdDQURRUVJxSVFNZ0JFRUVhaUVFSUF4QkJHb2lEQ0FPUncwQUN3c2dDZ1JBQTBBZ0FDZ0NXQ0FFUVFOMGFpQUZJQU5CR0d4cUtRTUFOd01BSUFOQkFXb2hBeUFFUVFGcUlRUWdDMEVCYWlJTElBcEhEUUFMQ3lBQUtBSWtJUVVMSUFkQkFXb2lCeUFGU1EwQUN5QUFLQUlvSVFNTElBWkJBV29pQmlBRFNRMEFDeUFBS0FKWUlRY0xJQUFnQkRZQ1ZDTUFRZEFCYXlJR0pBQWdCa0lCTndNSUFrQWdCRUVEZENJS1JRMEFJQVpCQ0RZQ0VDQUdRUWcyQWhSQkNDSUZJUVJCQWlFSUEwQWdCa0VRYWlBSVFRSjBhaUFGSWdNZ0JFRUlhbW9pQlRZQ0FDQUlRUUZxSVFnZ0F5RUVJQVVnQ2trTkFBc0NmeUFISUFwcVFRaHJJZ01nQjAwRVFFRUJJUWhCQVNFRlFRQU1BUXRCQVNFSVFRRWhCUU5BQW44Z0NFRURjVUVEUmdSQUlBY2dCU0FHUVJCcUVFUWdCa0VJYWtFQ0VEd2dCVUVDYWd3QkN3SkFJQVpCRUdvaUJDQUZRUUZySWdwQkFuUnFLQUlBSUFNZ0IydFBCRUFnQnlBSUlBWW9BZ3dnQlVFQUlBUVFPd3dCQ3lBSElBVWdCa0VRYWhCRUN5QUZRUUZHQkVBZ0JrRUlha0VCRURwQkFBd0JDeUFHUVFocUlBb1FPa0VCQ3lFRklBWWdCaWdDQ0VFQmNpSUlOZ0lJSUFkQkNHb2lCeUFEU1EwQUN5QUdLQUlNQ3lFRElBY2dDQ0FESUFWQkFDQUdRUkJxRURzZ0JpZ0NEQ0VFSUFZb0FnZ2hDQUpBSUFWQkFVY05BQ0FJUVFGSERRQWdCRVVOQVFzRFFBSi9JQVZCQVV3RVFDQUdRUWhxSUFnZ0JCQjNJZ01RUENBRElBVnFEQUVMSUFaQkNHb2lBMEVDRURvZ0JpQUdLQUlJUVFkek5nSUlJQU5CQVJBOElBZEJDR3NpQ2lBR1FSQnFJZ1FnQlVFQ2F5SUlRUUowYWlnQ0FHc2dCaWdDQ0NBR0tBSU1JQVZCQVd0QkFTQUVFRHNnQTBFQkVEb2dCaUFHS0FJSVFRRnlJZ00yQWdnZ0NpQURJQVlvQWd3Z0NFRUJJQVFRT3lBSUN5RUZJQWRCQ0dzaEJ5QUdLQUlNSVFRZ0JpZ0NDQ0VJSUFWQkFVY05BQ0FJUVFGSERRQWdCQTBBQ3dzZ0JrSFFBV29rQUFzZ0FDZ0NnQUVoQTBFQUlRVUNRQU5BQW44Q1FDQURRUUZIRFFBZ0FDZ0NoQUZCQVVjTkFDQUFLQUswQVNnQzNDdEZEUUFnQ1VFQU5nSklJQUJCQURZQzVBRWdBQ0FBS0FJSVFZQUJjallDQ0VFQURBRUxRUUFoQXlBQUlBbEJ5QUJxUVFBZ0NVSEVBR29nQ1VGQWF5QUpRVHhxSUFsQk9Hb2dDVUUwYWlBSlFjd0FhaUFCSUFJUUxFVU5BeUFKS0FKTVJRMENJQWtvQWtnTElnWkJBV29oQXlBQUlBWkJBRUVBSUFFZ0FoQXhJQUFvQW9BQklBQW9Bb1FCYkNFSFJRUkFJQWtnQnpZQ0JDQUpJQU0yQWdBZ0FrRUJRY3c2SUFrUUUwRUFJUU1NQXdzZ0NTQUhOZ0lrSUFrZ0F6WUNJQ0FDUVFSQjd0c0FJQWxCSUdvUUV5QUFLQUxvQVNBQUtBSmtLQUlZRUlBQlJRUkFRUUFoQXd3REN3SkFBa0FnQUNnQ2dBRkJBVWNOQUNBQUtBS0VBVUVCUncwQUlBQW9BbVFpQnlnQ0FDQUFLQUpnSWdRb0FnQkhEUUVnQnlnQ0JDQUVLQUlFUncwQklBY29BZ2dnQkNnQ0NFY05BU0FIS0FJTUlBUW9BZ3hIRFFFTElBQW9BclFCSUFaQmpDeHNhaUlIS0FMY0t5SUVSUTBBSUFRUUZDQUhRZ0EzQXR3ckN5QUpJQU0yQWhBZ0FrRUVRYlNCQVNBSlFSQnFFQk1nQVNrRENDSVNVQVIrUWdBRklCSWdBU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUlMSUFWQkFXb2lCU0FBS0FLQUFTSURJQUFvQW9RQmJFWU5BU0FBS0FKVUlnZEZEUUFnQUNnQ1VDQUhSdzBBQ3lBQklCRWdBaUFCS0FJc0VRd0FHZ3NnQUNBQ0VIOGhBd3NnQ1VIUUFHb2tBQ0FEQzdjR0FReC9JQUFvQW1BaENRSkFJQUFvQW9BQklBQW9Bb1FCYkNJTUJFQWdDU2dDRUNJQlFiZ0liQ0VOSUFFZ0FXeEJBblFoQ2lBQUtBSU1JUVFnQUNnQ3RBRWhBd05BSUFNb0F0QXJJUXNnQXlBRVFZd3NFQllpQVVFQU5nTG9LeUFCUVg4MkF0UXJJQUZCQURZQ3NDZ2dBVUVBTmdLRUxDQUJRUUEyQXZBcklBRkNBRGNDK0NzZ0FTQUxOZ0xRS3lBQklBRXRBSWdzUWZ3QmNUb0FpQ3dnQkNnQzZDc0VRQ0FCSUFvUUdDSUROZ0xvS3lBRFJRUkFRUUFQQ3lBRElBUW9BdWdySUFvUUZob0xJQUVnQkNnQytDdEJGR3dpQlJBWUlnTTJBdkFyUVFBaENDQURSUTBDSUFNZ0JDZ0M4Q3NnQlJBV0dpQUVLQUwwS3lJR0JFQWdCQ2dDOENzaEF5QUJLQUx3S3lFRlFRQWhCd05BSUFNb0Fnd0VRQ0FGSUFNb0FoQVFHQ0lHTmdJTUlBWkZCRUJCQUE4TElBWWdBeWdDRENBREtBSVFFQllhSUFRb0F2UXJJUVlMSUFFZ0FTZ0MrQ3RCQVdvMkF2Z3JJQVZCRkdvaEJTQURRUlJxSVFNZ0IwRUJhaUlISUFaSkRRQUxDeUFCSUFRb0FvUXNRUlJzSWdVUUdDSUROZ0w4S3lBRFJRMENJQU1nQkNnQy9Dc2dCUkFXR2lBQklBUW9Bb1FzSWdnMkFvUXNJQWdFUUNBRUtBTDhLeUVESUFFb0F2d3JJUVZCQUNFSEEwQWdBeWdDQ0NJR0JFQWdCU0FCS0FMd0t5QUdJQVFvQXZBcmEybzJBZ2dMSUFNb0Fnd2lCZ1JBSUFVZ0FTZ0M4Q3NnQmlBRUtBTHdLMnRxTmdJTUN5QUZRUlJxSVFVZ0EwRVVhaUVESUFkQkFXb2lCeUFJUncwQUN3c2dDeUFFS0FMUUt5QU5FQllhSUFGQmpDeHFJUU1nRGtFQmFpSU9JQXhIRFFBTEMwRUJJUWdnQUFKL1FRQkJBVUhJQUJBWElnRkZEUUFhSUFFZ0FTMEFLRUgrQVhGQkFYSTZBQ2dnQVVFQlFRUVFGeUlFTmdJVUlBRWdCQTBBR2lBQkVCUkJBQXNpQVRZQzZBRWdBVVVFUUVFQUR3c2dBQ2dDN0FFaEJVRUFJUVFnQVNBQVFlZ0FhallDSENBQklBazJBaGhCQVVIUUJoQVhJUU1nQVNnQ0ZDQUROZ0lBQWtBZ0EwVU5BQ0FKS0FJUVFjd0FFQmNoQXlBQktBSVVLQUlBSWdjZ0F6WUNGQ0FEUlEwQUlBY2dDU2dDRURZQ0VDQUFLQUs4QVNFRUlBRWdCVFlDTENBQklBUTJBZ0JCQVNFRUN5QUVEUUFnQUNnQzZBRVFYa0VBSVFnZ0FFRUFOZ0xvQVNBQ1FRRkJyeHhCQUJBVEN5QUlDNVFYQXd0L0FYNEJmU01BUVRCcklnb2tBQ0FBUVFFMkFnZ0Nmd0pBQWtBZ0FTQUtRU2hxSWdOQkFpQUNFQjFCQWtjTkFDQURJQXBCTEdwQkFoQVZJQW9vQWl4QnovNERSdzBBSUFCQkFqWUNDQ0FBS0FMZ0FTQUJLUU00UWdKOUlnNDNBd0FnQ2lBT053TVFJQUpCQkVHODR3QWdDa0VRYWhBVElBQW9BdUFCSWdjcEF3QWhEaUFIS0FJWUlnVkJBV29pQXlBSEtBSWdJZ1JOQkVBZ0J5Z0NIQ0VFREFJTElBY0NmeUFFczBNQUFNaENraUlQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNpQXpZQ0lDQUhLQUljSUFOQkdHd1FHeUlFQkVBZ0J5QUVOZ0ljSUFjb0FoZ2lCVUVCYWlFRERBSUxJQWNvQWh3UUZDQUhRUUEyQWlBZ0IwSUFOd01ZSUFKQkFVR1dIa0VBRUJNTElBSkJBVUdEK2dCQkFCQVRRUUFNQVFzZ0JDQUZRUmhzYWlJRVFRSTJBaEFnQkNBT3hEY0RDQ0FFUWMvK0F6c0JBQ0FISUFNMkFoZ2dBU0FBS0FJUVFRSWdBaEFkUVFKSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFFTElBQW9BaEFnQ2tFb2FrRUNFQlVDUUFKQUlBb29BaWdpQkVHUS93TkhCRUFEUUVHZ3dnRWhCU0FFUWYvOUEwMEVRQ0FLSUFRMkFnQWdBa0VCUWJjUklBb1FFMEVBREFVTEEwQWdCU0lES0FJQUlnY0VRQ0FEUVF4cUlRVWdCQ0FIUncwQkN3c0NRQUpBSUFjTkFFRUNJUVlnQWtFQ1FlSWRRUUFRRTBHREV5RUZBa0FDUUNBQklBQW9BaEJCQWlBQ0VCMUJBa2NOQUFOQUlBQW9BaEFnQ2tFc2FrRUNFQlZCb01JQklRY2dDaWdDTENJRVFZRCtBMDhFUUFOQUlBY2lBeWdDQUNJSUJFQWdBMEVNYWlFSElBUWdDRWNOQVFzTElBTW9BZ1FnQUNnQ0NIRkZCRUJCOENraEJRd0RDeUFJQkVBZ0NFR1Evd05HQkVBZ0NrR1Evd00yQWlnTUJ3c2dBU2tET0NFT0lBQW9BdUFCSWdjb0FoZ2lBMEVCYWlJRUlBY29BaUFpQlUwRVFDQUhLQUljSVFVTUJRc2dCd0ovSUFXelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRE5nSWdJQWNvQWh3Z0EwRVliQkFiSWdVRVFDQUhJQVUyQWh3Z0J5Z0NHQ0lEUVFGcUlRUU1CUXNnQnlnQ0hCQVVJQWRCQURZQ0lDQUhRZ0EzQXhoQmxoNGhCUXdEQ3lBR1FRSnFJUVlMSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSZzBBQ3dzZ0FrRUJJQVZCQUJBVElBSkJBVUhTekFCQkFCQVRRUUFNQndzZ0JTQURRUmhzYWlJRElBWTJBaEFnQXlBT3B5QUdhNnczQXdnZ0EwRUFPd0VBSUFjZ0JEWUNHQ0FLSUFnMkFpaEJvTUlCSVFRRFFDQUVJZ01vQWdBaUIwVU5BU0FEUVF4cUlRUWdCeUFJUncwQUN3c2dBeWdDQkNBQUtBSUljVVVFUUNBQ1FRRkI4Q2xCQUJBVFFRQU1CZ3NnQVNBQUtBSVFRUUlnQWhBZFFRSkhCRUFnQWtFQlFZTVRRUUFRRTBFQURBWUxJQUFvQWhBZ0NrRWtha0VDRUJVZ0NpZ0NKQ0lFUVFGTkJFQWdBa0VCUVpVdlFRQVFFMEVBREFZTElBb2dCRUVDYXlJRk5nSWtJQUFvQWhBaEJDQUFLQUlVSUFWSkJFQWdCQ0FGRUJzaUJFVUVRQ0FBS0FJUUVCUWdBRUlBTndNUUlBSkJBVUhJSmtFQUVCTkJBQXdIQ3lBQUlBUTJBaEFnQUNBS0tBSWtJZ1UyQWhRTElBRWdCQ0FGSUFJUUhTSUVJQW9vQWlSSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFZTElBQWdBQ2dDRUNBRUlBSWdBeWdDQ0JFQkFFVUVRQ0FDUVFGQmxSTkJBQkFUUVFBTUJnc2dBU2tET0NFT0lBb29BaVFoQ0FKQUlBQW9BdUFCSWdNb0FoZ2lCa0VCYWlJRklBTW9BaUFpQkUwRVFDQURLQUljSVFRTUFRc2dBd0ovSUFTelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRU5nSWdJQU1vQWh3Z0JFRVliQkFiSWdSRkRRVWdBeUFFTmdJY0lBTW9BaGdpQmtFQmFpRUZDeUFFSUFaQkdHeHFJZ1FnQ0VFRWFqWUNFQ0FFSUE2bklBaHJRUVJyckRjRENDQUVJQWM3QVFBZ0F5QUZOZ0lZSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSd1JBSUFKQkFVR0RFMEVBRUJOQkFBd0dDMEVCSUF3Z0IwSGMvZ05HR3lFTVFRRWdDU0FIUWRMK0EwWWJJUWxCQVNBTElBZEIwZjREUmhzaEN5QUFLQUlRSUFwQktHcEJBaEFWSUFvb0FpZ2lCRUdRL3dOSERRRUxDeUFMRFFFTElBSkJBVUdNSlVFQUVCTkJBQXdDQ3lBSlJRUkFJQUpCQVVHNkpVRUFFQk5CQUF3Q0N5QU1SUVJBSUFKQkFVSG9KVUVBRUJOQkFBd0NDMEVBSVFOQkFDRUZRUUFoQ1NNQVFSQnJJZ2NrQUVFQklRd0NRQ0FBTFFEVUFVRUJjVVVOQUFKQUlBQW9Bb2dCSWdaRkRRQUNRQU5BSUFBb0Fvd0JJQWxCQTNScUlnUW9BZ0FpQ3dSQUlBTWdCQ2dDQkNJSWF5SUVRUUFnQXlBRVR4c2hCQ0FESUFoSkJFQWdDQ0FEYXlFR0lBTWdDMm9oQ0FOQUlBWkJCRWtFUUVHQ0xDRUREQVVMSUFnZ0IwRU1ha0VFRUJVZ0J5Z0NEQ0lEUVg5eklBVkpCRUJCNkNzaEF3d0ZDeUFESUFaQkJHc2lDMnNnQkNBRElBdExJZzBiSVFRZ0F5QUZhaUVGSUFzZ0Eyc2hCaUFJUVFBZ0F5QU5HMnBCQkdvaENDQURJQXRKRFFBTElBQW9Bb2dCSVFZTElBUWhBd3NnQ1VFQmFpSUpJQVpKRFFBTElBTkZEUUZCQUNFTUlBSkJBVUhXRjBFQUVCTU1BZ3RCQUNFTUlBSkJBU0FEUVFBUUV3d0JDeUFBSUFVUUdDSUROZ0tnQVNBRFJRUkFRUUFoRENBQ1FRRkJ6Q0ZCQUJBVERBRUxJQUFnQlRZQ2xBRWdBQ2dDakFFaEJnSkFJQUFvQW9nQklnZ0VRRUVBSVFWQkFDRURRUUFoQkFOQUlBWWdCRUVEZENJTGFpSU5LQUlBSWdrRVFDQUFLQUtnQVNBRGFpRUlBbjhnRFNnQ0JDSUdJQVZOQkVBZ0NDQUpJQVlRRmhvZ0F5QUdhaUVESUFVZ0Jtc01BUXNnQ0NBSklBVVFGaG9nQXlBRmFpRURJQVlnQldzaEJpQUZJQWxxSVFVRFFDQUdRUVJKRFFVZ0JTQUhRUWhxUVFRUUZTQUZRUVJxSVFVZ0FDZ0NvQUVnQTJvaENTQUdRUVJySWdZZ0J5Z0NDQ0lJU1FSQUlBa2dCU0FHRUJZYUlBTWdCbW9oQXlBSEtBSUlJQVpyREFJTElBa2dCU0FJRUJZYUlBY29BZ2dpQ1NBRGFpRURJQVVnQ1dvaEJTQUdJQWxySWdZTkFBdEJBQXNoQlNBQUtBS01BU0FMYWlnQ0FCQVVJQUFvQW93QklnWWdDMnBDQURjQ0FDQUFLQUtJQVNFSUN5QUVRUUZxSWdRZ0NFa05BQXNnQUNnQ2xBRWhCU0FBS0FLZ0FTRURDeUFBSUFVMkFxZ0JJQUFnQXpZQ2tBRWdBRUVBTmdLSUFTQUdFQlFnQUVFQU5nS01BUXdCQzBFQUlRd2dBa0VCUVlJc1FRQVFFd3NnQjBFUWFpUUFJQXhGQkVBZ0FrRUJRZkErUVFBUUUwRUFEQUlMSUFKQkJFSEYyd0JCQUJBVElBQW9BdUFCSUFFcEF6aEMvdi8vL3c5OFF2Ly8vLzhQZ3pjRENFRUFJUUZCQUNFR0l3QkJFR3NpQnlRQUFrQWdBQ2dDUkNJRVJRUkFJQUJCQVRZQ1RBd0JDeUFBS0FKTURRQWdBQ2dDU0NFRElBQW9BdUFCSWd3b0FpZ2hCU0FFUVFGSEJFQWdCRUYrY1NFSUEwQWdCU0FESUFGQkEzUnFJZ3N2QVFBaURVRW9iR29pQ1NBTk5nSUFJQWtnQ1NnQ0NFRUJhallDQ0NBRklBc3ZBUWdpQzBFb2JHb2lDU0FMTmdJQUlBa2dDU2dDQ0VFQmFqWUNDQ0FCUVFKcUlRRWdCa0VDYWlJR0lBaEhEUUFMQ3lBRVFRRnhCRUFnQlNBRElBRkJBM1JxTHdFQUlnWkJLR3hxSWdFZ0JqWUNBQ0FCSUFFb0FnaEJBV28yQWdnTEFrQWdEQ2dDSkNJR0JFQkJBQ0VCQTBBZ0JTQUJRU2hzYWlnQ0NFVUVRQ0FISUFFMkFnQWdBa0VCUWJQSUFDQUhFQk1NQXdzZ0FVRUJhaUlCSUFaSERRQUxDeUFNS1FNSUlRNUJBQ0VGQTBBQ1FDQUFLQUxnQVNnQ0tDQURJQVZCQTNRaURHb3ZBUUJCS0d4cUlnRW9BaEFpQmtVRVFDQUJJQUVvQWdoQkdCQVhJZ1kyQWhBZ0JrVU5BU0FBS0FKRUlRUWdBQ2dDU0NFREN5QUdJQUVvQWdRaUNVRVliR29pQmlBT053TUFJQVlnRGlBRElBeHFOUUlFZkNJT053TVFJQUVnQ1VFQmFqWUNCQ0FGUVFGcUlnVWdCRWtOQVF3REN3c2dBa0VCUWIwMVFRQVFFd3NnQUVFQk5nSk1JQUFvQWtSRkRRQWdBQ2dDNEFFb0FpZ2hBMEVBSVFFRFFDQURJQUFvQWtnZ0FVRURkR292QVFCQktHd2lBbW9pQTBFQU5nSUlJQU1vQWhBUUZDQUFLQUxnQVNnQ0tDSURJQUpxUVFBMkFoQWdBVUVCYWlJQklBQW9Ba1JKRFFBTEN5QUhRUkJxSkFBZ0FFRUlOZ0lJUVFFTUFRc2dBeWdDSEJBVUlBTkJBRFlDSUNBRFFnQTNBeGdnQWtFQlFaWWVRUUFRRTBFQUN5QUtRVEJxSkFBTEhBQWdBQ2dDQ0VVZ0FDZ0MyQUZCQUVjZ0FDZ0MzQUZCQUVkeGNRc0VBRUVBQ3lRQUFrQWdBRVVOQUNBQUlBRTJBdEFCSUFGRkRRQWdBQ0FBTFFCY1FRaHlPZ0JjQ3d1UEFRRUVmeUFBS0FJWUlnRUVRQ0FBS0FJY0lnTkJORzRoQkNBRFFUUlBCSDlCQUNFREEwQWdBU2dDQUNJQ0JFQWdBa0VCYXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lDQkVBZ0FoQVVJQUZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFVSUFGQkFEWUNDQXNnQVVFMGFpRUJJQU5CQVdvaUF5QUVSdzBBQ3lBQUtBSVlCU0FCQ3hBVUlBQkJBRFlDR0FzTGlBRUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSUNRY1FBYmlFRUlBSkJ4QUJQQkg5QkFDRUNBMEFnQVNnQ0FDSURCRUFnQXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lEQkVBZ0F4QVVJQUZCQURZQ0JBc2dBU2dDUEJBVUlBRkJBRFlDUENBQlFjUUFhaUVCSUFKQkFXb2lBaUFFUncwQUN5QUFLQUlZQlNBQkN4QVVJQUJCQURZQ0dBc0xQd0VCZnlBQUJFQWdBQ2dDZENJQkJFQWdBUkFVSUFCQkFEWUNkQXNnQUNnQ2VDSUJCRUFnQVJBVUlBQkJBRFlDZUFzZ0FDZ0NsQUVRRkNBQUVCUUxDOFNaQlFSRmZ3SjdCSDRCZlNNQVFlQUFheUltSkFBZ0FDZ0NDQ0VhQWtBQ1FBSkFBa0FnQUNnQ0FFVUVRQ0FhSUJvb0FoQWdHaWdDQ0dzZ0dpZ0NGQ0FhS0FJTWEyeEJBblFpQmhBY0lnVTJBandnQlVVRVFDQUFLQUlrR2lBQUtBSWdRUUZCc2o1QkFCQVRJQUFvQWlRYUlBQkJIR29oQlF3REN5QUZRUUFnQmhBWkdnd0JDeUFhS0FJOElnVkZEUUFnQlJBVUlCcEJBRFlDUEFzZ0FDZ0NFQ0l5S0FJY0lESW9BaGhCbUFGc2FpSUZRWmdCYXlnQ0FDRTJJQVZCa0FGcktBSUFJVGNnQUNnQ0ZDRXZJQUFvQWd3aE1DQUFLQUlFSVRnZ0FDZ0NIQ2dDQUVVTkFpQUFRUnhxSVFVQ1FBSi9RUUFnQVNnQ0JDSUhRUUJNRFFBYUlBRW9BZ0FoQ0VFQUlRWUNRQU5BSUFnZ0JrRU1iR29pQkNnQ0FFVU5BU0FHUVFGcUlnWWdCMGNOQUF0QkFBd0JDeUFFS0FJRUN5SUREUUJCQVVHY0FSQVhJZ05GQkVBZ0FDZ0NJRUVCUVlReFFRQVFFd3dDQ3lBRFFRQTJBb3dCQW45QkFDRUdRUUFnQVNnQ0JDSUhRZi8vLy84SFJnMEFHaUFCS0FJQUlRZ2dCMEVBU2dSQUEwQWdDQ0FHUVF4c2FpSUVLQUlBUlFSQUlBUW9BZ2dpQndSL0lBUW9BZ1FnQnhFQ0FDQUJLQUlBQlNBSUN5QUdRUXhzYWlJQlFRODJBZ2dnQVNBRE5nSUVRUUVNQXdzZ0JrRUJhaUlHSUFkSERRQUxDMEVBSUFnZ0IwRU1iRUVNYWhBYklnWkZEUUFhSUFFZ0JqWUNBQ0FHSUFFb0FnUWlCMEVNYkdvaUJrRVBOZ0lJSUFZZ0F6WUNCQ0FHUVFBMkFnQWdBU0FIUVFGcU5nSUVRUUVMRFFBZ0FDZ0NJRUVCUWUzQUFFRUFFQk1nQXlnQ2RDSUJCRUFnQVJBVUlBTkJBRFlDZEFzZ0F5Z0NlQ0lCQkVBZ0FSQVVJQU5CQURZQ2VBc2dBeWdDbEFFUUZDQURFQlFNQVFzZ0F5QUFLQUlZTmdLUUFTQUFLQUlvSVNzZ0FDZ0NKQ0VpSUFBb0FpQWhIU0F2S0FLb0JpRVRJREFvQWhBaEFRSkFBa0FnTHlnQ0VDSVhRY0FBY1FSQUlCY2hDaU1BUWJBQ2F5SVFKQUFDUUNBVEJFQWdJZ1JBSUIxQkFVSHVHRUVBRUJNTUFnc2dIVUVCUWU0WVFRQVFFd3dCQ3lBREtBSjBJUUlDUUFKQUlCb29BaFFnR2lnQ0RHc2lCaUFhS0FJUUlCb29BZ2hySWdsc0lnRWdBeWdDaEFGTEJFQWdBaEFVSUFNZ0FVRUNkQ0lURUJ3aUFqWUNkQ0FDUlFSQVFRQWhBZ3dFQ3lBRElBRTJBb1FCREFFTElBSkZEUUVnQVVFQ2RDRVRDeUFDUVFBZ0V4QVpHZ3NnQXlnQ2VDRUNBa0FnQXlnQ2lBRkJ6eFJMRFFBZ0FoQVVJQU5Cd05JQUVCd2lBallDZUNBQ0RRQkJBQ0VDREFFTElBTkIwQlEyQW9nQklBSkJBRUhBMGdBUUdSb2dBeUFHTmdLQUFTQURJQWsyQW53Z0dpZ0NHQ0lFUlFSQVFRRWhBZ3dCQ3lBYUtBSWNJUTFCQVNFQ0FrQUNRQUpBQWtBQ1FDQWFLQUkwSWdFRVFDQWFLQUlFSVFoQkFDRUNRUUFoQ1FKQUlBRkJCRThFUUNBQlFYeHhJUWxCQUNFSEEwQWdDQ0FIUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0IwRUVhaUlISUFsSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFJZ0FTQUpSZzBCQ3dOQUlBZ2dDVUVEZEdvb0FnUWdBbW9oQWlBSlFRRnFJZ2tnQVVjTkFBc0xJQUZCQVVZRVFDQURLQUtRQVVVTkJRc2dBaUFES0FLWUFVME5BU0FES0FLVUFTQUNFQnNpRXcwQ1FRQWhBZ3dHQ3lBREtBS1FBVVVOQlFzZ0F5Z0NsQUVpRXcwQlFRQWhBZ3dFQ3lBRElBSTJBcGdCSUFNZ0V6WUNsQUVMSUJvb0FqUkZCRUJCQUNFQ0RBSUxJQm9vQWdRaEIwRUFJUUpCQUNFSkEwQWdBaUFUYWlBSElBbEJBM1FpQVdvaUJpZ0NBQ0FHS0FJRUVCWWFJQm9vQWdRaUJ5QUJhaWdDQkNBQ2FpRUNJQWxCQVdvaUNTQWFLQUkwU1EwQUN3d0JDeUFhS0FJRUtBSUFJUk1MUVFBaENVRUFJUWNDZjBFQUlCb29BaWdpQVVVTkFCb2dHaWdDQUNJR0tBSUlJUWRCQUNBQlFRRkdEUUFhSUFZb0FpQUxJUUVnQkNBTmF3SkFJQUVnQjJvaUIwVUVRRUVBSVFSQkFDRUlEQUVMUVFFaENTQWFLQUlBSWdFb0FnQWhCRUVBSVFnZ0IwRUJSZ1JBUVFBaENRd0JDeUFCS0FJWUlRZ0xRUUZxSVJZZ0F5Z0NkQ0VMSUFNb0FuZ2hEaUFhS0FJTUlSVWdHaWdDRkNFUElCb29BZ2doR1NBYUtBSVFJU3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ1VVTkFDQUlEUUFnSWtVTkFTQWRRUUpCa2RRQVFRQVFFMEVCSVFjTUFnc2dCMEVFU1EwQklDSUVRQ0FRSUFjMkFuQWdIVUVCUWRIS0FDQVFRZkFBYWhBVERBZ0xJQkFnQnpZQ1lDQWRRUUZCMGNvQUlCQkI0QUJxRUJOQkFDRUNEQWdMSUIxQkFrR1IxQUJCQUJBVElCb29BaGdpQ1VFZVN3MEJRUUVoR3lBSklCWlBEUU1NQlFzZ0dpZ0NHQ0lCSWdsQkhrME5BU0FpUlEwQUlCQWdBVFlDSUNBZFFRRkI2ZDhBSUJCQklHb1FFd3dGQ3lBUUlBazJBZ0FnSFVFQlFlbmZBQ0FRRUJOQkFDRUNEQVVMSUFrZ0Zra05BU0FIUVFKSkJFQWdCeUViREFFTElBa2dGa2NFUUNBSElSc01BUXRCQVNFYlFkRE5BUzBBQUEwQUlDSkZCRUJCME0wQlFRRTZBQUFnRUNBSE5nSkFJQjFCQWtHVzBBQWdFRUZBYXhBVERBRUxRZEROQVMwQUFFVUVRRUhRelFGQkFUb0FBQ0FRSUFjMkFsQWdIVUVDUVpiUUFDQVFRZEFBYWhBVEN3c0NRQUpBSUFSQkFra05BQ0FDSUFSSkRRQWdCQ0FJYWlBQ1RRMEJDeUFpQkVCQkFDRUNJQjFCQVVHWHlnQkJBQkFUREFVTFFRQWhBaUFkUVFGQmw4b0FRUUFRRXd3RUN3SkFBa0FnQkNBVGFpSVlRUUZyTFFBQUlnRkJCSFFnR0VFQ2F5MEFBRUVQY1hJaUJrRUNTUTBBSUFGQi93RkdEUUFnQkNBR1RnMEJDeUFpQkVCQkFDRUNJQjFCQVVHazl3QkJBQkFUREFVTFFRQWhBaUFkUVFGQnBQY0FRUUFRRXd3RUN5QWFLQUljSVNRQ2Z5QVFRUUEyQXBBQ0lCQkJBRFlDbUFJZ0VFSUFOd09JQWlBUVFnQTNBNmdDSUJCQ0FEY0NuQUlnRUNBR1FRRnJJZ2MyQXBRQ0lCQWdCQ0FUYWlBR2F5SUpOZ0tBQWlBSk1RQUFJVWxCQ0NFQklCQkJDRFlDa0FJZ0VDQUpRUUZxSWdJMkFvQUNJQkFnQmtFQ2F5SU5OZ0tVQWlBUUlFbENENFFnU1NBSFFRRkdHeUpKTndPSUFpQVFJRWxDL3dGUk5nS1lBZ0pBSUFsQkEzRWlCMEVEUmcwQUFrQWdTVUwvQVZJTkFDQUNMUUFBUVk4QlRRMEFRUUFNQWd0Qy93RWhTaUFHUVFOUEJFQWdBakVBQUNGS0N5QVFJQVpCQTJzaUZ6WUNsQUlnRUVFUFFSQWdTVUwvQVZFaUZCc2lBVFlDa0FJZ0VDQUNJQVpCQWt0cUlnazJBb0FDSUJBZ1NrSVBoQ0JLSUExQkFVWWJJa3BDL3dGUk5nS1lBaUFRSUVsQ0IwSUlJQlFiaGlCS2hDSkpOd09JQWlBSFFRSkdEUUJDL3dFaFN3SkFJRXBDL3dGU0RRQWdDUzBBQUVHUEFVME5BRUVBREFJTElBWkJCRThFUUNBSk1RQUFJVXNMSUJBZ0JrRUVheUlDTmdLVUFpQVFJQWtnQmtFRFMyb2lDVFlDZ0FJZ0VDQkxRZytFSUVzZ0YwRUJSaHNpUzBML0FWRTJBcGdDSUJBZ0FVRUhRUWdnU2tML0FWRWlEUnRxSWdFMkFwQUNJQkFnU1VJSFFnZ2dEUnVHSUV1RUlrazNBNGdDSUFkQkFVWU5BQUpBSUV0Qy93RlNEUUFnQ1MwQUFFR1BBVTBOQUVFQURBSUxRdjhCSVVvZ0JrRUZUd1JBSUFreEFBQWhTZ3NnRUNBR1FRVnJOZ0tVQWlBUUlBa2dCa0VFUzJvMkFvQUNJQkFnU2tJUGhDQktJQUpCQVVZYklrcEMvd0ZSTmdLWUFpQVFJQUZCQjBFSUlFdEMvd0ZSSWdrYmFpSUJOZ0tRQWlBUUlFbENCMElJSUFrYmhpQktoQ0pKTndPSUFnc2dFQ0JKUWNBQUlBRnJyWVkzQTRnQ1FRRUxSUVJBSUNJRVFFRUFJUUlnSFVFQlFhblpBRUVBRUJNTUJRdEJBQ0VDSUIxQkFVR3AyUUJCQUJBVERBUUxJQ3NnR1dzaEVpQVFJQVlpRFVFQ2F5SU1OZ0wwQVNBUUlBUWdFMm9pRVVFRGF5SUdOZ0xnQVNBUUlCRkJBbXN0QUFBaUFVR1BBVXNpQnpZQytBRWdFQ0FCUVFSMnJTSkpOd1BvQVNBUVFRTkJCQ0JKUWdlRFFnZFJHeUlVTmdMd0FTQUdRUU54UVFGcUlnRWdEQ0FCSUF4Skd5RVhBa0FDUUNBTVJRUkFRUUFoQWlBUUlBd2dGMnMyQXZRQkRBRUxJQkFnRVVFRWF5SUJOZ0xnQVNBUUlBWXRBQUFpQWtHUEFVc2lDVFlDK0FFZ0VDQUNyU0pLUXY4Qmd5QVVyWVlnU1lRaVNUY0Q2QUVnRUVFSFFRZ2dTa0wvQUlOQy93QlJHMEVJSUFjYklCUnFJaFEyQXZBQkFrQWdGMEVDU1FSQUlBa2hCd3dCQ3lBUUlCRkJCV3NpQ1RZQzRBRWdFQ0FCTFFBQUlnWkJqd0ZMSWdjMkF2Z0JJQkFnQnEwaVNrTC9BWU1nRksyR0lFbUVJa2szQStnQklCQkJDRUVIUVFnZ1NrTC9BSU5DL3dCUkd5QUNRWThCVFJzZ0ZHb2lGRFlDOEFFZ0YwRUNSZ1JBSUFFaEJpQUpJUUVNQVFzZ0VDQVJRUVpySWdJMkF1QUJJQkFnQ1MwQUFDSUJJaUZCandGTElnYzJBdmdCSUJBZ0FhMGlTa0wvQVlNZ0ZLMkdJRW1FSWtrM0ErZ0JJQkJCQ0VFSFFRZ2dTa0wvQUlOQy93QlJHeUFHUVk4QlRSc2dGR29pRkRZQzhBRWdGMEVEUmdSQUlBa2hCaUFDSVFFTUFRc2dFQ0FSUVFkcklnRTJBdUFCSUJBZ0FpMEFBQ0lHUVk4QlN5SUhOZ0w0QVNBUUlBYXRJa3BDL3dHRElCU3RoaUJKaENKSk53UG9BU0FRUVFoQkIwRUlJRXBDL3dDRFF2OEFVUnNnSVVHUEFVMGJJQlJxSWhRMkF2QUJJQUloQmdzZ0VDQU1JQmRySWdrMkF2UUJJQlJCSUVzTkFTQUpRUVJPQkVBZ0JrRUVheWdDQUNFQ0lCQWdCa0VGYXpZQzRBRWdFQ0FKUVFSck5nTDBBUXdCQ3lBSlFRQk1CRUJCQUNFQ0RBRUxJQWxCQVhFQ1FDQVhJQTFCQTJ0R0JFQkJHQ0VYUVFBaEFnd0JDeUFKUWY3Ly8vOEhjU0VoUVJnaEYwRUFJUUlnQVNFR1FRQWhEQU5BSUJBZ0JrRUJheUlnTmdMZ0FTQUdMUUFBSUJBZ0JrRUNheUlCTmdMZ0FTQVFJQWxCQVdzMkF2UUJJQ0F0QUFBaEJpQVFJQWxCQW1zaUNUWUM5QUVnRjNRZ0FuSWdCaUFYUVFocmRISWhBaUFYUVJCcklSY2dBU0VHSUF4QkFtb2lEQ0FoUncwQUN3dEZEUUFnRUNBQlFRRnJOZ0xnQVNBQkxRQUFJQkFnQ1VFQmF6WUM5QUVnRjNRZ0FuSWhBZ3NnRUNBQ1FmOEJjU0lCUVk4QlN6WUMrQUVnRUVFSFFRZ2dBa0dBZ0lENEIzRkJnSUNBK0FkR0cwRUlJQWNiSWdaQkNFRUhRUWdnQWtHQWdQd0RjVUdBZ1B3RFJoc2dBa0gvLy8vL2VFMGJhaUlKUVFoQkIwRUlJQUpCZ1A0QmNVR0EvZ0ZHR3lBQ1FSQjJRZjhCY1NJSFFZOEJUUnRxSWhkQkNFRUhRUWdnQWtIL0FIRkIvd0JHR3lBQ1FRaDJRZjhCY1NJTVFZOEJUUnNnRkdwcU5nTHdBU0FRSUFjZ0JuUWdBa0VZZG5JZ0RDQUpkSElnQVNBWGRIS3RJQlN0aGlCSmhEY0Q2QUVMSUJCQndBRnFJQk1nQkNBTmEwSC9BUkJrQW45QkFDQWJRUUpKRFFBYUlCQkJvQUZxSUJnZ0NFRUFFR1JCQUNBYlFRSkdEUUFhUWdBaFNVSUFJVXNnRUVFQk5nS1lBU0FRUVFBMkFwQUJJQkJDQURjRGlBRWdFQ0FJUVFGcklnRTJBcFFCSUJBZ0JDQVRhaUFJYWlJR1FRRnJJZ2syQW9BQklBbEJBM0VoRndKQUlBaEJBRXdFUUNBSklRWU1BUXNnRUNBR1FRSnJJZ1kyQW9BQklBa3hBQUFoU1FzZ0VDQkpOd09JQVNBUUlFbENqd0ZXSWhNMkFwZ0JJQkJCQjBFSUlFbEMvd0NEUXY4QVVSc2lEVFlDa0FFQ1FDQVhSUTBBSUJBZ0NFRUNheUlITmdLVUFRSkFJQWhCQWtnRVFDQUdJUUlNQVFzZ0VDQUdRUUZySWdJMkFvQUJJQVl4QUFBaFN3c2dFQ0JMUW84QlZpSVROZ0tZQVNBUUlFc2dEYTJHSUVtRUlrbzNBNGdCSUJCQkNFRUhRUWdnUzBML0FJTkMvd0JSR3lCSlFvOEJXQnNnRFdvaURUWUNrQUVnRjBFQlJnUkFJQUloQmlCS0lVa2dBU0VJSUFjaEFRd0JDeUFRSUFoQkEyc2lCRFlDbEFFQ1FDQUlRUU5JQkVBZ0FpRUpEQUVMSUJBZ0FrRUJheUlKTmdLQUFTQUNNUUFBSVV3TElCQWdURUtQQVZZaUV6WUNtQUVnRUNCTUlBMnRoaUJLaENKSk53T0lBU0FRUVFoQkIwRUlJRXhDL3dDRFF2OEFVUnNnUzBLUEFWZ2JJQTFxSWcwMkFwQUJJQmRCQWtZRVFDQUpJUVlnQnlFSUlBUWhBUXdCQ3lBUUlBaEJCR3NpQVRZQ2xBRkNBQ0ZMQWtBZ0NFRUVTQVJBSUFraEJnd0JDeUFRSUFsQkFXc2lCallDZ0FFZ0NURUFBQ0ZMQ3lBUUlFdENqd0ZXSWhNMkFwZ0JJQkFnU3lBTnJZWWdTWVFpU1RjRGlBRWdFRUVJUVFkQkNDQkxRdjhBZzBML0FGRWJJRXhDandGWUd5QU5haUlOTmdLUUFTQUVJUWdMSUExQklFMEVRQUpBSUFoQkJVNEVRQ0FHUVFOcktBSUFJUUlnRUNBSVFRVnJOZ0tVQVNBUUlBWkJCR3MyQW9BQkRBRUxRUUFoQWlBSVFRSklEUUJCR0NFSUEwQWdFQ0FHUVFGcklnazJBb0FCSUFZdEFBQWdFQ0FCUVFGcklnYzJBcFFCSUFoMElBSnlJUUlnQVVFQlN5QUpJUVlnQ0VFSWF5RUlJQWNoQVEwQUN3c2dFQ0FDUWY4QmNTSUJRWThCU3pZQ21BRWdFRUVIUVFnZ0FrR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlCTWJJZ1pCQ0VFSFFRZ2dBa0dBZ1B3RGNVR0FnUHdEUmhzZ0FrSC8vLy8vZUUwYmFpSUpRUWhCQjBFSUlBSkJnUDRCY1VHQS9nRkdHeUFDUVJCMlFmOEJjU0lIUVk4QlRSdHFJZ2hCQ0VFSFFRZ2dBa0gvQUhGQi93QkdHeUFDUVFoMlFmOEJjU0lFUVk4QlRSc2dEV3BxTmdLUUFTQVFJQWNnQm5RZ0FrRVlkbklnQkNBSmRISWdBU0FJZEhLdElBMnRoaUJKaERjRGlBRUxRUUVMSVRNZ0R5QVZheUVoSUJaQkFXb2hMQ0FPUVFBNkFNQVFJQTVCd0JCcUlSWWdFRUdBQW1vUUxTRUVJQkpCQUVvRVFDQWtRUUZySVJFZ0RpRUdJQlloQjBFQUlSTWdDeUVCUVFBaEZ3TkFJQmNoRFNBVFFRaDBJQkJCNEFGcUVEVkIvd0J4UVFGMGNrSGdnUUZxTHdFQUlRa0NRQ0FURFFBZ0NVRUFJQVJCQW1zaUFrRi9SaHNoQ1NBRVFRRktCRUFnQWlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnRUNrRDZBRWdFQ2dDOEFFZ0JpQUdLQUlBSUFsQkJIWWlGVUVEY1NBSlFRSjJRVEJ4Y2lBamRISWlGRFlDQUNBSlFRVjJRUWR4SUFsQkVIRWlEMEVFZG5JaEV5QUpRUWR4SWdKcklSY2dBcTJJSWttbklRaEJBQ0VDSUJJZ0RVRUNja29FUUNBVFFRaDBJQWhCL3dCeFFRRjBja0hnZ1FGcUx3RUFJUUlDUUNBVERRQWdBa0VBSUFSQkFtc2lDRUYvUmhzaEFpQUVRUUZLQkVBZ0NDRUVEQUVMSUJCQmdBSnFFQzBoQkFzZ0FrRUVka0VCY1NBQ1FRVjJRUWR4Y2lFVElCY2dBa0VIY1NJSWF5RVhJRWtnQ0sySUlrbW5JUWdMSUFZZ0FrRUNkRUdBQm5FZ0FrRXdjWElnSTBFRWFuUWdGSEkyQWdBQ1FDQUNRUUoyUVFKeElBbEJBM1pCQVhGeUloUkJBMGNOQUVFRVFRTWdCRUVDYXlJTVFYOUdHeUVVSUFSQkFVb0VRQ0FNSVFRTUFRc2dFRUdBQW1vUUxTRUVDd0ovSUJSRkJFQWdFRUtCZ0lDQUVEY0NlRUVBREFFTElCUkJBazBFUUNBUVFRRWdDRUVIY1VHVW9nRnFMUUFBSWd4QkJYWkJmeUFNUVFKMlFRZHhJaGgwUVg5eklBZ2dERUVEY1NJSWRuRnFRUUZxSWd3Z0ZFRUJSaUlVR3pZQ2ZDQVFJQXhCQVNBVUd6WUNlQ0FJSUJocURBRUxJQWdnQ0VFSGNVR1VvZ0ZxTFFBQUlneEJBM0VpR0hZaENDQVVRUU5HQkVBZ0RFRUZka0VCYWlFVUlCaEJBMFlFUUNBUUlBaEJBWEZCQW5JMkFud2dFQ0FVUVg4Z0RFRUNka0VIY1NJTWRFRi9jeUFJUVFGMmNXbzJBbmdnREVFRWFnd0NDeUFRSUJRZ0NDQUlRUWR4UVpTaUFXb3RBQUFpQ0VFRGNTSWdkaUlsUVg4Z0RFRUNka0VIY1NJTWRFRi9jM0ZxTmdKNElCQkJmeUFJUVFKMlFRZHhJaFIwUVg5eklDVWdESFp4SUFoQkJYWnFRUUZxTmdKOElBd2dHR29nSUdvZ0ZHb01BUXNnRUNBSUlBaEJCM0ZCbEtJQmFpMEFBQ0lJUVFOeElpQjJJaVZCZnlBTVFRSjJRUWR4SWhSMFFYOXpjU0FNUVFWMmFrRURhallDZUNBUVFYOGdDRUVDZGtFSGNTSU1kRUYvY3lBbElCUjJjU0FJUVFWMmFrRURhallDZkNBWUlDQnFJQlJxSUF4cUN5RUlBa0FnTENBUUtBSjRJaFJQQkVBZ0VDZ0NmQ0lNSUN4TkRRRUxJQ0lFUUVFQUlRSWdIVUVCUWVmNkFFRUFFQk1NQnd0QkFDRUNJQjFCQVVIbitnQkJBQkFUREFZTElCQWdGeUFJYXpZQzhBRWdFQ0JKSUFpdGlEY0Q2QUVnQWtId0FYRWdGVUVQY1hKQi93RkIvd0VnRFVFRWFpSVhJQkpyUVFGMGRpQVNJQmRPR3lJSUlBaEIxUUJ4SUNGQkFVb2JJZ2hCZjNOeEJFQWdJZ1JBUVFBaEFpQWRRUUZCL2Q0QVFRQVFFd3dIQzBFQUlRSWdIVUVCUWYzZUFFRUFFQk1NQmdzQ1FBSkFJQThFUUNBUVFjQUJhaEFmSVJVZ0VDQVFLQUxRQVNBVUlBbEJFM1JCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRlVGL0lCaDBRWDl6Y1NBSlFRaDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVZRUjkwY2lFWURBRUxRUUFoR0NBSVFRRnhSUTBCQ3lBQklCZzJBZ0FMQWtBZ0NVRWdjUVJBSUJCQndBRnFFQjhoRlNBUUlCQW9BdEFCSUJRZ0NVRVNkRUVmZFdvaUdHczJBdEFCSUJBZ0VDa0R5QUVnR0sySU53UElBU0FCSUJKQkFuUnFJQlZCZnlBWWRFRi9jM0VnQ1VFSmRrRUJjU0FZZEhKQkFYSWlHRUVDYWlBUmRDQVZRUjkwY2pZQ0FDQUhRU0FnR0dkckloZ2dCeTBBQUVIL0FIRWlGU0FWSUJoSkcwR0FBWEk2QUFBTUFRc2dDRUVDY1VVTkFDQUJJQkpCQW5ScVFRQTJBZ0FMSUFGQkJHb2hGUUpBQWtBZ0NVSEFBSEVFUUNBUVFjQUJhaEFmSVE4Z0VDQVFLQUxRQVNBVUlBbEJFWFJCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRDBGL0lCaDBRWDl6Y1NBSlFRcDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVBRUjkwY2lFWURBRUxRUUFoR0NBSVFRUnhSUTBCQ3lBVklCZzJBZ0FMSUFkQkFEb0FBUUpBSUFsQmdBRnhCRUFnRUVIQUFXb1FIeUVZSUJBZ0VDZ0MwQUVnRkNBSlFSQjBRUjkxYWlJVWF6WUMwQUVnRUNBUUtRUElBU0FVcllnM0E4Z0JJQlVnRWtFQ2RHb2dHRUYvSUJSMFFYOXpjU0FKUVF0MlFRRnhJQlIwY2tFQmNpSUpRUUpxSUJGMElCaEJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUJEQUVMSUFoQkNIRkZEUUFnRlNBU1FRSjBha0VBTmdJQUN5QUJRUWhxSVFrQ1FBSkFJQUpCRUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRTNSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUWgyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRUkJ4UlEwQkN5QUpJQlEyQWdBTEFrQWdBa0VnY1FSQUlCQkJ3QUZxRUI4aEdDQVFJQkFvQXRBQklBd2dBa0VTZEVFZmRXb2lGR3MyQXRBQklCQWdFQ2tEeUFFZ0ZLMklOd1BJQVNBSklCSkJBblJxSUJoQmZ5QVVkRUYvYzNFZ0FrRUpka0VCY1NBVWRISkJBWElpQ1VFQ2FpQVJkQ0FZUVI5MGNqWUNBQ0FIUVNBZ0NXZHJJZ2tnQnkwQUFVSC9BSEVpRkNBSklCUkxHMEdBQVhJNkFBRU1BUXNnQ0VFZ2NVVU5BQ0FKSUJKQkFuUnFRUUEyQWdBTElBRkJER29oQ1FKQUFrQWdBa0hBQUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRVhSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUXAyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRY0FBY1VVTkFRc2dDU0FVTmdJQUN5QUhRUUpxSWdkQkFEb0FBQUpBSUFKQmdBRnhCRUFnRUVIQUFXb1FIeUVVSUJBZ0VDZ0MwQUVnRENBQ1FSQjBRUjkxYWlJSWF6WUMwQUVnRUNBUUtRUElBU0FJcllnM0E4Z0JJQWtnRWtFQ2RHb2dGRUYvSUFoMFFYOXpjU0FDUVF0MlFRRnhJQWgwY2tFQmNpSUpRUUpxSUJGMElCUkJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUFEQUVMSUFoQmdBRkpEUUFnQ1NBU1FRSjBha0VBTmdJQUN5QWpRUkJ6SVNNZ0JpQU5RUVJ4YWlFR0lBRkJFR29oQVNBU0lCZEtEUUFMQ3lBS1FRaHhJVGtnRGtHd0RHb2hLQ0FPUWFBSWFpRXBJQTVCa0FScUlTVWdJVUVEVGdSQUlCSkJER3doTVNBU1FRTjBJVG9nSkVFQmF5RWdRUU1nSkVFQ2F5SUJkQ0V0UVFFZ0FYUWhMaUFTUVFkcVFRRjJRZnovLy84SGNVRUVhaUU5SUNzZ0dVRi9jMm9pQVVFRGRpSUdRUUowSWo1QkJHb2hPeUFHUVFGcUlqOUIvUC8vL3dOeEloOUJBblFoUENBZlFRTjBJUlVnQVVFWVNTRkFRUUloREFOQUlBd2hFU0FXTFFBQUlSZ2dGa0VBT2dBQUlDTkJiM0ZCQW5NaEl3SkFJQkpCQUV3RVFDQU1RUUpxSVF3TUFRc2dKU0FPSUJGQkJIRWJJUk1nRVVFQ2FpRU1JQXNnRVNBU2JFRUNkR29oQjBFQUlSUWdGaUVCUVFBaEZ3TkFJQmNoRFNBQkxRQUJRUVYyUVFSeElCUWdHRUgvQVhFaUdFRUhkbkp5SWdaQkNIUWdFRUhnQVdvUU5VSC9BSEZCQVhSeVFlQ1JBV292QVFBaENRSkFJQVlOQUNBSlFRQWdCRUVDYXlJR1FYOUdHeUVKSUFSQkFVb0VRQ0FHSVFRTUFRc2dFRUdBQW1vUUxTRUVDeUFRS1FQb0FTQVFLQUx3QVNBVElCTW9BZ0FnQ1VFRWRrRURjU0FKUVFKMlFUQnhjaUFqZEhJaUNEWUNBQ0FKUWNBQWNTSWNRUVYySUFsQmdBRnhJaXBCQm5aeUlSUWdDVUVIY1NJR2F5RUtJQWF0aUNKSnB5RVhRUUFoQWlBU0lBMUJBbkpLQkVBZ0ZDQUJMUUFDUVFWMlFRUnhJQUV0QUFGQkIzWnljaUlHUVFoMElCZEIvd0J4UVFGMGNrSGdrUUZxTHdFQUlRSUNRQ0FHRFFBZ0FrRUFJQVJCQW1zaUJrRi9SaHNoQWlBRVFRRktCRUFnQmlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnQ2lBQ1FRZHhJZ1pySVFvZ0FrRUZkaUFDUVFaMmNrRUNjU0VVSUVrZ0JxMklJa21uSVJjTElCTWdBa0VDZEVHQUJuRWdBa0V3Y1hJZ0kwRUVhblFnQ0hJMkFnQkJBU0VJUVFFaEJnSkFBa0FDUUNBQ1FRSjJRUUp4SUFsQkEzWkJBWEZ5SWc4T0JBSUFBQUVBQzBFQklCZEJCM0ZCbEtJQmFpMEFBQ0lHUVFWMlFYOGdCa0VDZGtFSGNTSWVkRUYvY3lBWElBWkJBM0VpRjNaeGFrRUJhaUlHSUE5QkFVWWlEeHNoQ0NBR1FRRWdEeHNoQmlBWElCNXFJUThNQVFzZ0Z5QVhRUWR4UVpTaUFXb3RBQUFpQmtFRGNTSVhkaUllUVFkeFFaU2lBV290QUFBaUNFRURjU0luSUJkcUlBWkJBblpCQjNFaUYyb2dDRUVDZGtFSGNTSTBhaUVQSUI0Z0ozWWlIa0YvSUJkMFFYOXpjU0FHUVFWMmFrRUJhaUVHUVg4Z05IUkJmM01nSGlBWGRuRWdDRUVGZG1wQkFXb2hDQXNnRUNBS0lBOXJOZ0x3QVNBUUlFa2dENjJJTndQb0FTQUpRZkFCY1NJWElCZEJBV3R4QkVBZ0JpQVlRZjhBY1NJS0lBRXRBQUZCL3dCeEloZ2dDaUFZU3hzaUNrRUNheUlZUVFBZ0NpQVlUeHRxSVFZTElBSkI4QUZ4SWdvZ0NrRUJhM0VFUUNBSUlBRXRBQUZCL3dCeEloZ2dBUzBBQWtIL0FIRWlEeUFQSUJoSkd5SVlRUUpyUVFBZ0dFRUNTeHRxSVFnTElBWWdMRTBnQ0NBc1RYRkZCRUFnSWdSQVFRQWhBaUFkUVFGQnkvc0FRUUFRRXd3SkMwRUFJUUlnSFVFQlFjdjdBRUVBRUJNTUNBc2dBUzBBQWlFWUlBRkJBRHNBQVNBS0lCZEJCSFp5UWY4QlFmOEJJQTFCQkdvaUZ5QVNhMEVCZEhZZ0VpQVhUaHNpQ2tIVkFIRWdDaUFNSUNGS0d5SVBRWDl6Y1FSQUlDSUVRRUVBSVFJZ0hVRUJRZjNlQUVFQUVCTU1DUXRCQUNFQ0lCMUJBVUg5M2dCQkFCQVREQWdMQWtBQ1FDQUpRUkJ4QkVBZ0VFSEFBV29RSHlFZUlCQWdFQ2dDMEFFZ0JpQUpRUk4wUVI5MWFpSUthellDMEFFZ0VDQVFLUVBJQVNBS3JZZzNBOGdCSUI1QmZ5QUtkRUYvYzNFZ0NVRUlka0VCY1NBS2RISkJBWEpCQW1vZ0lIUWdIa0VmZEhJaENnd0JDMEVBSVFvZ0QwRUJjVVVOQVFzZ0J5QUtOZ0lBQ3dKQUlBbEJJSEVFUUNBUVFjQUJhaEFmSVI0Z0VDQVFLQUxRQVNBR0lBbEJFblJCSDNWcUlncHJOZ0xRQVNBUUlCQXBBOGdCSUFxdGlEY0R5QUVnQnlBU1FRSjBhaUFlUVg4Z0NuUkJmM054SUFsQkNYWkJBWEVnQ25SeVFRRnlJZ3BCQW1vZ0lIUWdIa0VmZEhJMkFnQWdBVUVnSUFwbmF5SUtJQUV0QUFCQi93QnhJaDRnQ2lBZVN4dEJnQUZ5T2dBQURBRUxJQTlCQW5GRkRRQWdCeUFTUVFKMGFrRUFOZ0lBQ3lBSFFRUnFJUW9DUUFKQUlCd0VRQ0FRUWNBQmFoQWZJUndnRUNBUUtBTFFBU0FHSUFsQkVYUkJIM1ZxSWg1ck5nTFFBU0FRSUJBcEE4Z0JJQjZ0aURjRHlBRWdIRUYvSUI1MFFYOXpjU0FKUVFwMlFRRnhJQjUwY2tFQmNrRUNhaUFnZENBY1FSOTBjaUVlREFFTFFRQWhIaUFQUVFSeFJRMEJDeUFLSUI0MkFnQUxBa0FnS2dSQUlCQkJ3QUZxRUI4aEhpQVFJQkFvQXRBQklBWWdDVUVRZEVFZmRXb2lCbXMyQXRBQklCQWdFQ2tEeUFFZ0JxMklOd1BJQVNBS0lCSkJBblJxSUI1QmZ5QUdkRUYvYzNFZ0NVRUxka0VCY1NBR2RISkJBWElpQmtFQ2FpQWdkQ0FlUVI5MGNqWUNBQ0FCUWFCL0lBWm5hem9BQVF3QkN5QVBRUWh4UlEwQUlBb2dFa0VDZEdwQkFEWUNBQXNnQjBFSWFpRUpBa0FDUUNBQ1FSQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSTjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFSWRrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBFUWNVVU5BUXNnQ1NBR05nSUFDd0pBSUFKQklIRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVuUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQ1haQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVRWdJQVpuYXlJR0lBRXRBQUZCL3dCeElna2dCaUFKU3h0QmdBRnlPZ0FCREFFTElBOUJJSEZGRFFBZ0NTQVNRUUowYWtFQU5nSUFDeUFIUVF4cUlRa0NRQUpBSUFKQndBQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSRjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFS2RrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBIQUFIRkZEUUVMSUFrZ0JqWUNBQXNnQVVFQ2FpRUJBa0FnQWtHQUFYRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVIUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQzNaQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVR2dmeUFHWjJzNkFBQU1BUXNnRDBHQUFVa05BQ0FKSUJKQkFuUnFRUUEyQWdBTElDTkJFSE1oSXlBVElBMUJCSEZxSVJNZ0IwRVFhaUVISUJJZ0Ywb05BQXNMQWtBZ0cwRUNTUTBBSUJGQkFuRkZEUUFnREVFRWNTRUdBa0FDZndKQUFrQWdNd1JBSUE0Z0pTQUdHeUVOUVFBaER5QVNRUUJNRFFFZ0N5QVJRUUpySUJKc1FRSjBhaUVYQTBBZ0VFR0FBV29RTlNFQ1FRQWhDU0FOS0FJQUlnY0VRQ0FYSUE5QkFuUnFJUWxCQUNFSVFROGhBUU5BQWtBZ0FTQUhjVVVOQUNBQlFaR2l4SWdCY1NJVElBZHhCRUFnQ1NBSktBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVCZENBSGNRUkFJQWtnRWtFQ2RHb2lDaUFLS0FJQUlBSkJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBSkJBWFloQWdzZ0UwRUNkQ0FIY1FSQUlBa2dPbW9pQ2lBS0tBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVEZENBSGNVVU5BQ0FKSURGcUloTWdFeWdDQUNBQ1FYOXpRUUZ4SUNCMGN5QXVjallDQUNBQ1FRRjJJUUlMSUFsQkJHb2hDU0FCUVFSMElRRWdDRUVCYWlJSVFRaEhEUUFMSUFkcElRa0xJQTFCQkdvaERTQVFJQkFvQXBBQklBbHJOZ0tRQVNBUUlCQXBBNGdCSUFtdGlEY0RpQUVnRDBFSWFpSVBJQkpJRFFBTEN5QXBJQ2dnQmhzaENpQU9JQ1VnQmhzaERTQUdSU0VQSUJKQkFFd05BMEVBSVFZZ1FBMEJJQW9nRFNBN2Fra2dEU0FLSUR0cUlnSkpjUTBCUVFBZ0NpSUpJQTBpQVNBK2FrRUlha2tnQVVFRWFpQUNTWEVOQWhvZ0FTQThhaUVCSUFrZ1BHb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQW9nQWtFQ2RDSUdhaUlISUFZZ0RXb2lCdjBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlBY2dSeUFHL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUI5SERRQUxJQjhnUDBZTkF5QVZJUVlnUi8wYkF3d0NDeUFHUlNFUElDa2dLQ0FHR3lFS0RBSUxJQW9oQ1NBTklRRkJBQXNoQWdOQUlBSkJISFloQnlBSklBRW9BZ0FpQWtFRWRpQUhJQUpCQkhSeWNpQUNjaUlITmdJQUlBa2dCeUFCS0FJRVFSeDBjaUlIUVFGMlFmZnUzYnNIY1NBSFFRRjBRZTdkdS9kK2NYSWdCM0lnQWtGL2MzRTJBZ0FnQ1VFRWFpRUpJQUZCQkdvaEFTQUdRUWhxSWdZZ0VrZ05BQXNMSUJGQkJra05BRUVBSVFoQkFDRVRJQTBoQ1NBcElDZ2dEeHNpSENFQ0lBNGdKU0FQR3lJWUlRRWdFa0VBU2dSQUEwQWdDVUVFYWlFSElBSW9BZ0FoRnlBSktBSUFJUVlnQWlBNUJIOGdGd1VnQmtFRWRDQVRRUngyY2lBR1FRUjJjaUFIS0FJQVFSeDBjaUFHY2tFRGRFR0lrYUxFZUhFZ0YzSUxJQUVvQWdCQmYzTnhOZ0lBSUFGQkJHb2hBU0FDUVFScUlRSWdCaUVUSUFjaENTQUlRUWhxSWdnZ0VrZ05BQXNnQ3lBUlFRWnJJQkpzUVFKMGFpRkJRUUFoSGlBWUlSTURRRUVBSVFjZ0hDZ0NBQ0lCQkVBZ0hrRUVjaUZDSUJJZ0htc2hRMEVBSVFKQkFDRVVBMEFnQWlBUVFhQUJhaEFmSVFJQ1FDQVVRUVJxSUVNZ0ZDQkNhaUFTU0JzaU5DQVVUQVJBUVFBaENRd0JDeUFUS0FJQVFYOXpJU29nUVNBVUlCNXlRUUowYWlFUFFRQWhDVUVQSUJRaUNFRUNkQ0pFZENJWElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSnlBQmNRUkFJQUpCQVhFRVFDQUhJQ2R5SVFkQk1pQUlRUUowZENBcWNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUNkQkFYUWlOWEVFUUNBQ1FRRnhCRUFnQnlBMWNpRUhJQUZCOUFBZ0NFRUNkSFFnS25GeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdKMEVDZENJMWNRUkFJQUpCQVhFRVFDQUhJRFZ5SVFjZ0FVSG9BU0FJUVFKMGRDQXFjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBblFRTjBJaWR4UlEwQUlBSkJBWEVFUUNBSElDZHlJUWNnQVVIQUFTQUlRUUowZENBcWNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBMFNBMEFDeUFISUVSMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRjNGRkRRQWdGMEdSb3NTSUFYRWlCaUFIY1FSQUlBOGdEeWdDQUNBQ1FSOTBjaUF0Y2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0R5QVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdMWEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUE4Z09tb2lDQ0FJS0FJQUlBSkJIM1J5SUMxeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdEeUF4YWlJR0lBWW9BZ0FnQWtFZmRISWdMWEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRjBFRWRDRVhJQTlCQkdvaER5QVVRUUZxSWhRZ05FZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFVVFRRnhSUTBBQ3lBY0lCd29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBVEtBSUVRWDl6Y1hJMkFnUUxJQk1vQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQjRFUUNBS1FRUnJJZ0lnQWlnQ0FDQU5RUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRFNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBTktBSUVRWDl6SUFaQkgzWnhjallDQkNBY1FRUnFJUndnRTBFRWFpRVRJQXBCQkdvaENpQU5RUVJxSVEwZ0hrRUlhaUllSUJKSURRQUxDeUFZUVFBZ1BSQVpHZ3NnRENBaFNBMEFDd3NDUUNBYlFRSkpEUUFDUUNBaFFRTnhRUUZySWhkQkFra2dNM0VFUUNBU1FRQk1EUUZCQVNBa1FRSnJkQ0VISUFzZ0lVSDgvLzhIY1NBU2JFRUNkR29oQ2lBbElBNGdJVUVFY1JzaEJDQVNRUXhzSVJzZ0VrRURkQ0VXSUNSQkFXc2hEVUVBSVJRRFFDQVFRWUFCYWhBMUlRSkJBQ0VKSUFRb0FnQWlCZ1JBSUFvZ0ZFRUNkR29oQ1VFUElRRkJBQ0VJQTBBQ1FDQUJJQVp4UlEwQUlBRkJrYUxFaUFGeEloTWdCbkVFUUNBSklBa29BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFGMElBWnhCRUFnQ1NBU1FRSjBhaUlkSUIwb0FnQWdBa0YvYzBFQmNTQU5kSE1nQjNJMkFnQWdBa0VCZGlFQ0N5QVRRUUowSUFaeEJFQWdDU0FXYWlJZElCMG9BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFOMElBWnhSUTBBSUFrZ0cyb2lFeUFUS0FJQUlBSkJmM05CQVhFZ0RYUnpJQWR5TmdJQUlBSkJBWFloQWdzZ0NVRUVhaUVKSUFGQkJIUWhBU0FJUVFGcUlnaEJDRWNOQUFzZ0Jta2hDUXNnQkVFRWFpRUVJQkFnRUNnQ2tBRWdDV3MyQXBBQklCQWdFQ2tEaUFFZ0NhMklOd09JQVNBVVFRaHFJaFFnRWtnTkFBc0xJQmRCQVVzTkFDQVNRUUJNRFFBZ0pTQU9JQ0ZCQkhFaUFSc2hCeUFvSUNrZ0FSc2hDRUVBSVFZQ2Z3SkFJQ3NnR1VGL2Myb2lBVUU0U1EwQUlBZ2dCeUFCUVFGMlFmei8vLzhIY1NJSlFRUnFJZ0pxU1NBSElBSWdDR29pQWtseERRQWdDQ0FISUFscVFRaHFTU0FIUVFScUlBSkpjUTBBSUFGQkEzWkJBV29pRFVIOC8vLy9BM0VpQkVFRGRDRUdJQWNnQkVFQ2RDSUphaUVCSUFnZ0NXb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQWdnQWtFQ2RDSVRhaUlYSUFjZ0Uyb2lFLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlCY2dSeUFUL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUFSSERRQUxJQVFnRFVZTkFpQkgvUnNEREFFTElBZ2hDU0FISVFGQkFBc2hBZ05BSUFKQkhIWWhCeUFKSUFFb0FnQWlBa0VFZGlBSElBSkJCSFJ5Y2lBQ2NpSUhOZ0lBSUFrZ0J5QUJLQUlFUVJ4MGNpSUhRUUYyUWZmdTNic0hjU0FIUVFGMFFlN2R1L2QrY1hJZ0IzSWdBa0YvYzNFMkFnQWdDVUVFYWlFSklBRkJCR29oQVNBR1FRaHFJZ1lnRWtnTkFBc0xJQ0VnSVVFQmFrRURjV3RCQTJ0QkFDQWhRUVpLR3lJRUlDRk9EUUFnRWtFTWJDRXNJQkpCQTNRaExVRURJQ1JCQW10MElTQWdLeUFaUVg5emFpSUJRUU4ySWdaQkFuUWlHVUVFYWlFZElBWkJBV29pSkVIOC8vLy9BM0VpSWtFQ2RDRVJJQ0pCQTNRaEV5QUJRUmhKSVNzZ0FVRVhTeUV1QTBBQ1FBSkFBa0FDUUFKL0FrQWdJU0FFYXlJQlFRRnJJZ1pCQTA4RVFFRi9JUlFnQVVFRlNBMEZJQkpCQUV3TkJpQWxJQTRnQkVFRWNTSUJHeUVOSUNnZ0tTQUJHeUVJSURrRVFFRUFJUUVnTGtVTkJDQU5JQWdnSFdwSklBMGdIV29nQ0V0eERRUWdEU0FSYWlFSklBZ2dFV29oQWdOQUlBZ2dBVUVDZENJR2FpSUhJQWY5QUFJQUlBWWdEV3I5QUFJQS9VLzlDd0lBSUFGQkJHb2lBU0FpUncwQUN5QVRJUUVnSWlBa1JnMEdEQVVMSUE0Z0pTQUJHeUVYUVFBaEJpQXJEUUVnQ0NBWElCMXFTU0FYSUFnZ0hXb2lBVWx4RFFFZ0NDQVhJQmxxUVFocVNTQVhRUVJxSUFGSmNRMEJJQWdnRFNBZGFra2dBU0FOUzNFTkFTQU5JQkZxSVFjZ0NDQVJhaUVKSUJFZ0Yyb2hBdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFRTkFJQWdnQVVFQ2RDSUdhaUlLSUFZZ0Yyb2lHLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ0cvMEFBZ1JCSFAyckFmMVFJRWo5VUVFRC9hc0IvUXlJaUlpSWlJaUlpSWlJaUlpSWlJaUkvVTRnQ3YwQUFnRDlVQ0FHSUExcS9RQUNBUDFQL1FzQ0FDQklJVWNnQVVFRWFpSUJJQ0pIRFFBTElDSWdKRVlOQlNBVElRWWdSLzBiQXd3Q0N5QUdRUUowUVp5aUFXb29BZ0FoRkF3RUN5QVhJUUlnQ0NFSklBMGhCMEVBQ3lFQkEwQWdBVUVjZGlFSUlBa2dDU2dDQUNBQ0tBSUFJZ0ZCQkhZZ0NDQUJRUVIwY25JZ0FpZ0NCRUVjZEhJZ0FYSkJBM1JCaUpHaXhIaHhjaUFIS0FJQVFYOXpjVFlDQUNBSFFRUnFJUWNnQ1VFRWFpRUpJQUpCQkdvaEFpQUdRUWhxSWdZZ0VrZ05BQXNNQWdzZ0NDRUNJQTBoQ1FzRFFDQUNJQUlvQWdBZ0NTZ0NBRUYvYzNFMkFnQWdDVUVFYWlFSklBSkJCR29oQWlBQlFRaHFJZ0VnRWtnTkFBc0xJQkpCQUV3TkFDQWxJQTRnQkVFRWNTSUJHeUVNSUNnZ0tTQUJHeUVZSUE0Z0pTQUJHeUVWSUNrZ0tDQUJHeUVLSUFzZ0JDQVNiRUVDZEdvaEtrRUFJUnNEUUVFQUlRY2dHQ2dDQUNBVWNTSUJCRUFnRzBFRWNpRW5JQklnRzJzaEgwRUFJUUpCQUNFTkEwQWdBaUFRUWFBQmFoQWZJUUlDUUNBTlFRUnFJQjhnRFNBbmFpQVNTQnNpSENBTlRBUkFRUUFoQ1F3QkN5QVVJQXdvQWdCQmYzTnhJU01nS2lBTklCdHlRUUowYWlFV1FRQWhDVUVQSUEwaUNFRUNkQ0l6ZENJUElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSGlBQmNRUkFJQUpCQVhFRVFDQUhJQjV5SVFkQk1pQUlRUUowZENBamNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUI1QkFYUWlNWEVFUUNBQ1FRRnhCRUFnQnlBeGNpRUhJQUZCOUFBZ0NFRUNkSFFnSTNGeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdIa0VDZENJeGNRUkFJQUpCQVhFRVFDQUhJREZ5SVFjZ0FVSG9BU0FJUVFKMGRDQWpjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBZVFRTjBJaDV4UlEwQUlBSkJBWEVFUUNBSElCNXlJUWNnQVVIQUFTQUlRUUowZENBamNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBY1NBMEFDeUFISUROMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRDNGRkRRQWdEMEdSb3NTSUFYRWlCaUFIY1FSQUlCWWdGaWdDQUNBQ1FSOTBjaUFnY2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0ZpQVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdJSEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUJZZ0xXb2lDQ0FJS0FJQUlBSkJIM1J5SUNCeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdGaUFzYWlJR0lBWW9BZ0FnQWtFZmRISWdJSEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRDBFRWRDRVBJQlpCQkdvaEZpQU5RUUZxSWcwZ0hFZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFTlFRRnhSUTBBQ3lBWUlCZ29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBTUtBSUVRWDl6Y1hJMkFnUUxJQXdvQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQnNFUUNBS1FRUnJJZ0lnQWlnQ0FDQVZRUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRlNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBVktBSUVRWDl6SUFaQkgzWnhjallDQkNBWVFRUnFJUmdnREVFRWFpRU1JQXBCQkdvaENpQVZRUVJxSVJVZ0cwRUlhaUliSUJKSURRQUxDeUFFUVFScUlnUWdJVWdOQUFzTFFRRWhBaUFoUVFCTURRTWdFa0VBVEEwRElCSkIvUC8vL3dkeElnWkJBblFoQnlBU1FRUkpJUVJCQUNFSUEwQWdDeUFJSUJKc1FRSjBhaUVCQWtBQ1FDQUVCRUFnQVNFQ1FRQWhDUXdCQ3lBQklBZHFJUUpCQUNFSkEwQWdBU0FKUVFKMGFpSU5JQTM5QUFJQUlrZjlEUC8vLzMvLy8vOS8vLy8vZi8vLy8zLzlUaUpJL2FFQklFZ2dSLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFJQWxCQkdvaUNTQUdSdzBBQ3lBR0lna2dFa1lOQVFzRFFDQUNRUUFnQWlnQ0FDSUJRZi8vLy84SGNTSU5heUFOSUFGQkFFZ2JOZ0lBSUFKQkJHb2hBaUFKUVFGcUlna2dFa2NOQUFzTFFRRWhBaUFJUVFGcUlnZ2dJVWNOQUFzTUF3c2dJa1VOQUNBUUlCb29BaGcyQWpRZ0VDQVdOZ0l3SUIxQkFVR3h5d0FnRUVFd2FoQVREQUVMSUJBZ0NUWUNGQ0FRSUJZMkFoQWdIVUVCUWJITEFDQVFRUkJxRUJOQkFDRUNEQUVMUVFBaEFnc2dFRUd3QW1va0FDQUNEUUVNQXdzZ0F5QUJRUWwwUVpDdUFXbzJBbXdDZjBFQUlRY2dBeWdDZENFQkFrQUNRQ0FhS0FJUUlCb29BZ2hySWdvZ0dpZ0NGQ0FhS0FJTWF5SU5iQ0lHSUFNb0FvUUJTd1JBSUFFUUZDQURJQVpCQW5RUUhDSUJOZ0owUVFBZ0FVVU5BeG9nQXlBR05nS0VBUXdCQ3lBQlJRMEJDeUFCUVFBZ0JrRUNkQkFaR2dzZ0F5Z0NlQ0VCQWtBZ0NrRUNhaUlJSUExQkEycEJBbllpRmtFQ2Ftd2lCaUFES0FLSUFVMEVRQ0FHUVFKMElSc01BUXNnQVJBVUlBTWdCa0VDZENJYkVCd2lBVFlDZUNBQkRRQkJBQXdCQ3lBRElBWTJBb2dCSUFGQkFDQWJFQmthQWtBZ0NFVU5BQ0FES0FKNElnUWhBUUpBSUFoQkJFOEVRQ0FFSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBRUlCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dCQ0FXUVFGcUlBaHNRUUowYWlFR1FRQWhCd0pBQWtBZ0NFRUVTUVJBSUFZaEFRd0JDeUFHSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBR0lCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dEVUVEY1NJQlJRMEFRWUNBZ01nRVFZQ0FnTUFFUVlDQWdJQUVJQUZCQWtZYklBRkJBVVliSVJRZ0JDQUlJQlpzUVFKMGFpRUdRUUFoQndKQUlBaEJCRWtFUUNBR0lRRU1BUXNnQmlBSVFYeHhJZ2RCQW5ScUlRRWdGUDBSSVVoQkFDRWJBMEFnQmlBYlFRSjBhaUJJL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFFZ0ZEWUNBQ0FCUVFScUlRRWdCMEVCYWlJSElBaEhEUUFMQ3lBRElBMDJBb0FCSUFNZ0NqWUNmRUVCQzBVTkFpQWFLQUljSUJOcUlodEJIMDRFUUNBaVJRMENJQ1lnR3pZQ0VDQWRRUUpCNThNQUlDWkJFR29RRXd3REN5QURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdnR2lnQ1FBMEFBa0FDUUNBYUtBSTBJZ2RCQVUwRVFDQUhRUUZIRFFFZ0F5Z0NrQUZGRFFFTElCb29BZ1FoQVVFQUlRWUNRQ0FIUVFSUEJFQWdCMEY4Y1NFQ0EwQWdBU0FKUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0NVRUVhaUlKSUFKSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFZZ0FpQUhSZzBCQ3dOQUlBRWdBa0VEZEdvb0FnUWdCbW9oQmlBQ1FRRnFJZ0lnQjBjTkFBc0xJQU1vQXBRQklSQWdCa0VDYWlJSklBTW9BcGdCU3dSQUlCQWdDUkFiSWdGRkRRVWdBeUFCTmdLVUFTQUJJQVpxUVFBN0FBQWdBeUFKTmdLWUFTQURLQUtVQVNFUUlCb29BalJGRFFJZ0dpZ0NCQ0VCQzBFQUlRSkJBQ0VHQTBBZ0FpQVFhaUFCSUFaQkEzUWlCV29pQVNnQ0FDQUJLQUlFRUJZYUlCb29BZ1FpQVNBRmFpZ0NCQ0FDYWlFQ0lBWkJBV29pQmlBYUtBSTBTUTBBQ3d3QkN5QUhRUUZIRFFFZ0dpZ0NCQ2dDQUNFUUN5QWFLQUk4SWdFRVFDQURLQUowSVN3Z0F5QUJOZ0owQ3lBYUtBSXNCRUFnRjBFQ2NTRXRJQmRCQ0hFaEpTQURRUnhxSVJnZ0YwRUJjVVVoTGtFQ0lTRURRQ0FRSUI1cUlRRWdHaWdDQUNBb1FSaHNhaUlnS0FJQUlRVUNRQ0F1SUJzZ0dpZ0NIRUVFYTBvZ0lVRUJTM0p5SWlORkJFQWdBeUFCTmdJVUlBTWdBU0FGYWlJRk5nSVlJQU1nQlM4QUFEc0JjQ0FGUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQTBFQU5nSUlJQU5CQURZQ0FDQURJQUUyQWhBTUFRc2dBeUFCTmdJVUlBTWdBU0FGYWlJR05nSVlJQU1nQmk4QUFEc0JjQ0FHUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQXlBRFFSeHFOZ0pvSUFNZ0FUWUNFQ0FEUVFBMkFnd2dBeUFGQkg4Z0FTMEFBRUVRZEFWQmdJRDhCd3NpQlRZQ0FFRUJJUWtnQVVFQmFpRUNJQUV0QUFFaEJnSi9JQUV0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FEUVFFMkFnd2dCVUdBL2dOeURBSUxJQU1nQWpZQ0VFRUFJUWtnQmtFSmRDQUZhZ3dCQ3lBRElBSTJBaEFnQmtFSWRDQUZjZ3NoQVNBRElBazJBZ2dnQTBHQWdBSTJBZ1FnQXlBQlFRZDBOZ0lBQ3lBZ0tBSUFJU29DUUNBYlFRQk1EUUFnSUNnQ0NFVU5BRUVBSVNrZ0xVRUFSeUFqY1NFbkEwQUNRQUpBQWtBQ1FBSkFJQ0ZCQVdzT0FnRUNBQXNnSTBVRVFFRUJJQnQwSWdGQkFYWWdBWEloQkNBREtBSjhJaFpCQW5RaURTQURLQUo0YWtFTWFpRUJJQU1vQW5RaEJrRUFJUk1nQXlnQ2dBRWlCVUVFVHdSQUlCWkZEUVVnRmtFTWJDRUhJQlpCQTNRaENrRUFJQVJySVFJRFFFRUFJUVVEUUFKQUlBRWlDU2dDQUNJQlJRMEFBa0FnQVVHUWdJQUJjUTBBSUFGQjd3TnhSUTBBSUFNb0FnQWhBUUpBSUFNb0FnZ2lDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnQ1FDQUJJQWgyUVFGeFJRMEFBa0FnQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFDSUFRZ0FTQUlka0VCY1NJSUd6WUNBQ0FES0FKOElRRWdDVUVFYXlJVUlCUW9BZ0JCSUhJMkFnQWdDU0FKS0FJRVFRaHlOZ0lFSUFrZ0NTZ0NBQ0FJUVJOMGNrRVFjallDQUNBbERRQWdDVUYrSUFGclFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0NFRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBQ3lBSklBa29BZ0JCZ0lDQUFYSWlBVFlDQUFzQ1FDQUJRWUNCZ0FoeERRQWdBVUg0SG5GRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FKQW44Z0FTQUlka0VCY1VVRVFDQUpLQUlBREFFTEFrQWdDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnZ0JpQU5haUFDSUFRZ0FTQUlka0VCY1NJQkd6WUNBQ0FKUVFScklnZ2dDQ2dDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUpLQUlBSUFGQkZuUnlRWUFCY2d0QmdJQ0FDSElpQVRZQ0FBc0NRQ0FCUVlDSWdNQUFjUTBBSUFGQndQY0JjVVVOQUNBREtBSUFJUUVDUUNBREtBSUlJZ2dOQUNBQlFmOEJSaUVVSUFNb0FoQWlDQzBBQUNFQkFrQWdGRVVFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUVFSElRZ01BZ3RCL3dFaEFTQURRZjhCTmdJQUMwRUlJUWdMSUFNZ0NFRUJheUlJTmdJSUlBa0NmeUFCSUFoMlFRRnhSUVJBSUFrb0FnQU1BUXNDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFwcUlBSWdCQ0FCSUFoMlFRRnhJZ0ViTmdJQUlBbEJCR3NpQ0NBSUtBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFrb0FnQWdBVUVaZEhKQmdBaHlDMEdBZ0lEQUFISWlBVFlDQUFzZ0FVR0F3SUNBQkhFTkFDQUJRWUM4RDNGRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FCSUFoMlFRRnhCRUFDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFkcUlBSWdCQ0FCSUFoMlFRRnhJZ2diTmdJQUlBTW9BbndoQVNBSlFRUnJJaFFnRkNnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBSUFJQWhCSEhSeVFZREFBSEkyQWdBZ0NTQUJRUUowYWlJQklBRW9BZ1JCQkhJMkFnUWdBU0FCS0FJTVFRRnlOZ0lNSUFFZ0FTZ0NDQ0FJUVJKMGNrRUNjallDQ0FzZ0NTQUpLQUlBUVlDQWdJQUVjallDQUFzZ0JrRUVhaUVHSUFsQkJHb2hBU0FGUVFGcUlnVWdGa2NOQUFzZ0JpQUhhaUVHSUFsQkRHb2hBU0FUUVFScUloTWdBeWdDZ0FFaUJVRjhjVWtOQUFzTElBVWdFMDBOQXlBV1JRMERRUUFoQ2tFQUlBUnJJUTRnQlNFSUEwQUNRQ0FJSUJOR0JFQWdFeUVJREFFTElBRkJCR3NoRkNBQktBSUFJUTFCQUNFQ0EwQUNRQ0FOSUFKQkEyd2lDWFlpQjBHUWdJQUJjUTBBSUFkQjd3TnhSUTBBSUFNb0FnQWhCUUpBSUFNb0FnZ2lCdzBBSUFWQi93RkhJUWdnQXlnQ0VDSUhMUUFBSVFVQ1FDQUlSUVJBSUFWQmtBRlBCRUJCL3dFaEJTQURRZjhCTmdJQURBSUxJQU1nQlRZQ0FDQURJQWRCQVdvMkFoQkJCeUVIREFJTElBTWdCVFlDQUNBRElBZEJBV28yQWhBTFFRZ2hCd3NnQXlBSFFRRnJJZ2MyQWdnQ1FDQUZJQWQyUVFGeFJRMEFJQVlnQWlBV2JFRUNkR29DUUNBSERRQWdCVUgvQVVjaERTQURLQUlRSWdjdEFBQWhCUUpBSUExRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0IwRUJhallDRUVFSElRY01BZ3NnQXlBRk5nSUFJQU1nQjBFQmFqWUNFQXRCQ0NFSEN5QURJQWRCQVdzaUJ6WUNDQ0FPSUFRZ0JTQUhka0VCY1NJSEd6WUNBQ0FES0FKOElRZ2dGQ0FVS0FJQVFTQWdDWFJ5TmdJQUlBRWdBU2dDQUNBSFFSTjBRUkJ5SUFsMGNqWUNBQ0FCSUFFb0FnUkJDQ0FKZEhJMkFnUWdBaUFsY2tVRVFDQUJRWDRnQ0d0QkFuUnFJZ1VnQlNnQ0JFR0FnQUp5TmdJRUlBVWdCU2dDQUNBSFFSOTBja0dBZ0FSeU5nSUFJQVZCQkdzaUJTQUZLQUlBUVlDQUNISTJBZ0FMSUFKQkEwY05BQ0FCSUFoQkFuUnFJZ1VnQlNnQ0JFRUVjallDQkNBRklBVW9BZ3hCQVhJMkFnd2dCU0FGS0FJSUlBZEJFblJ5UVFKeU5nSUlDeUFCSUFFb0FnQkJnSUNBQVNBSmRISWlEVFlDQUNBREtBS0FBU0VGQ3lBRklRZ2dBa0VCYWlJQ0lBVWdFMnRKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUFwQkFXb2lDaUFXUncwQUN3d0RDMEVBSVFsQkFDRVdRUUFoQ2dKQUFrQUNRQUpBSUFNb0Fud2lCRUhBQUVjTkFDQURLQUtBQVVIQUFFY05BRUVBUVFFZ0czUWlBVUVCZGlBQmNpSVRheUVVSUFOQkhHb2hCQ0FES0FKNFFZd0NhaUVHSUFNb0FnZ2hDQ0FES0FJRUlRVWdBeWdDQUNFSElBTW9BbWdoRFNBREtBSjBJUUVnRjBFSWNRMEJBMEJCQUNFS0EwQWdBU0VDSUFZaUNTZ0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FGSUFRZ0F5Z0NiQ0FCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnQ3hzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWdzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlBc2JEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRVhaQkJIRWdDVUVFYXlJTUtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSklBa29BZ1JCQ0hJMkFnUWdDVUdNQW1zaURpQU9LQUlBUVlDQUNISTJBZ0FnQ1VHRUFtc2lEaUFPS0FJQVFZQ0FBbkkyQWdBZ0NVR0lBbXNpRGlBT0tBSUFJQUVnQzNNaUFVRWZkSEpCZ0lBRWNqWUNBQ0FHSUFGQkUzUnlRUkJ5QlNBR0MwR0FnSUFCY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FHUWZnZWNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFOMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRkhaQkJIRWdDVUVFYXlJTUtBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FBaUFNSUF3b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQklBdHpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FFSUFNb0Ftd2dCa0VHZGlJTFFlOERjV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlN3UkFJQTRvQWdRaERDQU5JQTVCQ0VFTUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VGSUFndEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBTUlBeEZJQkViREFFTElBY2dBVUVRZEdzaEJ5QUZRWUNBQW5GRkJFQWdEaWdDQkNFTUlBMGdEa0VNUVFnZ0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dERVVnRENBUkd3d0JDeUFPS0FJRUN3Ui9JQVVnQkNBSktBSUVRUmQyUVFSeElBbEJCR3NpRENnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUF0QnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRklBdEJrTUFCYWkwQUFDRUxJQUlnRXlBVUlBc0NmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRVJJQTBnRGtFSVFRd2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCRWdFVVVnRlJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlSRWdEU0FPUVF4QkNDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFSUlNBUklCVWJEQUVMSUE0b0FnUUxJZ0ZHR3pZQ2dBUWdEQ0FNS0FJQVFZQVFjallDQUNBSklBa29BZ1JCZ0FSeU5nSUVJQVlnQVNBTGMwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQVFnQXlnQ2JDQUdRUWwySWd0Qjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTEJFQWdEaWdDQkNFTUlBMGdEa0VJUVF3Z0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUVVnQ0MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFWQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUF3Z0RFVWdFUnNNQVFzZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1VVRVFDQU9LQUlFSVF3Z0RTQU9RUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVPSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBRElBNDJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUE0MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQndzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QU1SU0FNSUJFYkRBRUxJQTRvQWdRTEJIOGdCU0FFSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlNS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnQzBHcUFYRnljbkp5SWd0QmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVZ0MwR1F3QUZxTFFBQUlRc2dBaUFUSUJRZ0N3Si9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlSRWdEU0FPUVFoQkRDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0VTQVJSU0FWR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaEVTQU5JQTVCREVFSUlBRWdCVXNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQkZGSUJFZ0ZSc01BUXNnRGlnQ0JBc2lBVVliTmdLQUJpQU1JQXdvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQWtnQ1NnQ2hBSkJCSEkyQW9RQ0lBa2dDU2dDakFKQkFYSTJBb3dDSUFrZ0NTZ0NpQUlnQVNBTGN5SUJRUkowY2tFQ2NqWUNpQUlnQmlBQlFSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdBa0VFYWlFQklBcEJBV29pQ2tIQUFFY05BQXNnQ1VFTWFpRUdJQUpCaEFacUlRRWdGa0U4U1NBV1FRUnFJUllOQUFzTUFndEJBU0FiZENJQlFRRjJJQUZ5SVJZZ0F5Z0NlQ0lDSUFSQkFuUnFRUXhxSVFZZ0F5Z0NnQUVoQVNBREtBSUlJUWdnQXlnQ0JDRUZJQU1vQWdBaEJ5QURLQUpvSVEwZ0F5Z0NkQ0VUQWtBZ0YwRUljUVJBQWtBZ0FVRUVTUTBBSUFRRVFDQUVRUXhzSVJFZ0JFRURkQ0VrUVFBZ0Ztc2hDeUFEUVJ4cUlSUURRRUVBSVE0RFFDQUdJZ0lvQWdBaUJnUkFBa0FnQmtHUWdJQUJjUTBBSUFaQjd3TnhJZ0ZGRFFBZ0JTQVVJQU1vQW13Z0FXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lFaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRWhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlTRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdFaHNMQkg4Z0JTQVVJQUlvQWdSQkVYWkJCSEVnQWtFRWF5SVZLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QVdJQXNnRWdKL0lBRWdCMEVRZGswRVFDQUhJQUZCRUhScklRY2dCVUdBZ0FKeEJFQWdEQ2dDQkF3Q0N5QU1LQUlFSVE4Z0RTQU1RUXhCQ0NBQklBVkxJaHdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSERBRUxJQUZCandGTkJFQWdBeUFNTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QVBSU0FQSUJ3YkRBRUxJQXdvQWdRaER5QU5JQXhCQ0VFTUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VGSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY01BUXNnQlVHUEFVMEVRQ0FESUF3MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBUElBOUZJQndiQ3lJQlJoczJBZ0FnRlNBVktBSUFRU0J5TmdJQUlBSWdBaWdDQkVFSWNqWUNCQ0FHSUFFZ0VuTkJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRklCUWdBeWdDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFVWRrRUVjU0FDUVFSckloVW9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBVElBUkJBblJxSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ0ZHR3pZQ0FDQVZJQlVvQWdCQmdBSnlOZ0lBSUFJZ0FpZ0NCRUhBQUhJMkFnUWdCaUFCSUJKelFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0JTQVVJQU1vQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lEeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRHhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdEeHNMQkg4Z0JTQVVJQUlvQWdSQkYzWkJCSEVnQWtFRWF5SVZLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QWthaUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SUJSaHMyQWdBZ0ZTQVZLQUlBUVlBUWNqWUNBQ0FDSUFJb0FnUkJnQVJ5TmdJRUlBWWdBU0FTYzBFWmRISkJnQWh5QlNBR0MwR0FnSURBQUhJaEJnc0NRQ0FHUVlEQWdJQUVjUTBBSUFaQmdMd1BjVVVOQUNBRklCUWdBeWdDYkNBR1FRbDJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFYWRrRUVjU0FDUVFSckloVW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBUklCTnFJQllnQ3lBU0FuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaER5QU5JQXhCREVFSUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQTlGSUE4Z0hCc01BUXNnRENnQ0JDRVBJQTBnREVFSVFRd2dBU0FGU3lJY0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBOGdEMFVnSEJzTElneEdHellDQUNBVklCVW9BZ0JCZ0lBQmNqWUNBQ0FDSUFJb0FnUkJnQ0J5TmdJRUlBTW9BbnhCQW5RZ0Ftb2lBU0FCS0FJRVFRUnlOZ0lFSUFFZ0FTZ0NERUVCY2pZQ0RDQUJJQUVvQWdnZ0RDQVNjeUlCUVJKMGNrRUNjallDQ0NBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBQ0lBWTJBZ0FMSUFKQkJHb2hCaUFUUVFScUlSTWdEa0VCYWlJT0lBUkhEUUFMSUFKQkRHb2hCaUFSSUJOcUlSTWdDVUVFYWlJSklBTW9Bb0FCSWdGQmZIRkpEUUFMREFFTFFRUWdBVUY4Y1NJR0lBWkJCRTBiUVFGcklnWkJmSEZCQkdvaENTQUNJQVpCQVhSQmVIRnFRUlJxSVFZTElBTWdDRFlDQ0NBRElBVTJBZ1FnQXlBSE5nSUFJQU1nRFRZQ2FDQUVSUTBCSUFFZ0NVME5BUU5BSUFFZ0NVWkJBQ0VJSUFraEFVVUVRQU5BSUFNZ0JpQVRJQVFnQ0d4QkFuUnFJQllnQ0NBREtBSjhRUUpxUVFFUVlpQUlRUUZxSWdnZ0F5Z0NnQUVpQVNBSmEwa05BQXNMSUFaQkJHb2hCaUFUUVFScUlSTWdDa0VCYWlJS0lBUkhEUUFMREFFTEFrQWdBVUVFU1EwQUlBUUVRQ0FFUVF4c0lSRWdCRUVEZENFa1FRQWdGbXNoQ3lBRFFSeHFJUlFEUUVFQUlRNERRQ0FHSWdJb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdCU0FVSUFNb0Ftd2dBV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRWh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0Voc01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRWhzTEJIOGdCU0FVSUFJb0FnUkJFWFpCQkhFZ0FrRUVheUlWS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SU1SaHMyQWdBZ0ZTQVZLQUlBUVNCeU5nSUFJQUlnQWlnQ0JFRUljallDQkNBQ1FYNGdBeWdDZkd0QkFuUnFJZ0VnQVNnQ0JFR0FnQUp5TmdJRUlBRWdBU2dDQUNBTUlCSnpJZ3hCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FDQUdJQXhCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRVVka0VFY1NBQ1FRUnJJaFVvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVRJQVJCQW5ScUlCWWdDeUFTQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRHlBTklBeEJERUVJSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElBOUZJQThnSEJzTUFRc2dEQ2dDQkNFUElBMGdERUVJUVF3Z0FTQUZTeUljRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUE4Z0QwVWdIQnNMSWdGR0d6WUNBQ0FWSUJVb0FnQkJnQUp5TmdJQUlBSWdBaWdDQkVIQUFISTJBZ1FnQmlBQklCSnpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FVSUFNb0Ftd2dCa0VHZGlJU1FlOERjV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRHh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0R4c01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJUEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRHhzTEJIOGdCU0FVSUFJb0FnUkJGM1pCQkhFZ0FrRUVheUlWS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRWtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFrYWlBV0lBc2dFZ0ovSUFFZ0IwRVFkazBFUUNBSElBRkJFSFJySVFjZ0JVR0FnQUp4QkVBZ0RDZ0NCQXdDQ3lBTUtBSUVJUThnRFNBTVFReEJDQ0FCSUFWTElod2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU1JQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQU1nRERZQ0VFRUlJUWdnQVVFSWRDQUhhaUVIREFFTElBRkJqd0ZOQkVBZ0F5QU1OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXNnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUFJTQVBJQndiREFFTElBd29BZ1FoRHlBTklBeEJDRUVNSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUZJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTUFRc2dCVUdQQVUwRVFDQURJQXcyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FQSUE5RklCd2JDeUlCUmhzMkFnQWdGU0FWS0FJQVFZQVFjallDQUNBQ0lBSW9BZ1JCZ0FSeU5nSUVJQVlnQVNBU2MwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRWFka0VFY1NBQ1FRUnJJaFVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVJJQk5xSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ3hHR3pZQ0FDQVZJQlVvQWdCQmdJQUJjallDQUNBQ0lBSW9BZ1JCZ0NCeU5nSUVJQU1vQW54QkFuUWdBbW9pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dEQ0FTY3lJQlFSSjBja0VDY2pZQ0NDQUdJQUZCSEhSeVFZREFBSElGSUFZTFFZQ0FnSUFFY2lFR0N5QUNJQVkyQWdBTElBSkJCR29oQmlBVFFRUnFJUk1nRGtFQmFpSU9JQVJIRFFBTElBSkJER29oQmlBUklCTnFJUk1nQ1VFRWFpSUpJQU1vQW9BQklnRkJmSEZKRFFBTERBRUxRUVFnQVVGOGNTSUdJQVpCQkUwYlFRRnJJZ1pCZkhGQkJHb2hDU0FDSUFaQkFYUkJlSEZxUVJScUlRWUxJQU1nQ0RZQ0NDQURJQVUyQWdRZ0F5QUhOZ0lBSUFNZ0RUWUNhQ0FFUlEwQUlBRWdDVTBOQUFOQUlBRWdDVVpCQUNFSUlBa2hBVVVFUUFOQUlBTWdCaUFUSUFRZ0NHeEJBblJxSUJZZ0NDQURLQUo4UVFKcVFRQVFZaUFJUVFGcUlnZ2dBeWdDZ0FFaUFTQUphMGtOQUFzTElBWkJCR29oQmlBVFFRUnFJUk1nQ2tFQmFpSUtJQVJIRFFBTEN3d0NDd05BUVFBaENnTkFJQUVoQWlBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQlNBRUlBTW9BbXdnQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhEQ0FOSUE1QkNFRU1JQUVnQlVzaUN4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQU1JQXhGSUFzYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRU1JQTBnRGtFTVFRZ2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnREVVZ0RDQUxHd3dCQ3lBT0tBSUVDd1IvSUFVZ0JDQUpLQUlFUVJGMlFRUnhJQWxCQkdzaURDZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSUxRWkMrQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZJQXRCa01BQmFpMEFBQ0VMSUFJZ0V5QVVJQXNDZnlBQklBZEJFSFpMQkVBZ0RpZ0NCQ0VSSUEwZ0RrRUlRUXdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRVWdDQzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQkVnRVVVZ0ZSc01BUXNnQnlBQlFSQjBheUVISUFWQmdJQUNjVVVFUUNBT0tBSUVJUkVnRFNBT1FReEJDQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQUZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUlJTQVJJQlViREFFTElBNG9BZ1FMSWdGR0d6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NTQUpLQUlFUVFoeU5nSUVJQVlnQVNBTGMwRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFVZ0JDQURLQUpzSUFaQkEzWWlDMEh2QTNGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCUUovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUXdnRFNBT1FRaEJEQ0FCSUFWTEloRWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdEQ0FNUlNBUkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhEQ0FOSUE1QkRFRUlJQUVnQlVzaUVSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUF4RklBd2dFUnNNQVFzZ0RpZ0NCQXNFZnlBRklBUWdDU2dDQkVFVWRrRUVjU0FKUVFScklnd29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQUxRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCU0FMUVpEQUFXb3RBQUFoQ3lBQ0lCTWdGQ0FMQW44Z0FTQUhRUkIyU3dSQUlBNG9BZ1FoRVNBTklBNUJDRUVNSUFFZ0JVc2lGUnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUTRnQ0MwQUFTRUZJQWd0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlEQUlMSUFNZ0RqWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nRGpZQ0VFRUlJUWdnQlVFSWRDQUhhaUVIQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FSSUJGRklCVWJEQUVMSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkZGQkVBZ0RpZ0NCQ0VSSUEwZ0RrRU1RUWdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0VVVWdFU0FWR3d3QkN5QU9LQUlFQ3lJQlJoczJBb0FDSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDU0FKS0FJRVFjQUFjallDQkNBR0lBRWdDM05CRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFaMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRjNaQkJIRWdDVUVFYXlJTUtBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FCQ0FNSUF3b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQklBdHpRUmwwY2tHQUNISUZJQVlMUVlDQWdNQUFjaUVHQ3dKQUlBWkJnTUNBZ0FSeERRQWdCa0dBdkE5eFJRMEFJQVVnQkNBREtBSnNJQVpCQ1hZaUMwSHZBM0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJRSi9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlRd2dEU0FPUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0RDQU1SU0FSR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaERDQU5JQTVCREVFSUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQXhGSUF3Z0VSc01BUXNnRGlnQ0JBc0VmeUFGSUFRZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWd3b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBTFFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJTQUxRWkRBQVdvdEFBQWhDeUFDSUJNZ0ZDQUxBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhFU0FOSUE1QkNFRU1JQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVJJQkZGSUJVYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRVJJQTBnRGtFTVFRZ2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnRVVVZ0VTQVZHd3dCQ3lBT0tBSUVDeUlCUmhzMkFvQUdJQXdnRENnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBS0VBa0VFY2pZQ2hBSWdDU0FKS0FLTUFrRUJjallDakFJZ0NTQUpLQUtJQWlBQklBdHpJZ0ZCRW5SeVFRSnlOZ0tJQWlBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBSklBWTJBZ0FMSUFsQkJHb2hCaUFDUVFScUlRRWdDa0VCYWlJS1FjQUFSdzBBQ3lBSlFReHFJUVlnQWtHRUJtb2hBU0FXUVR4SklCWkJCR29oRmcwQUN3c2dBeUFJTmdJSUlBTWdCVFlDQkNBRElBYzJBZ0FnQXlBTk5nSm9Dd3dDQ3lBalJRUkFRUUVnRzNSQkFYWWhCeUFES0FKOElnUkJBblFpQ2lBREtBSjRha0VNYWlFQklBTW9BblFoQmtFQUlRMGdBeWdDZ0FFaUJVRUVUd1JBSUFSRkRRUWdCRUVNYkNFVElBUkJBM1FoRmtFQUlBZHJJUUlEUUVFQUlRVURRQUpBSUFFaUNTZ0NBQ0lCUlEwQUlBRkJrSUNBQVhGQkVFWUVRQ0FES0FJQUlRRUNRQ0FES0FJSUlnZ05BQ0FCUWY4QlJpRVVJQU1vQWhBaUNDMEFBQ0VCQWtBZ0ZFVUVRQ0FESUFFMkFnQWdBeUFJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQXlBQk5nSUFJQU1nQ0VFQmFqWUNFRUVISVFnTUFndEIvd0VoQVNBRFFmOEJOZ0lBQzBFSUlRZ0xJQU1nQ0VFQmF5SUlOZ0lJSUFZZ0FpQUhJQUVnQ0haQkFYRWdCaWdDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0F3QUJ5SWdFMkFnQUxJQUZCZ0lHQUNIRkJnQUZHQkVBZ0F5Z0NBQ0VCQWtBZ0F5Z0NDQ0lJRFFBZ0FVSC9BVVloRkNBREtBSVFJZ2d0QUFBaEFRSkFJQlJGQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhCQkJ5RUlEQUlMUWY4QklRRWdBMEgvQVRZQ0FBdEJDQ0VJQ3lBRElBaEJBV3NpQ0RZQ0NDQUdJQXBxSWhRZ0FpQUhJQUVnQ0haQkFYRWdGQ2dDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0FnQVJ5SWdFMkFnQUxJQUZCZ0lpQXdBQnhRWUFJUmdSQUlBTW9BZ0FoQVFKQUlBTW9BZ2dpQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFXYWlJVUlBSWdCeUFCSUFoMlFRRnhJQlFvQWdBaUFVRWZka1liSUFGcU5nSUFJQWtnQ1NnQ0FFR0FnSUFnY2lJQk5nSUFDeUFCUVlEQWdJQUVjVUdBd0FCSERRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUJOcUloUWdBaUFISUFFZ0NIWkJBWEVnRkNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQ1NBSktBSUFRWUNBZ0lBQ2NqWUNBQXNnQmtFRWFpRUdJQWxCQkdvaEFTQUZRUUZxSWdVZ0JFY05BQXNnQmlBVGFpRUdJQWxCREdvaEFTQU5RUVJxSWcwZ0F5Z0NnQUVpQlVGOGNVa05BQXNMSUFVZ0RVME5BaUFFUlEwQ1FRQWhDa0VBSUFkcklSWWdCU0VKQTBBQ1FDQUpJQTFHQkVBZ0RTRUpEQUVMSUFFb0FnQWhDRUVBSVFJRFFFR1FnSUFCSUFKQkEyd2lDWFFnQ0hGQkVDQUpkRVlFUUNBR0lBSWdCR3hCQW5ScUlRZ2dBeWdDQUNFRkFrQWdBeWdDQ0NJVERRQWdCVUgvQVVjaEZDQURLQUlRSWhNdEFBQWhCUUpBSUJSRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0UwRUJhallDRUVFSElSTU1BZ3NnQXlBRk5nSUFJQU1nRTBFQmFqWUNFQXRCQ0NFVEN5QURJQk5CQVdzaUV6WUNDQ0FJSUJZZ0J5QUZJQk4yUVFGeElBZ29BZ0FpQlVFZmRrWWJJQVZxTmdJQUlBRWdBU2dDQUVHQWdNQUFJQWwwY2lJSU5nSUFJQU1vQW9BQklRVUxJQVVoQ1NBQ1FRRnFJZ0lnQlNBTmEwa05BQXNMSUFaQkJHb2hCaUFCUVFScUlRRWdDa0VCYWlJS0lBUkhEUUFMREFJTElBTW9BbmdoQ0NBREtBSjBJUWtnQXlnQ2dBRWhCUUpBSUFNb0Fud2lGa0hBQUVjTkFDQUZRY0FBUncwQUlBaEJqQUpxSVFWQkFDRVdRUUJCQVNBYmRFRUJkaUlLYXlFVUlBTW9BZ2doQWlBREtBSUVJUVlnQXlnQ0FDRUJJQU1vQW1naERRTkFRUUFoRXdOQUlBa2hCeUFGSWdnb0FnQWlDUVJBSUFVZ0NVR1FnSUFCY1VFUVJnUkFJQVlnR0VFUVFROUJEaUFKUWU4RGNSc2dDVUdBZ01BQWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ0FDSUVRUjkyUmhzZ0JHbzJBZ0FnQ1VHQWdNQUFjaUVKQ3lBSlFZQ0JnQWh4UVlBQlJnUkFJQVlnR0VFUVFROUJEaUFKUWZnZWNSc2dDVUdBZ0lBRWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ2dBSWlCRUVmZGtZYklBUnFOZ0tBQWlBSlFZQ0FnQVJ5SVFrTElBbEJnSWlBd0FCeFFZQUlSZ1JBSUFZZ0dFRVFRUTlCRGlBSlFjRDNBWEViSUFsQmdJQ0FJSEViUVFKMGFpSU5LQUlBSWdRb0FnQWlCV3NoQmdKL0lBVWdBVUVRZGtzRVFDQUVLQUlFSVE0Z0RTQUVRUWhCRENBRklBWkxJZ3diYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVFSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRElBUTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFRMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnRGlBT1JTQU1Hd3dCQ3lBQklBVkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlBUW9BZ1FoRGlBTklBUkJERUVJSUFVZ0Jrc2lEQnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUVFnQWkwQUFTRUZJQUl0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFNZ0JEWUNFQ0FGUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQkRZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBNUZJQTRnREJzTUFRc2dCQ2dDQkFzaEJTQUhJQlFnQ2lBRklBY29Bb0FFSWdSQkgzWkdHeUFFYWpZQ2dBUWdDVUdBZ0lBZ2NpRUpDeUFKUVlEQWdJQUVjVUdBd0FCR0JIOGdCaUFZUVJCQkQwRU9JQWxCZ0x3UGNSc2dDVUdBZ0lDQUFuRWJRUUowYWlJTktBSUFJZ1FvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFka3NFUUNBRUtBSUVJUTRnRFNBRVFRaEJEQ0FGSUFaTElnd2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUVJQUl0QUFFaEJpQUNMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFESUFRMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QURJQVEyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRWWdEaUFPUlNBTUd3d0JDeUFCSUFWQkVIUnJJUUVnQmtHQWdBSnhSUVJBSUFRb0FnUWhEaUFOSUFSQkRFRUlJQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFRklBSXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUZRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCVUVJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUE1RklBNGdEQnNNQVFzZ0JDZ0NCQXNoQlNBSElCUWdDaUFGSUFjb0FvQUdJZ1JCSDNaR0d5QUVhallDZ0FZZ0NVR0FnSUNBQW5JRklBa0xOZ0lBQ3lBSVFRUnFJUVVnQjBFRWFpRUpJQk5CQVdvaUUwSEFBRWNOQUFzZ0NFRU1haUVGSUFkQmhBWnFJUWtnRmtFOFNTQVdRUVJxSVJZTkFBc2dBeUFDTmdJSUlBTWdCallDQkNBRElBRTJBZ0FnQXlBTk5nSm9EQUlMUVFFZ0czUkJBWFloRkNBSUlCWkJBblFpRVdwQkRHb2hCeUFES0FJSUlRSWdBeWdDQkNFR0lBTW9BZ0FoQVNBREtBSm9JUTFCQUNFRUFrQWdCVUVFU1EwQUlCWUVRQ0FXUVF4c0lRd2dGa0VEZENFVlFRQWdGR3NoRGdOQVFRQWhFd05BSUFjaUNpZ0NBQ0lJQkVBZ0J5QUlRWkNBZ0FGeFFSQkdCRUFnQmlBWVFSQkJEMEVPSUFoQjd3TnhHeUFJUVlDQXdBQnhHMEVDZEdvaURTZ0NBQ0lIS0FJQUlnVnJJUVlDZnlBRklBRkJFSFpOQkVBZ0FTQUZRUkIwYXlFQklBWkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VMSUEwZ0IwRU1RUWdnQlNBR1N5SVNHMm9vQWdBMkFnQURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hCeUFDTFFBQklRVWdBaTBBQUVIL0FVY0VRQ0FESUFjMkFoQkJDQ0VDSUFWQkNIUWdBV29oQVF3QkN5QUZRWThCVFFSQUlBTWdCellDRUNBRlFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0MwVWdDeUFTR3d3QkN5QUhLQUlFSVFzZ0RTQUhRUWhCRENBRklBWkxJaEliYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVISUFJdEFBRWhCaUFDTFFBQVFmOEJSd1JBSUFNZ0J6WUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkRBRUxJQVpCandGTkJFQWdBeUFITmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnQ3lBTFJTQVNHd3NoQlNBSklBNGdGQ0FGSUFrb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJREFBSEloQ0FzZ0NFR0FnWUFJY1VHQUFVWUVRQ0FHSUJoQkVFRVBRUTRnQ0VINEhuRWJJQWhCZ0lDQUJIRWJRUUowYWlJTktBSUFJZ2NvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFkazBFUUNBQklBVkJFSFJySVFFZ0JrR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXNnRFNBSFFReEJDQ0FGSUFaTEloSWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUhJQUl0QUFFaEJTQUNMUUFBUWY4QlJ3UkFJQU1nQnpZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCREFFTElBVkJqd0ZOQkVBZ0F5QUhOZ0lRSUFWQkNYUWdBV29oQVVFSElRSU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBTFJTQUxJQkliREFFTElBY29BZ1FoQ3lBTklBZEJDRUVNSUFVZ0Jrc2lFaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUWNnQWkwQUFTRUdJQUl0QUFCQi93RkhCRUFnQXlBSE5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTUFRc2dCa0dQQVUwRVFDQURJQWMyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhCaUFMSUF0RklCSWJDeUVGSUFrZ0VXb2lCeUFPSUJRZ0JTQUhLQUlBSWdkQkgzWkdHeUFIYWpZQ0FDQUlRWUNBZ0FSeUlRZ0xJQWhCZ0lpQXdBQnhRWUFJUmdSQUlBWWdHRUVRUVE5QkRpQUlRY0QzQVhFYklBaEJnSUNBSUhFYlFRSjBhaUlOS0FJQUlnY29BZ0FpQldzaEJnSi9JQVVnQVVFUWRrMEVRQ0FCSUFWQkVIUnJJUUVnQmtHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRc2dEU0FIUVF4QkNDQUZJQVpMSWhJYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFNb0FoQWlBa0VCYWlFSElBSXRBQUVoQlNBQ0xRQUFRZjhCUndSQUlBTWdCellDRUVFSUlRSWdCVUVJZENBQmFpRUJEQUVMSUFWQmp3Rk5CRUFnQXlBSE5nSVFJQVZCQ1hRZ0FXb2hBVUVISVFJTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFjb0FnUWhDeUFOSUFkQkNFRU1JQVVnQmtzaUVodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRY2dBaTBBQVNFR0lBSXRBQUJCL3dGSEJFQWdBeUFITmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRElBYzJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQUxJQXRGSUJJYkN5RUZJQWtnRldvaUJ5QU9JQlFnQlNBSEtBSUFJZ2RCSDNaR0d5QUhhallDQUNBSVFZQ0FnQ0J5SVFnTElBaEJnTUNBZ0FSeFFZREFBRVlFZnlBR0lCaEJFRUVQUVE0Z0NFR0F2QTl4R3lBSVFZQ0FnSUFDY1J0QkFuUnFJZzBvQWdBaUJ5Z0NBQ0lGYXlFR0FuOGdCU0FCUVJCMlRRUkFJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaEN5QU5JQWRCREVFSUlBVWdCa3NpRWh0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQXlnQ0VDSUNRUUZxSVFjZ0FpMEFBU0VGSUFJdEFBQkIvd0ZIQkVBZ0F5QUhOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRU1BUXNnQlVHUEFVMEVRQ0FESUFjMkFoQWdCVUVKZENBQmFpRUJRUWNoQWd3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQXRGSUFzZ0Voc01BUXNnQnlnQ0JDRUxJQTBnQjBFSVFRd2dCU0FHU3lJU0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJ5QUNMUUFCSVFZZ0FpMEFBRUgvQVVjRVFDQURJQWMyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFNZ0J6WUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQXlnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFR0lBc2dDMFVnRWhzTElRVWdDU0FNYWlJSElBNGdGQ0FGSUFjb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJQ0FnQUp5QlNBSUN6WUNBQXNnQ2tFRWFpRUhJQWxCQkdvaENTQVRRUUZxSWhNZ0ZrY05BQXNnQ2tFTWFpRUhJQWtnREdvaENTQUVRUVJxSWdRZ0F5Z0NnQUVpQlVGOGNVa05BQXNNQVF0QkJDQUZRWHh4SWdjZ0IwRUVUUnRCQVdzaUIwRjhjVUVFYWlFRUlBZ2dCMEVCZEVGNGNXcEJGR29oQndzZ0F5QUNOZ0lJSUFNZ0JqWUNCQ0FESUFFMkFnQWdBeUFOTmdKb0lCWkZEUUVnQkNBRlR3MEJRUUFoQ2tFQUlCUnJJUXNnQlNFQkEwQUNRQ0FCSUFSR0JFQWdCQ0VCREFFTElBY29BZ0FoQWtFQUlRZ0RRRUdRZ0lBQklBaEJBMndpRFhRZ0FuRkJFQ0FOZEVZRVFDQUpJQWdnRm14QkFuUnFJUTRnQXlBWVFSQkJEMEVPSUFJZ0RYWWlBVUh2QTNFYklBRkJnSURBQUhFYlFRSjBhaUlUTmdKb0lBTWdBeWdDQkNBVEtBSUFJZ0lvQWdBaUFXc2lCVFlDQkFKL0lBRWdBeWdDQUNJR1FSQjJTd1JBSUFJb0FnUWhEQ0FESUFFMkFnUWdFeUFDUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnSkJBV29oRXlBQ0xRQUJJUVVnQWkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUdRWUQrQTJvaEJrRUlJUUlNQWdzZ0F5QVROZ0lRSUFWQkNYUWdCbW9oQmtFSElRSU1BUXNnQXlBVE5nSVFRUWdoQWlBRlFRaDBJQVpxSVFZTElBTWdBa0VCYXlJQ05nSUlJQU1nQmtFQmRDSUdOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QU1JQXhGSUJFYkRBRUxJQU1nQmlBQlFSQjBheUlHTmdJQUlBVkJnSUFDY1VVRVFDQUNLQUlFSVF3Z0V5QUNRUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hFeUFDTFFBQklRRWdBaTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQXlBVE5nSVFJQUZCQ1hRZ0Jtb2hCa0VISVFJTUFRc2dBeUFUTmdJUVFRZ2hBaUFCUVFoMElBWnFJUVlMSUFNZ0FrRUJheUlDTmdJSUlBTWdCa0VCZENJR05nSUFJQU1nQlVFQmRDSUZOZ0lFSUFWQmdJQUNTUTBBQ3lBTVJTQU1JQkViREFFTElBSW9BZ1FMSVFFZ0RpQUxJQlFnQVNBT0tBSUFJZ1ZCSDNaR0d5QUZhallDQUNBSElBY29BZ0JCZ0lEQUFDQU5kSElpQWpZQ0FDQURLQUtBQVNFRkN5QUlRUUZxSWdnZ0JTSUJJQVJyU1EwQUN3c2dCMEVFYWlFSElBbEJCR29oQ1NBS1FRRnFJZ29nRmtjTkFBc01BUXRCQUNFUlFRQWhGQUpBQWtBQ1FBSkFJQU1vQW53aUZrSEFBRWNOQUNBREtBS0FBVUhBQUVjTkFFRUFRUUVnRzNRaUFVRUJkaUFCY2lJT2F5RU1JQU5CNUFCcUlRY2dBMEhnQUdvaENDQURRUnhxSVJZZ0F5Z0NlRUdNQW1vaEJpQURLQUlJSVFRZ0F5Z0NCQ0VCSUFNb0FnQWhBaUFES0FKb0lRa2dBeWdDZENFRklCZEJDSEVOQVFOQVFRQWhGUU5BSUFVaEV3SkFBa0FDZnlBR0lnMG9BZ0FpQmtVRVFDQUJJQWdvQWdBaUJTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQVVvQWdRaENTQUlJQVZCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUZRUUZxSVFRZ0JTMEFBU0VCSUFVdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSklBbEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdCU2dDQkNFSklBZ2dCVUVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnWkJBV29oQkNBR0xRQUJJUVVnQmkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDVVVnQ1NBS0d3d0JDeUFGS0FJRUMwVUVRQ0FJSVFrTUJBc2dBU0FIS0FJQUlnVW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FGS0FJRUlRa2dCeUFGUVFoQkRDQUJJQVpKSWdzYmFpZ0NBQ0lGTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUFzYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUpJQWNnQlVFTVFRZ2dBU0FHU1NJTEcyb29BZ0FpQlRZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJpQUVMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBVW9BZ1FMSVFvZ0FTQUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWNnQlVFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ3hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dCeUFGUVF4QkNDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFVb0FnUUxJUVZCQUNFR0lBY2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRklBcEJBWFJ5RGdRQUFRTUZDQXNnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSktBSUFRUk4yUVFGeGNpSVJRWkMrQVdvdEFBQkJBblJxSWdvb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDeUFLSUFWQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lGUVFGcUlRUWdCUzBBQVNFQklBVXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUxJQW9nQlVFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBRktBSUVDeUVGSUJNZ0RpQU1JQVVnRVVHUXdBRnFMUUFBSWdaR0d6WUNBQ0FKSUFrb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklna2dDU2dDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ2tnQ1NnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdrZ0NTZ0NBQ0FGSUFaeklnVkJIM1J5UVlDQUJISTJBZ0FnQlVFVGRDQUJJQllnQXlnQ2JDMEFBa0VDZEdvaUNTZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VLSUFrZ0JVRUlRUXdnQVNBR1NTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hDU0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFKTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0VSc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUW9nQ1NBRlFReEJDQ0FCSUFaSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFrMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQWsyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkViREFFTElBVW9BZ1FMSVFWQkVISWlCaUFGUlEwQkdnc2dBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlLS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ3lnQ0FDSUpLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ1NnQ0JDRVJJQXNnQ1VFSVFRd2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnQ3hzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FKS0FJRUlSRWdDeUFKUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQlNBSkxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBc2JEQUVMSUFrb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ1VZYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRklBbHpRUlowY2tHQUFYSUxJUVlnQVNBV0lBTW9BbXdnQmtFR2RrSHZBM0ZxTFFBQVFRSjBhaUlLS0FJQUlna29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FKS0FJRUlRc2dDaUFKUVFoQkRDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FLR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQWtvQWdRaEN5QUtJQWxCREVFSUlBRWdCVWtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VGSUFrdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0Noc01BUXNnQ1NnQ0JBdEZEUUVMSUFFZ0ZpQU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBWkJCblpCcWdGeGNuSnljaUlTUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUZheUVCQW44Z0JTQUNRUkIyU3dSQUlBa29BZ1FoRVNBTElBbEJDRUVNSUFFZ0JVa2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUJJQWt0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FSSUJGRklBc2JEQUVMSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0NTZ0NCQ0VSSUFzZ0NVRU1RUWdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0VVVWdFU0FMR3d3QkN5QUpLQUlFQ3lFRklCTWdEaUFNSUFVZ0VrR1F3QUZxTFFBQUlnbEdHellDZ0FRZ0NpQUtLQUlBUVlBUWNqWUNBQ0FOSUEwb0FnUkJnQVJ5TmdJRUlBWWdCU0FKYzBFWmRISkJnQWh5SVFZTElBRWdGaUFES0FKc0lBWkJDWFpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VMSUFrZ0NrRUlRUXdnQVNBRlNTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQXNnQzBVZ0VSc01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUXNnQ1NBS1FReEJDQ0FCSUFWSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQkViREFFTElBb29BZ1FMUlEwREN5QUJJQllnRFNnQ0JFRWFka0VFY1NBTlFRUnJJaEVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FHUVFsMlFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzTUFRc0NRQ0FHUVpDQWdBRnhEUUFnQVNBV0lBTW9BbXdnQmtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVJHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRVJzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJFWFpCQkhFZ0RVRUVheUlMS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVFZ2NqWUNBQ0FOSUEwb0FnUkJDSEkyQWdRZ0RVR01BbXNpQ3lBTEtBSUFRWUNBQ0hJMkFnQWdEVUdFQW1zaUN5QUxLQUlBUVlDQUFuSTJBZ0FnRFVHSUFtc2lDeUFMS0FJQUlBVWdDbk1pQlVFZmRISkJnSUFFY2pZQ0FDQUdJQVZCRTNSeVFSQnlJUVlMQWtBZ0JrR0FnWUFJY1EwQUlBRWdGaUFES0FKc0lBWkJBM1lpRVVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVNHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFaHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRWhzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlMS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnRVVHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdLQUFpQUxJQXNvQWdCQmdBSnlOZ0lBSUEwZ0RTZ0NCRUhBQUhJMkFnUWdCaUFGSUFwelFSWjBja0dBQVhJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFFZ0ZpQURLQUpzSUFaQkJuWWlFVUh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFWSkloSWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBU0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFvb0FnUWhDeUFKSUFwQkRFRUlJQUVnQlVraUVodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dFaHNNQVFzZ0NpZ0NCQXRGRFFBZ0FTQVdJQTBvQWdSQkYzWkJCSEVnRFVFRWF5SUxLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFVUdxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VSSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUkVnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNrWWJOZ0tBQkNBTElBc29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQUZJQXB6UVJsMGNrR0FDSEloQmdzZ0JrR0F3SUNBQkhFTkFTQUJJQllnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMEJJQUVnRmlBTktBSUVRUnAyUVFSeElBMUJCR3NpRVNnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJKQnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXdzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlSSWdDU0FLUVFoQkRDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0VpQVNSU0FQR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEVpQUpJQXBCREVFSUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0R4c01BUXNnQ2lnQ0JBc2hCU0FUSUE0Z0RDQUZJQXRCa01BQmFpMEFBQ0lLUmhzMkFvQUdJQkVnRVNnQ0FFR0FnQUZ5TmdJQUlBMGdEU2dDQkVHQUlISTJBZ1FnQlNBS2N5SUZRUngwSUFaeUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdCVUVTZEhKQkFuSTJBb2dDUVlEQUFISWhCZ3NnRFNBR1FmLy8vN1o3Y1RZQ0FBc2dEVUVFYWlFR0lCTkJCR29oQlNBVlFRRnFJaFZCd0FCSERRQUxJQTFCREdvaEJpQVRRWVFHYWlFRklCUkJQRWtnRkVFRWFpRVVEUUFMREFJTFFRRWdHM1FpQVVFQmRpQUJjaUVPSUFNb0FuZ2lCeUFXUVFKMGFrRU1haUVGSUFNb0FvQUJJUVlnQXlnQ0NDRUVJQU1vQWdRaEFTQURLQUlBSVFJZ0F5Z0NhQ0VKSUFNb0FuUWhFeUFYUVFoeEJFQUNRQ0FHUVFSSkRRQWdGZ1JBSUFOQjVBQnFJUWdnQTBIZ0FHb2hEU0FXUVF4c0lTUWdGa0VEZENFY1FRQWdEbXNoRlNBRFFSeHFJUXdEUUVFQUlSSURRQUpBQWtBQ2Z5QUZJZ2NvQWdBaUJRUkFBa0FnQlVHUWdJQUJjUTBBSUFFZ0RDQURLQUpzSUFWQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFTElBa2dDa0VNUVFnZ0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDMFVnQ3lBUEd3d0JDeUFLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVpKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0N5QUxSU0FQR3d0RkRRQWdBU0FNSUFjb0FnUkJFWFpCQkhFZ0IwRUVheUlMS0FJQVFSTjJRUUZ4SUFWQkRuWkJFSEVnQlVFUWRrSEFBSEVnQlVHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFUElBa2dDa0VNUVFnZ0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBZkd3d0JDeUFLS0FJRUlROGdDU0FLUVFoQkRDQUJJQVpKSWg4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FmR3dzaEJpQVRJQTRnRlNBR0lCbEJrTUFCYWkwQUFDSUtSaHMyQWdBZ0N5QUxLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBRklBWWdDbk5CRTNSeVFSQnlJUVVMQWtBZ0JVR0FnWUFJY1EwQUlBRWdEQ0FES0FKc0lBVkJBM1lpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVVka0VFY1NBSFFRUnJJZ3NvQWdCQkZuWkJBWEVnQlVFUGRrRVFjU0FGUVJOMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdGa0VDZEdvZ0RpQVZJQVlnR1VHUXdBRnFMUUFBSWdwR0d6WUNBQ0FMSUFzb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQlNBR0lBcHpRUlowY2tHQUFYSWhCUXNDUUNBRlFZQ0lnTUFBY1EwQUlBRWdEQ0FES0FKc0lBVkJCbllpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ3NvQWdCQkdYWkJBWEVnQlVFU2RrRVFjU0FGUVJaMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUxJQXNvQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFwelFSbDBja0dBQ0hJaEJRc2dCVUdBd0lDQUJIRU5BaUFCSUF3Z0F5Z0NiQ0FGUVFsMklnOUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FHU1NJWkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVpHd3dCQ3lBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFaSkloa2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBWkd3dEZEUUlnQVNBTUlBY29BZ1JCR25aQkJIRWdCMEVFYXlJTEtBSUFRUngyUVFGeElBVkJGWFpCRUhFZ0JVRVpka0hBQUhFZ0QwR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackRBRUxJQUVnRFNnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQTBnQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUtHd3dCQ3lBR0tBSUVJUWtnRFNBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBS0d3dEZCRUFnRFNFSkRBTUxJQUVnQ0NnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0FpQmpZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBWW9BZ1FoQ1NBSUlBWkJDRUVNSUFFZ0JVa2lDeHRxS0FJQUlnWTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFrZ0NVVWdDeHNMSVFvZ0FTQUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUxHd3dCQ3lBR0tBSUVJUWtnQ0NBR1FRaEJEQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBTEd3c2hCa0VBSVFVZ0NDRUpBa0FDUUFKQUFuOENRQUpBSUFZZ0NrRUJkSElPQkFBQkF3VUhDeUFCSUF3Z0J5Z0NCRUVSZGtFRWNTQUhRUVJySWdrb0FnQkJFM1pCQVhGeUlnOUJrTDRCYWkwQUFFRUNkR29pQ2lnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUxJQW9nQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBR0tBSUVJUXNnQ2lBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3c2hCU0FUSUE0Z0ZTQUZJQTlCa01BQmFpMEFBQ0lHUmhzMkFnQWdDU0FKS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUZJQVp6UVJOMElBRWdEQ0FES0FKc0xRQUNRUUowYWlJSktBSUFJZ1lvQWdBaUJXc2hBUUovSUFVZ0FrRVFkazBFUUNBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUW9nQ1NBR1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJ3UkFJQU1nQ1RZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUpOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQThiREFFTElBWW9BZ1FoQ2lBSklBWkJDRUVNSUFFZ0JVa2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQURJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FLSUFwRklBOGJDeUVHUVJCeUlnVWdCa1VOQVJvTElBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDaWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQVZCQTNaQnFnRnhjbkp5Y2lJWlFaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaER5QUxJQWxCREVFSUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VHSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FESUFRMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTlGSUE4Z0N4c01BUXNnQ1NnQ0JDRVBJQXNnQ1VFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBOGdEMFVnQ3hzTElRWWdFeUFXUVFKMGFpQU9JQlVnQmlBWlFaREFBV290QUFBaUNVWWJOZ0lBSUFvZ0NpZ0NBRUdBQW5JMkFnQWdCeUFIS0FJRVFjQUFjallDQkNBRklBWWdDWE5CRm5SeVFZQUJjZ3NoQlNBQklBd2dBeWdDYkNBRlFRWjJRZThEY1dvdEFBQkJBblJxSWdvb0FnQWlDU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBUTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQ0VMSUFvZ0NVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVY0VRQ0FESUFRMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc0xSUTBCQ3lBQklBd2dCeWdDQkVFWGRrRUVjU0FIUVFScklnb29BZ0JCR1haQkFYRWdCVUVTZGtFUWNTQUZRUloyUWNBQWNTQUZRUVoyUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUxLQUlBSWdrb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDU2dDQkF3Q0N5QUpLQUlFSVE4Z0N5QUpRUXhCQ0NBQklBWkpJZ3NiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUNVRUJhaUVFSUFrdEFBRWhCaUFKTFFBQVFmOEJSd1JBSUFNZ0JEWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFFTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUFzYkRBRUxJQWtvQWdRaER5QUxJQWxCQ0VFTUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQXNiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ2xHR3pZQ0FDQUtJQW9vQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFselFSbDBja0dBQ0hJaEJRc2dBU0FNSUFNb0Ftd2dCVUVKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFnc2dBU0FNSUFjb0FnUkJHblpCQkhFZ0IwRUVheUlMS0FJQVFSeDJRUUZ4SUFWQkZYWkJFSEVnQlVFWmRrSEFBSEVnQlVFSmRrR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackN5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhHU0FKSUFwQkRFRUlJQUVnQmtraUh4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFR0lBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUJsRklCa2dIeHNNQVFzZ0NpZ0NCQ0VaSUFrZ0NrRUlRUXdnQVNBR1NTSWZHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVY0VRQ0FESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQmtnR1VVZ0h4c0xJUVlnRXlBa2FpQU9JQlVnQmlBUFFaREFBV290QUFBaUNrWWJOZ0lBSUFzZ0N5Z0NBRUdBZ0FGeU5nSUFJQWNnQnlnQ0JFR0FJSEkyQWdRZ0JpQUtjeUlHUVJ4MElBVnlJQU1vQW54QkFuUWdCMm9pQlNBRktBSUVRUVJ5TmdJRUlBVWdCU2dDREVFQmNqWUNEQ0FGSUFVb0FnZ2dCa0VTZEhKQkFuSTJBZ2hCZ01BQWNpRUZDeUFISUFWQi8vLy90bnR4TmdJQUN5QUhRUVJxSVFVZ0UwRUVhaUVUSUJKQkFXb2lFaUFXUncwQUN5QUhRUXhxSVFVZ0V5QWthaUVUSUJSQkJHb2lGQ0FES0FLQUFTSUdRWHh4U1EwQUN3d0JDMEVFSUFaQmZIRWlCU0FGUVFSTkcwRUJheUlGUVh4eFFRUnFJUlFnQnlBRlFRRjBRWGh4YWtFVWFpRUZDeUFESUFRMkFnZ2dBeUFCTmdJRUlBTWdBallDQUNBRElBazJBbWdnRmtVTkF5QUdJQlJORFFNRFFFRUFJUVFnRkNBREtBS0FBVWNFUUFOQUlBTWdCU0FUSUFRZ0ZteEJBblJxSUE0Z0JFRUJFR0VnQkVFQmFpSUVJQU1vQW9BQklCUnJTUTBBQ3dzZ0JTQUZLQUlBUWYvLy83WjdjVFlDQUNBVFFRUnFJUk1nQlVFRWFpRUZJQkZCQVdvaUVTQVdSdzBBQ3d3REN3SkFJQVpCQkVrTkFDQVdCRUFnQTBIa0FHb2hDQ0FEUWVBQWFpRU5JQlpCREd3aEpDQVdRUU4wSVJ4QkFDQU9heUVWSUFOQkhHb2hEQU5BUVFBaEVnTkFBa0FDUUFKL0lBVWlCeWdDQUNJRkJFQUNRQ0FGUVpDQWdBRnhEUUFnQVNBTUlBTW9BbXdnQlVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFDQUJJQXdnQnlnQ0JFRVJka0VFY1NBSFFRUnJJZ3NvQWdCQkUzWkJBWEVnQlVFT2RrRVFjU0FGUVJCMlFjQUFjU0FGUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFS0lCTWdEaUFWSUFvZ0dVR1F3QUZxTFFBQUlnOUdHellDQUNBTElBc29BZ0JCSUhJMkFnQWdCeUFIS0FJRVFRaHlOZ0lFSUFkQmZpQURLQUo4YTBFQ2RHb2lCaUFHS0FJRVFZQ0FBbkkyQWdRZ0JpQUdLQUlBSUFvZ0QzTWlDa0VmZEhKQmdJQUVjallDQUNBR1FRUnJJZ1lnQmlnQ0FFR0FnQWh5TmdJQUlBVWdDa0VUZEhKQkVISWhCUXNDUUNBRlFZQ0JnQWh4RFFBZ0FTQU1JQU1vQW13Z0JVRURkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDeWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QVdRUUowYWlBT0lCVWdCaUFaUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFR0FBbkkyQWdBZ0J5QUhLQUlFUWNBQWNqWUNCQ0FGSUFZZ0NuTkJGblJ5UVlBQmNpRUZDd0pBSUFWQmdJaUF3QUJ4RFFBZ0FTQU1JQU1vQW13Z0JVRUdkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSZDJRUVJ4SUFkQkJHc2lDeWdDQUVFWmRrRUJjU0FGUVJKMlFSQnhJQVZCRm5aQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ25OQkdYUnlRWUFJY2lFRkN5QUZRWURBZ0lBRWNRMENJQUVnRENBREtBSnNJQVZCQ1hZaUQwSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVpKSWhrYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQmlBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQXlBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCa2JEQUVMSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQmtraUdSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUJrYkMwVU5BaUFCSUF3Z0J5Z0NCRUVhZGtFRWNTQUhRUVJySWdzb0FnQkJISFpCQVhFZ0JVRVZka0VRY1NBRlFSbDJRY0FBY1NBUFFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTUFRc2dBU0FOS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dEU0FHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FOSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFvYkMwVUVRQ0FOSVFrTUF3c2dBU0FJS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBQ0lHTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JpZ0NCQ0VKSUFnZ0JrRUlRUXdnQVNBRlNTSUxHMm9vQWdBaUJqWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ1NBSlJTQUxHd3NoQ2lBQklBWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFZb0FnUWhDU0FJSUFaQkNFRU1JQUVnQlVraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFzYkN5RUdRUUFoQlNBSUlRa0NRQUpBQWtBQ2Z3SkFBa0FnQmlBS1FRRjBjZzRFQUFFREJRY0xJQUVnRENBSEtBSUVRUkYyUVFSeElBZEJCR3NpQ1NnQ0FFRVRka0VCY1hJaUQwR1F2Z0ZxTFFBQVFRSjBhaUlLS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRc2dDaUFHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUFZb0FnUWhDeUFLSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUFvYkN5RUdJQk1nRGlBVklBWWdEMEdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUpJQWtvQWdCQklISTJBZ0FnQnlBSEtBSUVRUWh5TmdJRUlBZEJmaUFES0FKOGEwRUNkR29pQlNBRktBSUVRWUNBQW5JMkFnUWdCU0FGS0FJQUlBWWdDbk1pQmtFZmRISkJnSUFFY2pZQ0FDQUZRUVJySWdVZ0JTZ0NBRUdBZ0FoeU5nSUFJQVpCRTNRZ0FTQU1JQU1vQW13dEFBSkJBblJxSWdrb0FnQWlCaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJUUVJBSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhDaUFKSUFaQkRFRUlJQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRa2dCaTBBQVNFRklBWXRBQUJCL3dGSEJFQWdBeUFKTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEeHNNQVFzZ0JpZ0NCQ0VLSUFrZ0JrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FESUFrMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQW9nQ2tVZ0R4c0xJUVpCRUhJaUJTQUdSUTBCR2dzZ0FTQU1JQWNvQWdSQkZIWkJCSEVnQjBFRWF5SUtLQUlBUVJaMlFRRnhJQVZCRDNaQkVIRWdCVUVUZGtIQUFIRWdCVUVEZGtHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDeWdDQUNJSktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFUElBc2dDVUVNUVFnZ0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVlnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQkRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBTEd3d0JDeUFKS0FJRUlROGdDeUFKUVFoQkRDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FMR3dzaEJpQVRJQlpCQW5ScUlBNGdGU0FHSUJsQmtNQUJhaTBBQUNJSlJoczJBZ0FnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFVZ0JpQUpjMEVXZEhKQmdBRnlDeUVGSUFFZ0RDQURLQUpzSUFWQkJuWkI3d054YWkwQUFFRUNkR29pQ2lnQ0FDSUpLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRUxJQW9nQ1VFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0JEWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBS0d3dEZEUUVMSUFFZ0RDQUhLQUlFUVJkMlFRUnhJQWRCQkdzaUNpZ0NBRUVaZGtFQmNTQUZRUkoyUVJCeElBVkJGblpCd0FCeElBVkJCblpCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUpLQUlFREFJTElBa29BZ1FoRHlBTElBbEJERUVJSUFFZ0Jra2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUdJQWt0QUFCQi93RkhCRUFnQXlBRU5nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQVEyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnQ3hzTUFRc2dDU2dDQkNFUElBc2dDVUVJUVF3Z0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUUVnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdDeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDVVliTmdJQUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ1hOQkdYUnlRWUFJY2lFRkN5QUJJQXdnQXlnQ2JDQUZRUWwyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRHhzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdEeHNMUlEwQ0N5QUJJQXdnQnlnQ0JFRWFka0VFY1NBSFFRUnJJZ3NvQWdCQkhIWkJBWEVnQlVFVmRrRVFjU0FGUVJsMlFjQUFjU0FGUVFsMlFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTElRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVpJQWtnQ2tFTVFRZ2dBU0FHU1NJZkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnR1VVZ0dTQWZHd3dCQ3lBS0tBSUVJUmtnQ1NBS1FRaEJEQ0FCSUFaSkloOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdHU0FaUlNBZkd3c2hCaUFUSUNScUlBNGdGU0FHSUE5QmtNQUJhaTBBQUNJS1JoczJBZ0FnQ3lBTEtBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBR0lBcHpJZ1pCSEhRZ0JYSWdBeWdDZkVFQ2RDQUhhaUlGSUFVb0FnUkJCSEkyQWdRZ0JTQUZLQUlNUVFGeU5nSU1JQVVnQlNnQ0NDQUdRUkowY2tFQ2NqWUNDRUdBd0FCeUlRVUxJQWNnQlVILy8vKzJlM0UyQWdBTElBZEJCR29oQlNBVFFRUnFJUk1nRWtFQmFpSVNJQlpIRFFBTElBZEJER29oQlNBVElDUnFJUk1nRkVFRWFpSVVJQU1vQW9BQklnWkJmSEZKRFFBTERBRUxRUVFnQmtGOGNTSUZJQVZCQkUwYlFRRnJJZ1ZCZkhGQkJHb2hGQ0FISUFWQkFYUkJlSEZxUVJScUlRVUxJQU1nQkRZQ0NDQURJQUUyQWdRZ0F5QUNOZ0lBSUFNZ0NUWUNhQ0FXUlEwQ0lBWWdGRTBOQWdOQVFRQWhCQ0FVSUFNb0FvQUJSd1JBQTBBZ0F5QUZJQk1nQkNBV2JFRUNkR29nRGlBRVFRQVFZU0FFUVFGcUlnUWdBeWdDZ0FFZ0ZHdEpEUUFMQ3lBRklBVW9BZ0JCLy8vL3RudHhOZ0lBSUJOQkJHb2hFeUFGUVFScUlRVWdFVUVCYWlJUklCWkhEUUFMREFJTEEwQkJBQ0VWQTBBZ0JTRVRBa0FDUUFKL0lBWWlEU2dDQUNJR1JRUkFJQUVnQ0NnQ0FDSUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWdnQlVFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dDQ0FGUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFVb0FnUUxSUVJBSUFnaENRd0VDeUFCSUFjb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDU0FISUFWQkNFRU1JQUVnQmtraUN4dHFLQUlBSWdVMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWtnQ1VVZ0N4c01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUWtnQnlBRlFReEJDQ0FCSUFaSklnc2JhaWdDQUNJRk5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQmtFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnQ3hzTUFRc2dCU2dDQkFzaENpQUJJQVVvQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBRktBSUVJUWtnQnlBRlFRaEJEQ0FCSUFaSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQlVFQmFpRUVJQVV0QUFFaEFTQUZMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBTEd3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFVb0FnUWhDU0FISUFWQkRFRUlJQUVnQmtraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFRklBWXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JTZ0NCQXNoQlVFQUlRWWdCeUVKQWtBQ1FBSkFBbjhDUUFKQUlBVWdDa0VCZEhJT0JBQUJBd1VJQ3lBQklCWWdEU2dDQkVFUmRrRUVjU0FOUVFScklna29BZ0JCRTNaQkFYRnlJaEZCa0w0QmFpMEFBRUVDZEdvaUNpZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VMSUFvZ0JVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hCQ0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUXNnQ2lBRlFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQW9iREFFTElBVW9BZ1FMSVFVZ0V5QU9JQXdnQlNBUlFaREFBV290QUFBaUJrWWJOZ0lBSUFrZ0NTZ0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnQlNBR2MwRVRkQ0FCSUJZZ0F5Z0NiQzBBQWtFQ2RHb2lDU2dDQUNJRktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdCU2dDQkNFS0lBa2dCVUVJUVF3Z0FTQUdTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnVkJBV29oQ1NBRkxRQUJJUUVnQlMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdFUnNNQVFzZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUZLQUlFSVFvZ0NTQUZRUXhCQ0NBQklBWkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJrRUJhaUVKSUFZdEFBRWhCU0FHTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFrMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJFYkRBRUxJQVVvQWdRTElRVkJFSElpQmlBRlJRMEJHZ3NnQVNBV0lBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0JrRURka0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUN5Z0NBQ0lKS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NTZ0NCQ0VSSUFzZ0NVRUlRUXdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0N4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSktBSUVJUkVnQ3lBSlFReEJDQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEJTQUpMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQXNiREFFTElBa29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNVWWJOZ0tBQWlBS0lBb29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQUZJQWx6UVJaMGNrR0FBWElMSVFZZ0FTQVdJQU1vQW13Z0JrRUdka0h2QTNGcUxRQUFRUUowYWlJS0tBSUFJZ2tvQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFRklBa3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQXRGRFFFTElBRWdGaUFOS0FJRVFSZDJRUVJ4SUExQkJHc2lDaWdDQUVFWmRrRUJjU0FHUVJKMlFSQnhJQVpCRm5aQndBQnhJQVpCQm5aQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQWtvQWdRaEVTQUxJQWxCQ0VFTUlBRWdCVWtpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQXNiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDU2dDQkNFUklBc2dDVUVNUVFnZ0FTQUZTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBTEd3d0JDeUFKS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ2xHR3pZQ2dBUWdDaUFLS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBSmMwRVpkSEpCZ0FoeUlRWUxJQUVnRmlBREtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMERDeUFCSUJZZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWhFb0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc01BUXNDUUNBR1FaQ0FnQUZ4RFFBZ0FTQVdJQU1vQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVZKSWhFYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FSR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEN5QUpJQXBCREVFSUlBRWdCVWtpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0VSc01BUXNnQ2lnQ0JBdEZEUUFnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJTEtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRVJJQWtnQ2tFSVFRd2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnRHhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlSRWdDU0FLUVF4QkNDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBOGJEQUVMSUFvb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdCaUFGSUFwelFSTjBja0VRY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FCSUJZZ0F5Z0NiQ0FHUVFOMkloRkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRUxJQWtnQ2tFSVFRd2dBU0FGU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklBc2dDMFVnRWhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVZKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFvb0FnUUxSUTBBSUFFZ0ZpQU5LQUlFUVJSMlFRUnhJQTFCQkdzaUN5Z0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCRkJxZ0Z4Y25KeWNpSVNRWkMrQVdvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhFU0FKSUFwQkNFRU1JQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQVJJQkZGSUE4YkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRVJJQWtnQ2tFTVFRZ2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRVVVZ0VTQVBHd3dCQ3lBS0tBSUVDeUVGSUJNZ0RpQU1JQVVnRWtHUXdBRnFMUUFBSWdwR0d6WUNnQUlnQ3lBTEtBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0JTQUtjMEVXZEhKQmdBRnlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUJJQllnQXlnQ2JDQUdRUVoySWhGQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFaHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJJYkRBRUxJQW9vQWdRTFJRMEFJQUVnRmlBTktBSUVRUmQyUVFSeElBMUJCR3NpQ3lnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUJGQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQW9vQWdRaEVTQUpJQXBCQ0VFTUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQThiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDaWdDQkNFUklBa2dDa0VNUVFnZ0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVVnQkMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBUEd3d0JDeUFLS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ3BHR3pZQ2dBUWdDeUFMS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBS2MwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUUVnQVNBV0lBTW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQlVraUVSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUJFYkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FGU1NJUkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVJHd3dCQ3lBS0tBSUVDMFVOQVNBQklCWWdEU2dDQkVFYWRrRUVjU0FOUVFSckloRW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc0xJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VTSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQklnRWtVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUklnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU1JTQVNJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBTFFaREFBV290QUFBaUNrWWJOZ0tBQmlBUklCRW9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBVWdDbk1pQlVFY2RDQUdjaUFOSUEwb0FvUUNRUVJ5TmdLRUFpQU5JQTBvQW93Q1FRRnlOZ0tNQWlBTklBMG9Bb2dDSUFWQkVuUnlRUUp5TmdLSUFrR0F3QUJ5SVFZTElBMGdCa0gvLy8rMmUzRTJBZ0FMSUExQkJHb2hCaUFUUVFScUlRVWdGVUVCYWlJVlFjQUFSdzBBQ3lBTlFReHFJUVlnRTBHRUJtb2hCU0FVUVR4SklCUkJCR29oRkEwQUN3c2dBeUFFTmdJSUlBTWdBVFlDQkNBRElBSTJBZ0FnQXlBSk5nSm9Dd0pBSUJkQklIRkZEUUFnQXlBRFFlUUFhallDYUNBRElBTW9BZ1FnQXlnQ1pDSUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBTW9BZ0FpQkVFUWRrc0VRQ0FESUFFMkFnUWdBeUFHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnbEJBV29oQWlBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUlNQWdzZ0F5QUNOZ0lRSUFWQkNYUWdCR29oQkVFSElRSU1BUXNnQXlBQ05nSVFRUWdoQWlBRlFRaDBJQVJxSVFRTElBTWdBa0VCYXlJQ05nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0F5QUVJQUZCRUhScklnUTJBZ0FnQWtHQWdBSnhEUUFnQXlBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFFRFFBSkFJQUVOQUNBREtBSVFJZ0ZCQVdvaENTQUJMUUFCSVFVZ0FTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFFTUFnc2dBeUFKTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUVNQVFzZ0F5QUpOZ0lRUVFnaEFTQUZRUWgwSUFScUlRUUxJQU1nQVVFQmF5SUJOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQXlBQ0lBWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JFRVFka3NFUUNBRElBRTJBZ1FnQXlBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFJRFFBSkFJQUlOQUNBREtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFVZ0NTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFJTUFnc2dBeUFDTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUlNQVFzZ0F5QUNOZ0lRUVFnaEFpQUZRUWgwSUFScUlRUUxJQU1nQWtFQmF5SUNOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dBeUFFSUFGQkVIUnJJZ1EyQWdBZ0FrR0FnQUp4RFFBZ0F5QUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRRURRQUpBSUFFTkFDQURLQUlRSWdGQkFXb2hDU0FCTFFBQklRVWdBUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRRU1BZ3NnQXlBSk5nSVFJQVZCQ1hRZ0JHb2hCRUVISVFFTUFRc2dBeUFKTmdJUVFRZ2hBU0FGUVFoMElBUnFJUVFMSUFNZ0FVRUJheUlCTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0F5QUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCRUVRZGtzRVFDQURJQUUyQWdRZ0F5QUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdsQkFXb2hBaUFKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRSU1BZ3NnQXlBQ05nSVFJQVZCQ1hRZ0JHb2hCRUVISVFJTUFRc2dBeUFDTmdJUVFRZ2hBaUFGUVFoMElBUnFJUVFMSUFNZ0FrRUJheUlDTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQXlBRUlBRkJFSFJySWdRMkFnQWdBa0dBZ0FKeERRQWdBeUFHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUVEUUFKQUlBRU5BQ0FES0FJUUlnRkJBV29oQ1NBQkxRQUJJUVVnQVMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUVNQWdzZ0F5QUpOZ0lRSUFWQkNYUWdCR29oQkVFSElRRU1BUXNnQXlBSk5nSVFRUWdoQVNBRlFRaDBJQVJxSVFRTElBTWdBVUVCYXlJQk5nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dBeUFDSUFZb0FnQWlBV3NpQWpZQ0JDQUJJQVJCRUhaTEJFQWdBeUFCTmdJRUlBTWdCa0VJUVF3Z0FTQUNTeHRxS0FJQU5nSmtJQU1vQWdnaEFnTkFBa0FnQWcwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFSQmdQNERhaUVFUVFnaEFnd0NDeUFESUFrMkFoQWdCVUVKZENBRWFpRUVRUWNoQWd3QkN5QURJQWsyQWhCQkNDRUNJQVZCQ0hRZ0JHb2hCQXNnQXlBQ1FRRnJJZ0kyQWdnZ0F5QUVRUUYwSWdRMkFnQWdBeUFCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMREFFTElBTWdCQ0FCUVJCMGF5SUZOZ0lBSUFKQmdJQUNjUTBBSUFNZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBTmdKa0lBTW9BZ2doQkFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFSklBWXRBQUVoQVNBR0xRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQkF3Q0N5QURJQWsyQWhBZ0FVRUpkQ0FGYWlFRlFRY2hCQXdCQ3lBRElBazJBaEJCQ0NFRUlBRkJDSFFnQldvaEJRc2dBeUFFUVFGcklnUTJBZ2dnQXlBRlFRRjBJZ1UyQWdBZ0F5QUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDd3NnSjBVTkFDQURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdMUVFBZ0lVRUJhaUlCSUFGQkEwWWlBUnNoSVNBYklBRnJJUnNnS1VFQmFpSXBJQ0FvQWdoUERRRWdHMEVBU2cwQUN3c2dIaUFxYWlFZUlBTW9BaGdnQXk4QmNEc0FBQ0FvUVFGcUlpZ2dHaWdDTEVrTkFBc0xBa0FnSzBVTkFBSkFJQU1vQWhnaUFTQURLQUlRSWdWQkFtcExCRUFnSWtVTkFTQW1JQUVnQXlnQ0ZDSUdhellDT0NBbUlBVWdCbXMyQWpRZ0ppQUJJQVZyUVFKck5nSXdJQjFCQWtIZTlnQWdKa0V3YWhBVERBSUxJQU1vQWd3aUFVRURTUTBCSUNJRVFDQW1JQUUyQWxBZ0hVRUNRWjQzSUNaQjBBQnFFQk1NQWdzZ0ppQUJOZ0pBSUIxQkFrR2VOeUFtUVVCckVCTU1BUXNnSmlBQklBTW9BaFFpQm1zMkFpZ2dKaUFGSUFack5nSWtJQ1lnQVNBRmEwRUNhellDSUNBZFFRSkIzdllBSUNaQklHb1FFd3NnR2lnQ1BFVU5BQ0FESUN3MkFuUUxJREFvQWdRaEFTQWFLQUlNSUJvb0FnZ2dNQ2dDQUdzaEV5QXdLQUlRSWdaQkFYRUVRQ0F5S0FJY0lEaEJtQUZzYWlJSlFaQUJheWdDQUNBVGFpQUpRWmdCYXlnQ0FHc2hFd3NnQVdzaEJTQUdRUUp4QkVBZ01pZ0NIQ0E0UVpnQmJHb2lBVUdNQVdzb0FnQWdCV29nQVVHVUFXc29BZ0JySVFVTElCb29BandpQmlFQ0lBWkZCRUFnQXlnQ2RDRUNDeUFES0FLQUFTRU5JQU1vQW53aEJBSkFJQzhvQXFnR0lnbEZEUUFnRFVVZ0JFVnlJUUVnQ1VFZVRBUkFJQUVOQVVFQUlRZ0RRQ0FFSUFoc0lRTkJBQ0VCQTBBZ0FpQUJJQU5xUVFKMGFpSVhLQUlBSWdjZ0IwRWZkU0lLY3lBS2F5SUtJQWwyQkVBZ0YwRUFJQW9nTHlnQ3FBWjJJaGRySUJjZ0IwRUFTQnMyQWdBTElBRkJBV29pQVNBRVJ3MEFDeUFJUVFGcUlnZ2dEVWNOQUFzTUFRc2dBUTBBSUFKQkFDQUVJQTFzUVFKMEVCa2FDeUFHQkVBZ0JDQU5iQ0VHSUM4b0FoUkJBVVlFUUNBR1JRMEZRUUFoQVNBR1FRUlBCRUFnQmtGOGNTRUJRUUFoQXdOQUlBSWdBMEVDZEdvaUJTQUYvUUFDQUNKSC9Sc0FRUUp0L1JFZ1IvMGJBVUVDYmYwY0FTQkgvUnNDUVFKdC9Sd0NJRWY5R3dOQkFtMzlIQVA5Q3dJQUlBTkJCR29pQXlBQlJ3MEFDeUFCSUFaR0RRWUxBMEFnQWlBQlFRSjBhaUlGSUFVb0FnQkJBbTAyQWdBZ0FVRUJhaUlCSUFaSERRQUxEQVVMSUFaRkRRUWdNQ29DSUVNQUFBQS9sQ0ZOUVFBaEF3SkFJQVpCQkVrRVFDQUNJUUVNQVFzZ0FpQUdRWHh4SWdOQkFuUnFJUUVnVGYwVElVZEJBQ0VGQTBBZ0FpQUZRUUowYWlJSklFY2dDZjBBQWdEOStnSDk1Z0g5Q3dJQUlBVkJCR29pQlNBRFJ3MEFDeUFESUFaR0RRVUxBMEFnQVNCTklBRW9BZ0N5bERnQ0FDQUJRUVJxSVFFZ0EwRUJhaUlESUFaSERRQUxEQVFMSURjZ05tc2hGeUF2S0FJVVFRRkhEUUlnRFVVTkF5QXlLQUlrSWdZZ0JTQVhiQ0lGUVFKMGFpQVRRUUowYWlFSElBUkJmSEVpRzBFQmF5SUJRUVJ4SVJZZ055QUVJRFpxYTBFQ2RDRVVJQUZCQW5aQkFXcEIvdi8vL3dkeElSb2dCU0FUYWtFQ2RDQUdhaUFDYXlFZFFRQWhFeUFCUVFOSElRNERRRUVBSVFFQ1FDQWJSUTBBSUFRZ0Uyd2hCU0FISUJNZ0YyeEJBblJxSVFaQkFDRUpJQTRFUUFOQUlBWWdBVUVDZEdvZ0FpQUJJQVZxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBR0lBRkJCSElpQ0VFQ2RHb2dBaUFGSUFocVFRSjBhdjBBQWdBaVIvMGJBRUVDYmYwUklFZjlHd0ZCQW0zOUhBRWdSLzBiQWtFQ2JmMGNBaUJIL1JzRFFRSnQvUndEL1FzQ0FDQUJRUWhxSVFFZ0NVRUNhaUlKSUJwSERRQUxDeUFXRFFBZ0JpQUJRUUowYWlBQ0lBRWdCV3BCQW5ScS9RQUNBQ0pIL1JzQVFRSnQvUkVnUi8wYkFVRUNiZjBjQVNCSC9Sc0NRUUp0L1J3Q0lFZjlHd05CQW0zOUhBUDlDd0lBSUFGQkJHb2hBUXNDUUNBQklBUlBEUUFnQkNBVGJDRUZJQWNnRXlBWGJFRUNkR29oQ1FKQUFrQWdCQ0FCYXlJSVFRUlBCRUFnSFNBVElCUnNha0VQU3cwQkN5QUJJUVlNQVFzZ0FTQUZhaUVpSUFFZ0NFRjhjU0lLYWlFR1FRQWhBd05BSUFrZ0FTQURha0VDZEdvZ0FpQURJQ0pxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBRFFRUnFJZ01nQ2tjTkFBc2dDQ0FLUmcwQkN5QUdRUUZxSVFFZ0JDQUdhMEVCY1FSQUlBa2dCa0VDZEdvZ0FpQUZJQVpxUVFKMGFpZ0NBRUVDYlRZQ0FDQUJJUVlMSUFFZ0JFWU5BQ0FGUVFGcUlRRURRQ0FKSUFaQkFuUnFJZ2dnQWlBRklBWnFRUUowYWlnQ0FFRUNiVFlDQUNBSUlBSWdBU0FHYWtFQ2RHb29BZ0JCQW0wMkFnUWdCa0VDYWlJR0lBUkhEUUFMQ3lBVFFRRnFJaE1nRFVjTkFBc01Bd3NnSmlBYk5nSUFJQjFCQWtIbnd3QWdKaEFUQ3lBRktBSUFRUUEyQWdBTUFRc2dEVVVOQUNBRVJRMEFJRElvQWlRZ0JTQVhiRUVDZEdvZ0UwRUNkR29oQ1NBRVFYeHhJZ1ZCQW5RaEJpQXdLZ0lnUXdBQUFEK1VJazM5RXlGSFFRQWhDQ0FFUVFSSklSTURRQUpBQWtBZ0V3UkFJQUloQnlBSklRRkJBQ0VEREFFTElBWWdDV29oQVNBQ0lBWnFJUWRCQUNFREEwQWdDU0FEUVFKMElncHFJRWNnQWlBS2F2MEFBZ0Q5K2dIOTVnSDlDd0lBSUFOQkJHb2lBeUFGUncwQUN5QUhJUUlnQlNJRElBUkdEUUVMSUFjaEFnTkFJQUVnVFNBQ0tBSUFzcFE0QWdBZ0FVRUVhaUVCSUFKQkJHb2hBaUFEUVFGcUlnTWdCRWNOQUFzTElBa2dGMEVDZEdvaENTQUlRUUZxSWdnZ0RVY05BQXNMSUFBUUZDQW1RZUFBYWlRQUM5WUVBUWwvSUFBb0FpeEJDRThFUUNBQUtBSW9JUVZCQ0NFS0EwQWdBQ2dDREVFRmRDRUlJQUFvQWdBaEJDQUFLQUlrSVFNQ1FDQUFLQUlVSWdZZ0FDZ0NFQ0lCVFEwQUlBUWdDR29oQnlBQlFRRnFJUUlnQmlBQmEwRUJjUVJBSUFjZ0FVRUdkR29pQ1NBRklBRWdBMnhCQW5ScUlnSDlBQUlBL1FzQ0FDQUpJQUg5QUFJUS9Rc0NFQ0FDSVFFTElBSWdCa1lOQUFOQUlBY2dBVUVHZEdvaUFpQUZJQUVnQTJ4QkFuUnFJZ245QUFJQS9Rc0NBQ0FDSUFuOUFBSVEvUXNDRUNBSElBRkJBV29pQWtFR2RHb2lDU0FGSUFJZ0EyeEJBblJxSWdMOUFBSVEvUXNDRUNBSklBTDlBQUlBL1FzQ0FDQUJRUUpxSWdFZ0JrY05BQXNMQWtBZ0FDZ0NIQ0lHSUFBb0FoZ2lBVTBOQUNBRUlBaHJRU0JxSVFjZ0JTQUFLQUlJSUFOc1FRSjBhaUVJSUFGQkFXb2hBaUFHSUFGclFRRnhCRUFnQnlBQlFRWjBhaUlFSUFnZ0FTQURiRUVDZEdvaUFmMEFBZ0Q5Q3dJQUlBUWdBZjBBQWhEOUN3SVFJQUloQVFzZ0FpQUdSZzBBQTBBZ0J5QUJRUVowYWlJQ0lBZ2dBU0FEYkVFQ2RHb2lCUDBBQWdEOUN3SUFJQUlnQlAwQUFoRDlDd0lRSUFjZ0FVRUJhaUlDUVFaMGFpSUVJQWdnQWlBRGJFRUNkR29pQXYwQUFoRDlDd0lRSUFRZ0F2MEFBZ0Q5Q3dJQUlBRkJBbW9pQVNBR1J3MEFDd3NnQUJBbVFRQWhBU0FBS0FJZ0JFQURRQ0FGSUFBb0FpUWdBV3hCQW5ScUlnSWdBQ2dDQUNBQlFRVjBhaUlEL1FBQ0FQMExBZ0FnQWlBRC9RQUNFUDBMQWhBZ0FVRUJhaUlCSUFBb0FpQkpEUUFMQ3lBRlFTQnFJUVVnQ2tFSWFpSUtJQUFvQWl4TkRRQUxDeUFBS0FJQUVCUWdBQkFVQzYwTkFTTi9JQUFvQWl4QkNFOEVRQ0FBS0FJa0lncEJCWFFoRlNBS1FRZHNJUllnQ2tFR2JDRVhJQXBCQld3aEdDQUtRUU5zSVJrZ0NrRUJkQ0VhSUFBb0FpZ2lBU0FLUVJ4c2FpRWVJQUVnQ2tFWWJHb2hIeUFCSUFwQkZHeHFJU0FnQVNBS1FRUjBhaUVoSUFFZ0NrRU1iR29oSWlBQklBcEJBM1JxSVNNZ0FTQUtRUUowSWh0cUlTUkJDQ0VjQTBBZ0FDQUJJQUFvQWlSQkNCQkRJQUFRSmdKQUlBQW9BaUFpRFVVTkFDQVZJQjFzSVFnZ0FDZ0NBQ0VHUVFBaEJBSkFBa0FnRFVISEFVME5BQ0FCSUFnZ0pHb2lBeUFOUVFKMElnVnFJZ3RKSUFNZ0FTQUZhaUlIU1hFTkFDQUJJQWdnSTJvaUFpQUZhaUlNU1NBQ0lBZEpjUTBBSUFFZ0JTQUlJQ0pxSWdscUlnVkpJQWNnQ1V0eERRQWdCaUFIU1NBQklBWWdEVUVGZEdvaURrRWNheUlQU1hFTkFDQUJJQTVCR0dzaUVFa2dCa0VFYWlJUklBZEpjUTBBSUFFZ0RrRVVheUlTU1NBR1FRaHFJaE1nQjBseERRQWdCeUFHUVF4cUloUkxJQUVnRGtFUWF5SUhTWEVOQUNBRElBeEpJQUlnQzBseERRQWdBeUFGU1NBSklBdEpjUTBBSUFNZ0Qwa2dCaUFMU1hFTkFDQURJQkJKSUFzZ0VVdHhEUUFnQXlBU1NTQUxJQk5MY1EwQUlBTWdCMGtnQ3lBVVMzRU5BQ0FDSUFWSklBa2dERWx4RFFBZ0FpQVBTU0FHSUF4SmNRMEFJQUlnRUVrZ0RDQVJTM0VOQUNBQ0lCSkpJQXdnRTB0eERRQWdBaUFIU1NBTUlCUkxjUTBBSUFrZ0Qwa2dCU0FHUzNFTkFDQUpJQkJKSUFVZ0VVdHhEUUFnQ1NBU1NTQUZJQk5MY1EwQUlBY2dDVXNnQlNBVVMzRU5BQ0FOUVh4eElRUkJBQ0VEQTBBZ0FTQURRUUowYWlBR0lBTkJCWFJxSWdKQjRBQnFJQUpCUUdzZ0FrRWdhaUFDL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBU0FESUFwcVFRSjBhaUFDUWVRQWFpQUNRY1FBYWlBQ1FTUnFJQUw5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUJJQU1nR21wQkFuUnFJQUpCNkFCcUlBSkJ5QUJxSUFKQktHb2dBdjFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFaYWtFQ2RHb2dBa0hzQUdvZ0FrSE1BR29nQWtFc2FpQUMvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnRFVZTkFRc0RRQ0FCSUFSQkFuUnFJQVlnQkVFRmRHb2lBeW9DQURnQ0FDQUJJQVFnQ21wQkFuUnFJQU1xQWdRNEFnQWdBU0FFSUJwcVFRSjBhaUFES2dJSU9BSUFJQUVnQkNBWmFrRUNkR29nQXlvQ0REZ0NBQ0FFUVFGcUlnUWdEVWNOQUFzTElBQW9BZ0FoQmtFQUlRUUNRQ0FOUVROTkRRQWdDQ0FoYWlJRElBZ2dJR29pQWlBTlFRSjBJZ1ZxSWd0SklBSWdBeUFGYWlJSFNYRU5BQ0FESUFnZ0gyb2lDU0FGYWlJTVNTQUhJQWxMY1EwQUlBTWdDQ0FlYWlJSUlBVnFJZ1ZKSUFjZ0NFdHhEUUFnQXlBR0lBMUJCWFJxSWc1QkRHc2lEMGtnQmtFUWFpSVFJQWRKY1EwQUlBTWdEa0VJYXlJUlNTQUdRUlJxSWhJZ0IwbHhEUUFnQXlBT1FRUnJJaE5KSUFaQkdHb2lGQ0FIU1hFTkFDQURJQTVKSUFaQkhHb2lBeUFIU1hFTkFDQUNJQXhKSUFrZ0MwbHhEUUFnQWlBRlNTQUlJQXRKY1EwQUlBSWdEMGtnQ3lBUVMzRU5BQ0FDSUJGSklBc2dFa3R4RFFBZ0FpQVRTU0FMSUJSTGNRMEFJQUlnRGtrZ0F5QUxTWEVOQUNBSUlBeEpJQVVnQ1V0eERRQWdDU0FQU1NBTUlCQkxjUTBBSUFrZ0VVa2dEQ0FTUzNFTkFDQUpJQk5KSUF3Z0ZFdHhEUUFnQ1NBT1NTQURJQXhKY1EwQUlBZ2dEMGtnQlNBUVMzRU5BQ0FJSUJGSklBVWdFa3R4RFFBZ0NDQVRTU0FGSUJSTGNRMEFJQWdnRGtrZ0F5QUZTWEVOQUNBTlFYeHhJUVJCQUNFREEwQWdBU0FESUJ0cVFRSjBhaUFHSUFOQkJYUnFJZ0pCOEFCcUlBSkIwQUJxSUFKQk1Hb2dBdjFjQWhEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFZYWtFQ2RHb2dBa0gwQUdvZ0FrSFVBR29nQWtFMGFpQUMvVndDRlAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FTQURJQmRxUVFKMGFpQUNRZmdBYWlBQ1FkZ0FhaUFDUVRocUlBTDlYQUlZL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQklBTWdGbXBCQW5ScUlBSkIvQUJxSUFKQjNBQnFJQUpCUEdvZ0F2MWNBaHo5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQTFHRFFFTEEwQWdBU0FFSUJ0cVFRSjBhaUFHSUFSQkJYUnFJZ01xQWhBNEFnQWdBU0FFSUJocVFRSjBhaUFES2dJVU9BSUFJQUVnQkNBWGFrRUNkR29nQXlvQ0dEZ0NBQ0FCSUFRZ0ZtcEJBblJxSUFNcUFodzRBZ0FnQkVFQmFpSUVJQTFIRFFBTEN5QWRRUUZxSVIwZ0FTQVZhaUVCSUJ4QkNHb2lIQ0FBS0FJc1RRMEFDd3NnQUNnQ0FCQVVJQUFRRkF0ekFRSi9JQUFvQWh3aUFVRUlhaUlESUFBb0FpQWlBazBFUUFOQUlBQWdBQ2dDR0NBQlFRSjBhaUFBS0FJVVFRZ1FOaUFESWdGQkNHb2lBeUFBS0FJZ0lnSk5EUUFMQ3lBQklBSkpCRUFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFFnQWlBQmF4QTJDeUFBS0FJQUVCUWdBQkFVQzBRQUlBQW9BaHdpQVNBQUtBSWdTUVJBQTBBZ0FDQUFLQUlZSUFBb0FoUWdBV3hCQW5ScUVHWWdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUFLQUlBRUJRZ0FCQVVDd1VBRUc0QUN3WUFFSmtCQUFzTkFCQUxJQUJCZ0FGcUVBb0FDd1VBRUc0QUMyd0JBWDhnQUVRQUFBQUFBQUFBQUJBTkdnSkFRY2pmQVNnQ0FFRWJRUnBCRGlBQVFRRkdHeUFBUVFKR0d5SUFRUUZyZGtFQmNRUkFRY2pnQVVISTRBRW9BZ0JCQVNBQVFRRnJkSEkyQWdBTUFRc2dBRUVDZEVHZ3lRRnFLQUlBSWdJRVFDQUFJQUlSQWdBTEN3dW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQllhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQllhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0M2WUZBZ1orQkg4Z0FTQUJLQUlBUVFkcVFYaHhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlRSWdBU2tEQ0NFSEl3QkJJR3NpQ0NRQUlBZEMvLy8vLy8vL1A0TWhCQUorSUFkQ01JaEMvLzhCZ3lJRHB5SUtRWUg0QUd0Qi9ROU5CRUFnQkVJRWhpQUNRanlJaENFRElBcEJnUGdBYTYwaEJBSkFJQUpDLy8vLy8vLy8vLzhQZ3lJQ1FvR0FnSUNBZ0lDQUNGb0VRQ0FEUWdGOElRTU1BUXNnQWtLQWdJQ0FnSUNBZ0FoU0RRQWdBMElCZ3lBRGZDRURDMElBSUFNZ0EwTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJTQUVmQXdCQ3dKQUlBSWdCSVJRRFFBZ0EwTC8vd0ZTRFFBZ0JFSUVoaUFDUWp5SWhFS0FnSUNBZ0lDQUJJUWhBa0wvRHd3QkN5QUtRZjZIQVVzRVFFSUFJUUpDL3c4TUFRdEJnUGdBUVlINEFDQURVQ0lCR3lJQUlBcHJJZ2xCOEFCS0JFQkNBQ0VDUWdBTUFRc2dBaUVESUFRZ0JFS0FnSUNBZ0lEQUFJUWdBUnNpQlNFR0FrQkJnQUVnQ1dzaUFVSEFBSEVFUUNBQ0lBRkJRR3F0aGlFR1FnQWhBd3dCQ3lBQlJRMEFJQVlnQWEwaUJJWWdBMEhBQUNBQmE2MkloQ0VHSUFNZ0JJWWhBd3NnQ0NBRE53TVFJQWdnQmpjREdBSkFJQWxCd0FCeEJFQWdCU0FKUVVCcXJZZ2hBa0lBSVFVTUFRc2dDVVVOQUNBRlFjQUFJQWxycllZZ0FpQUpyU0lEaUlRaEFpQUZJQU9JSVFVTElBZ2dBamNEQUNBSUlBVTNBd2dnQ0NrRENFSUVoaUFJS1FNQUlnTkNQSWlFSVFJQ1FDQUFJQXBISUFncEF4QWdDQ2tER0lSQ0FGSnhyU0FEUXYvLy8vLy8vLy8vRDRPRUlnTkNnWUNBZ0lDQWdJQUlXZ1JBSUFKQ0FYd2hBZ3dCQ3lBRFFvQ0FnSUNBZ0lDQUNGSU5BQ0FDUWdHRElBSjhJUUlMSUFKQ2dJQ0FnSUNBZ0FpRklBSWdBa0wvLy8vLy8vLy9CMVlpQUJzaEFpQUFyUXNoQXlBSVFTQnFKQUFnQjBLQWdJQ0FnSUNBZ0lCL2d5QURRalNHaENBQ2hMODVBd0FMOUJjREVuOEJmQU4rSXdCQnNBUnJJZ3drQUNBTVFRQTJBaXdDUUNBQnZTSVpRZ0JUQkVCQkFTRVFRYm9JSVJRZ0Fab2lBYjBoR1F3QkN5QUVRWUFRY1FSQVFRRWhFRUc5Q0NFVURBRUxRY0FJUWJzSUlBUkJBWEVpRUJzaEZDQVFSU0VYQ3dKQUlCbENnSUNBZ0lDQWdQai9BSU5DZ0lDQWdJQ0FnUGovQUZFRVFDQUFRU0FnQWlBUVFRTnFJZ1lnQkVILy8zdHhFQ0FnQUNBVUlCQVFIaUFBUVpJSlFmWUtJQVZCSUhFaUF4dEIrd2xCbndzZ0F4c2dBU0FCWWh0QkF4QWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBNQVFzZ0RFRVFhaUVSQWtBQ1FBSkFJQUVnREVFc2FoQndJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWhWQjRRQkhEUUVNQXdzZ0JVRWdjaUlWUWVFQVJnMENJQXdvQWl3aEN3d0JDeUFNSUFaQkhXc2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0EwRUFTQnNoQ2lBTVFUQnFRYUFDUVFBZ0MwRUFUaHRxSWc0aEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBTFFRQk1CRUFnQ3lFSklBY2hCaUFPSVFnTUFRc2dEaUVJSUFzaENRTkFRUjBnQ1NBSlFSMVBHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoRzBJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHNFo4SWhwQ2dKVHIzQU9BSWhsQ2dPeVVvd3grSUJwOFBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBYVFvQ1U2OXdEVkEwQUlBaEJCR3NpQ0NBWlBnSUFDd05BSUFnZ0J5SUdTUVJBSUFaQkJHc2lCeWdDQUVVTkFRc0xJQXdnRENnQ0xDQURheUlKTmdJc0lBWWhCeUFKUVFCS0RRQUxDeUFKUVFCSUJFQWdDa0VaYWtFSmJrRUJhaUVTSUJWQjVnQkdJUk1EUUVFSlFRQWdDV3NpQXlBRFFRbFBHeUVOQWtBZ0JpQUlUUVJBSUFnb0FnQkZRUUowSVFjTUFRdEJnSlRyM0FNZ0RYWWhGa0YvSUExMFFYOXpJUTlCQUNFSklBZ2hCd05BSUFjZ0J5Z0NBQ0lESUExMklBbHFOZ0lBSUFNZ0QzRWdGbXdoQ1NBSFFRUnFJZ2NnQmtrTkFBc2dDQ2dDQUVWQkFuUWhCeUFKUlEwQUlBWWdDVFlDQUNBR1FRUnFJUVlMSUF3Z0RDZ0NMQ0FOYWlJSk5nSXNJQTRnQnlBSWFpSUlJQk1iSWdNZ0VrRUNkR29nQmlBR0lBTnJRUUoxSUJKS0d5RUdJQWxCQUVnTkFBc0xRUUFoQ1FKQUlBWWdDRTBOQUNBT0lBaHJRUUoxUVFsc0lRbEJDaUVISUFnb0FnQWlBMEVLU1EwQUEwQWdDVUVCYWlFSklBTWdCMEVLYkNJSFR3MEFDd3NnQ2lBSlFRQWdGVUhtQUVjYmF5QVZRZWNBUmlBS1FRQkhjV3NpQXlBR0lBNXJRUUoxUVFsc1FRbHJTQVJBSUF4Qk1HcEJoR0JCcEdJZ0MwRUFTQnRxSUFOQmdNZ0FhaUlMUVFsdElnTkJBblJxSVExQkNpRUhJQU5CZDJ3Z0Myb2lBMEVIVEFSQUEwQWdCMEVLYkNFSElBTkJBV29pQTBFSVJ3MEFDd3NDUUNBTktBSUFJZ3NnQ3lBSGJpSVNJQWRzSWc5R0lBMUJCR29pQXlBR1JuRU5BQ0FMSUE5cklRc0NRQ0FTUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNOQVNBSUlBMVBEUUVnRFVFRWF5MEFBRUVCY1VVTkFRdEVBUUFBQUFBQVFFTWhBUXRFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnQXlBR1JodEVBQUFBQUFBQStEOGdDeUFIUVFGMklnTkdHeUFESUF0TEd5RVlBa0FnRncwQUlCUXRBQUJCTFVjTkFDQVltaUVZSUFHYUlRRUxJQTBnRHpZQ0FDQUJJQmlnSUFGaERRQWdEU0FISUE5cUlnTTJBZ0FnQTBHQWxPdmNBMDhFUUFOQUlBMUJBRFlDQUNBSUlBMUJCR3NpRFVzRVFDQUlRUVJySWdoQkFEWUNBQXNnRFNBTktBSUFRUUZxSWdNMkFnQWdBMEgvayt2Y0Ewc05BQXNMSUE0Z0NHdEJBblZCQ1d3aENVRUtJUWNnQ0NnQ0FDSURRUXBKRFFBRFFDQUpRUUZxSVFrZ0F5QUhRUXBzSWdkUERRQUxDeUFOUVFScUlnTWdCaUFESUFaSkd5RUdDd05BSUFZaUN5QUlUU0lIUlFSQUlBWkJCR3NpQmlnQ0FFVU5BUXNMQWtBZ0ZVSG5BRWNFUUNBRVFRaHhJUk1NQVFzZ0NVRi9jMEYvSUFwQkFTQUtHeUlHSUFsS0lBbEJlMHB4SWdNYklBWnFJUXBCZjBGK0lBTWJJQVZxSVFVZ0JFRUljU0lURFFCQmR5RUdBa0FnQncwQUlBdEJCR3NvQWdBaUQwVU5BRUVLSVFOQkFDRUdJQTlCQ25BTkFBTkFJQVlpQjBFQmFpRUdJQThnQTBFS2JDSURjRVVOQUFzZ0IwRi9jeUVHQ3lBTElBNXJRUUoxUVFsc0lRTWdCVUZmY1VIR0FFWUVRRUVBSVJNZ0NpQURJQVpxUVFscklnTkJBQ0FEUVFCS0d5SURJQU1nQ2tvYklRb01BUXRCQUNFVElBb2dBeUFKYWlBR2FrRUpheUlEUVFBZ0EwRUFTaHNpQXlBRElBcEtHeUVLQzBGL0lRMGdDa0g5Ly8vL0IwSCsvLy8vQnlBS0lCTnlJZzhiU2cwQklBb2dEMEVBUjJwQkFXb2hGZ0pBSUFWQlgzRWlCMEhHQUVZRVFDQUpJQlpCLy8vLy93ZHpTZzBESUFsQkFDQUpRUUJLR3lFR0RBRUxJQkVnQ1NBSlFSOTFJZ056SUFOcnJTQVJFQzhpQm10QkFVd0VRQU5BSUFaQkFXc2lCa0V3T2dBQUlCRWdCbXRCQWtnTkFBc0xJQVpCQW1zaUVpQUZPZ0FBSUFaQkFXdEJMVUVySUFsQkFFZ2JPZ0FBSUJFZ0Vtc2lCaUFXUWYvLy8vOEhjMG9OQWdzZ0JpQVdhaUlESUJCQi8vLy8vd2R6U2cwQklBQkJJQ0FDSUFNZ0VHb2lDU0FFRUNBZ0FDQVVJQkFRSGlBQVFUQWdBaUFKSUFSQmdJQUVjeEFnQWtBQ1FBSkFJQWRCeGdCR0JFQWdERUVRYWtFSmNpRUZJQTRnQ0NBSUlBNUxHeUlESVFnRFFDQUlOUUlBSUFVUUx5RUdBa0FnQXlBSVJ3UkFJQVlnREVFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdERUVRYWtzTkFBc01BUXNnQlNBR1J3MEFJQVpCQVdzaUJrRXdPZ0FBQ3lBQUlBWWdCU0FHYXhBZUlBaEJCR29pQ0NBT1RRMEFDeUFQQkVBZ0FFSHZERUVCRUI0TElBZ2dDMDhOQVNBS1FRQk1EUUVEUUNBSU5RSUFJQVVRTHlJR0lBeEJFR3BMQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMQ3lBQUlBWkJDU0FLSUFwQkNVNGJFQjRnQ2tFSmF5RUdJQWhCQkdvaUNDQUxUdzBESUFwQkNVb2dCaUVLRFFBTERBSUxBa0FnQ2tFQVNBMEFJQXNnQ0VFRWFpQUlJQXRKR3lFRElBeEJFR3BCQ1hJaEN5QUlJUWNEUUNBTElBYzFBZ0FnQ3hBdklnWkdCRUFnQmtFQmF5SUdRVEE2QUFBTEFrQWdCeUFJUndSQUlBWWdERUVRYWswTkFRTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTUFRc2dBQ0FHUVFFUUhpQUdRUUZxSVFZZ0NpQVRja1VOQUNBQVFlOE1RUUVRSGdzZ0FDQUdJQXNnQm1zaUJTQUtJQVVnQ2tnYkVCNGdDaUFGYXlFS0lBZEJCR29pQnlBRFR3MEJJQXBCQUU0TkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJBZ0lBQWdFaUFSSUJKckVCNE1BZ3NnQ2lFR0N5QUFRVEFnQmtFSmFrRUpRUUFRSUFzZ0FFRWdJQUlnQ1NBRVFZREFBSE1RSUNBQ0lBa2dBaUFKU2hzaERRd0JDeUFVSUFWQkduUkJIM1ZCQ1hGcUlRa0NRQ0FEUVF0TERRQkJEQ0FEYXlFR1JBQUFBQUFBQURCQUlSZ0RRQ0FZUkFBQUFBQUFBREJBb2lFWUlBWkJBV3NpQmcwQUN5QUpMUUFBUVMxR0JFQWdHQ0FCbWlBWW9hQ2FJUUVNQVFzZ0FTQVlvQ0FZb1NFQkN5QVJJQXdvQWl3aUJ5QUhRUjkxSWdaeklBWnJyU0FSRUM4aUJrWUVRQ0FHUVFGcklnWkJNRG9BQUFzZ0VFRUNjaUVLSUFWQklIRWhDeUFHUVFKcklnNGdCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4UlNBRFFRQk1jU0VJSUF4QkVHb2hCd05BSUFjaUJRSi9JQUdaUkFBQUFBQUFBT0JCWXdSQUlBR3FEQUVMUVlDQWdJQjRDeUlHUVpESkFXb3RBQUFnQzNJNkFBQWdBU0FHdDZGRUFBQUFBQUFBTUVDaUlRRUNRQ0FGUVFGcUlnY2dERUVRYW10QkFVY05BQ0FCUkFBQUFBQUFBQUFBWVNBSWNRMEFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMUVg4aERTQURRZjMvLy84SElBb2dFU0FPYXlJSWFpSUdhMG9OQUNBQVFTQWdBaUFHSUFOQkFtb2dCeUFNUVJCcUlnVnJJZ2NnQjBFQ2F5QURTQnNnQnlBREd5SURhaUlHSUFRUUlDQUFJQWtnQ2hBZUlBQkJNQ0FDSUFZZ0JFR0FnQVJ6RUNBZ0FDQUZJQWNRSGlBQVFUQWdBeUFIYTBFQVFRQVFJQ0FBSUE0Z0NCQWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBMSUF4QnNBUnFKQUFnRFFzRUFFSUFDd1FBUVFBTEhBQWdBQ2dDUEJBUklnQUVmMEhVelFFZ0FEWUNBRUYvQlVFQUN3dktBZ0VIZnlNQVFTQnJJZ01rQUNBRElBQW9BaHdpQkRZQ0VDQUFLQUlVSVFVZ0F5QUNOZ0ljSUFNZ0FUWUNHQ0FESUFVZ0JHc2lBVFlDRkNBQklBSnFJUVZCQWlFR0lBTkJFR29oQVFKL0EwQUNRQUpBQWtBZ0FDZ0NQQ0FCSUFZZ0EwRU1haEFCSWdRRWYwSFV6UUVnQkRZQ0FFRi9CVUVBQzBVRVFDQUZJQU1vQWd3aUIwWU5BU0FIUVFCT0RRSU1Bd3NnQlVGL1J3MENDeUFBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1Bd3NnQVNBSElBRW9BZ1FpQ0VzaUNVRURkR29pQkNBSElBaEJBQ0FKRzJzaUNDQUVLQUlBYWpZQ0FDQUJRUXhCQkNBSkcyb2lBU0FCS0FJQUlBaHJOZ0lBSUFVZ0Iyc2hCU0FHSUFscklRWWdCQ0VCREFFTEN5QUFRUUEyQWh3Z0FFSUFOd01RSUFBZ0FDZ0NBRUVnY2pZQ0FFRUFJQVpCQWtZTkFCb2dBaUFCS0FJRWF3c2dBMEVnYWlRQUMxSUJBWDhnQUNnQ1BDTUFRUkJySWdBa0FDQUJweUFCUWlDSXB5QUNRZjhCY1NBQVFRaHFFQWtpQWdSL1FkVE5BU0FDTmdJQVFYOEZRUUFMSVFJZ0FDa0RDQ0VCSUFCQkVHb2tBRUovSUFFZ0Foc0xCZ0FnQUJBQUN3WUFJQUFRQXd2dmdRRUZBM3d5ZndoN0EzNEdmU01BUWVEQUFHc2lHaVFBSUJwQkFEWUNJRUVDSVE0Q1FBSkFJQUFvQWdBaUNFR05sSnpVQUVZTkFDQUlRZitmL1k4RlJ3UkFBa0FnQ0VHQWdJRGdBRWNOQUNBQUtBSUVRZXFnZ1lFQ1J3MEFJQUFvQWdoQmpaU2MxQUJHRFFJTFFjMElFQUJCQVNFT0RBSUxRUUFoRGdzQ2YwRUFRUUZCNEFBUUZ5SUlSUTBBR2lBSVFRRTJBa3dDUUFKQUFrQUNRQ0FPRGdNQUF3RURDeUFJUWNRQU5nSllJQWhCeFFBMkFsUWdDRUhHQURZQ1VDQUlRY2NBTmdJUUlBaEJ5QUEyQWdRZ0NFSEpBRFlDSENBSVFjb0FOZ0lZSUFoQnl3QTJBaFFnQ0VITUFEWUNBQ0FJUWMwQU5nSmNJQWhCemdBMkFpd2dDRUhQQURZQ0tDQUlRZEFBTmdJa0lBaEIwUUEyQWlBZ0NFSFNBRFlDRENBSVFkTUFOZ0lJSUFnUVZpSU5OZ0l3SUEwTkFRd0NDeUFJUWRRQU5nSllJQWhCMVFBMkFsUWdDRUhXQURZQ1VDQUlRZGNBTmdJUUlBaEIyQUEyQWdRZ0NFSFpBRFlDWENBSVFkb0FOZ0lzSUFoQjJ3QTJBaWdnQ0VIY0FEWUNKQ0FJUWQwQU5nSWdJQWhCM2dBMkFod2dDRUhmQURZQ0dDQUlRZUFBTmdJVUlBaEI0UUEyQWd3Z0NFSGlBRFlDQ0NBSVFlTUFOZ0lBSUFnQ2YwRUJRWWdCRUJjaURRUkFJQTBRVmlJVU5nSUFBa0FnRkVVTkFDQU4vUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDYkNBTlFRQTZBSHdnRFJBNUloUTJBZ1FnRkVVTkFDQU5FRGtpRkRZQ0NDQVVSUTBBSUEwTUFnc2dEUkI5QzBFQUN5SU5OZ0l3SUExRkRRRUxJQWhCQVRZQ1NDQUlRUUUyQWtBZ0NFRUFOZ0k4SUFoQ0FEY0NOQ0FJUVFFMkFrUWdDQXdCQ3lBSUVCUkJBQXNpRFFSQUlBMUJBRFlDUENBTlFlUUFOZ0pJQ3lBTkJFQWdEVUVBTmdJNElBMUI1UUEyQWtRTElBMEVRQ0FOUVFBMkFqUWdEVUhtQURZQ1FBc2dHa0VrYWlJSUJFQWdDRUVBUWJqQUFCQVpJZ2hCQURZQ3VFQWdDRUovTndLSVFBc2dBd1JBSUJvZ0dpZ0MzRUJCQVhJMkF0eEFDeUFhSUFFMkFod2dHaUFBTmdJWUlCb2dBRFlDRkVFQklRNUJBQ0VCQWtBZ0drRVVhaUlJUlEwQVFRRkJ5QUFRRnlJQUJIOENmeUFBUVlDQXdBQTJBa0FnQUVHQWdNQUFFQmdpRkRZQ0lDQVVSUVJBSUFBUUZFRUFEQUVMSUFBZ0ZEWUNKQ0FBUVFJMkFod2dBRUVETmdJWUlBQkJCRFlDRkNBQVFRVTJBaEFnQUVFR05nSXNJQUJCQ0RZQ0tDQUFJQUFvQWtSQkFuSTJBa1FnQUFzRlFRQUxJZ0JGRFFBZ0FBUkFJQUJCQURZQ0JDQUFJQWcyQWdBTElBZzFBZ2doUWlBQUJFQWdBQ0JDTndNSUN3SkFJQUJGRFFBZ0FDMEFSRUVDY1VVTkFDQUFRY0FBTmdJUUN5QUFCRUFnQUVIQ0FEWUNHQXNnQUFSQUlBQkJ3d0EyQWh3TElBQWhBUXNnQVNFQUFuOGdHa0VrYWlFQkFrQWdEVVVOQUNBQlJRMEFJQTBvQWt4RkJFQWdEVUUwYWtFQlFZbk5BRUVBRUJOQkFBd0NDeUFOS0FJd0lBRWdEU2dDR0JFREFFRUJJUWtMSUFrTFJRUkFRZHdJRUFBZ0FCQTlJQTBRUGd3QkN3Si9JQnBCSUdvaEFVRUFJUWdDUUNBQVJRMEFJQTFGRFFBZ0RTZ0NURVVFUUNBTlFUUnFRUUZCMnMwQVFRQVFFMEVBREFJTElBQWdEU2dDTUNBQklBMUJOR29nRFNnQ0FCRUJBQ0VJQ3lBSUMwVUVRRUg0Q0JBQUlBQVFQU0FORUQ0Z0dpZ0NJQkFsREFFTElCb29BaUFoQVVFQUlRZ0NRQ0FOUlEwQUlBQkZEUUFnRFNnQ1RFVU5BQ0FOS0FJd0lBQWdBU0FOUVRScUlBMG9BZ1FSQVFBaENBc0NRQ0FJQkVCQkFDRUlBa0FnRFVVTkFDQUFSUTBBSUEwb0FreEZEUUFnRFNnQ01DQUFJQTFCTkdvZ0RTZ0NFQkVBQUNFSUN5QUlEUUVMUWY4SkVBQWdEUkErSUFBUVBTQWFLQUlnRUNVTUFRc2dBQkE5SUEwUVBpQWFLQUlnSWhRb0Fod2lBQVJBSUFBUUZDQWFLQUlnSWhSQ0FEY0NIQXNnRkNnQ0VDRWhBa0FDUUNBQ1JRUkFBa0FnQkVVTkFDQWhRUVJIRFFCQkFTRVpRUVFoSVF3REN3SkFBa0FnRkNnQ0ZDSUJRUU5HRFFBZ0lVRURSdzBBSUJRb0FoZ2lBQ2dDQUNBQUtBSUVSdzBCSUFBb0FqUkJBVVlOQVNBVVFRTTJBaFFNQXdzZ0lVRUNTdzBBSUJSQkFqWUNGQXdEQ3dKQUFrQWdBVUVEYXc0REF3RUFCQXNqQUVFUWF5SUpKQUFDUUFKQUFrQWdGQ2dDRUVFRVNRMEFJQlFvQWhnaUFDZ0NBQ0lCSUFBb0FqUkhEUUFnQVNBQUtBSm9SdzBBSUFFZ0FDZ0NuQUZIRFFBZ0FDZ0NCQ0lCSUFBb0FqaEhEUUFnQVNBQUtBSnNSdzBBSUFFZ0FDZ0NvQUZHRFFFTElBbEJuUWcyQWdRZ0NVRzRDallDQUVHd3l3RkJ6ajhnQ1JBYURBRUxBa0FnQUNnQ0RDQUFLQUlJYkNJTlJRUkFJQUFvQXNnQklRRU1BUXREQUFDQVAwRi9JQUFvQXJRQmRFRi9jN09WSVVWREFBQ0FQMEYvSUFBb0FvQUJkRUYvYzdPVklVZERBQUNBUDBGL0lBQW9Ba3gwUVg5enM1VWhTRU1BQUlBL1FYOGdBQ2dDR0hSQmYzT3psU0ZHSUFBb0FzZ0JJUUVnQUNnQ2xBRWhBaUFBS0FKZ0lRb2dBQ2dDTENFSVFRQWhBQUpBSUExQkNFa05BQ0FJSUFvZ0RVRUNkQ0lMYWlJUFNTQUtJQWdnQzJvaUZrbHhEUUFnQWlBV1NTQUlJQUlnQzJvaURFbHhEUUFnQVNBV1NTQUlJQUVnQzJvaUMwbHhEUUFnQ2lBTVNTQUNJQTlKY1EwQUlBRWdEMGtnQ2lBTFNYRU5BQ0FCSUF4SklBSWdDMGx4RFFBZ0RVRjhjU0VBSUVYOUV5RTZJRWY5RXlFN0lFajlFeUZBSUViOUV5RTlRUUFoQ3dOQUlBSWdDMEVDZENJUGFpSVcvUUFDQUNFK0lBb2dEMm9pRFAwQUFnQWhQeUFJSUE5cUloRDlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdQU0FRL1FBQ0FQMzZBZjNtQWYzbEFmME1BQUIvUXdBQWYwTUFBSDlEQUFCL1EvM21BZjBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUE2SUFFZ0QycjlBQUlBL2ZvQi9lWUIvZVVCSWp6OTVnSDkrQUg5Q3dJQUlBejlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdRQ0EvL2ZvQi9lWUIvZVVCL1F3QUFIOURBQUIvUXdBQWYwTUFBSDlEL2VZQklEejk1Z0g5K0FIOUN3SUFJQmI5REFBQWdEOEFBSUEvQUFDQVB3QUFnRDhnT3lBKy9mb0IvZVlCL2VVQi9Rd0FBSDlEQUFCL1F3QUFmME1BQUg5RC9lWUJJRHo5NWdIOStBSDlDd0lBSUF0QkJHb2lDeUFBUncwQUN5QUFJQTFHRFFFTEEwQUNmME1BQUlBL0lFWWdDQ0FBUVFKMElndHFJZzhvQWdDeWxKTkRBQUIvUTVSREFBQ0FQeUJGSUFFZ0Myb29BZ0N5bEpNaVNaUWlTb3REQUFBQVQxMEVRQ0JLcUF3QkMwR0FnSUNBZUFzaEZpQUNJQXRxSWd3b0FnQWhFQ0FLSUF0cUlnc29BZ0FoRGlBUElCWTJBZ0FnQ3dKL1F3QUFnRDhnU0NBT3NwU1RRd0FBZjBPVUlFbVVJa3FMUXdBQUFFOWRCRUFnU3FnTUFRdEJnSUNBZ0hnTE5nSUFJQXdDZjBNQUFJQS9JRWNnRUxLVWswTUFBSDlEbENCSmxDSkppME1BQUFCUFhRUkFJRW1vREFFTFFZQ0FnSUI0Q3pZQ0FDQUFRUUZxSWdBZ0RVY05BQXNMSUFFUUZDQVVLQUlZSWdCQkNEWUNnQUVnQUVFSU5nSk1JQUJCQ0RZQ0dDQUFRUUEyQXNnQklCUkJBVFlDRkNBVUlCUW9BaEJCQVdzaUFEWUNFQ0FBUVFSSkRRQkJBeUVBQTBBZ0ZDZ0NHQ0FBUVRSc2FpSUJJQUVvQW1RMkFqQWdBU0FCL1FBQ1ZQMExBaUFnQVNBQi9RQUNSUDBMQWhBZ0FTQUIvUUFDTlAwTEFnQWdBRUVCYWlJQUlCUW9BaEJKRFFBTEN5QUpRUkJxSkFBTUF3c2pBRUVRYXlJSkpBQUNRQUpBQWtBZ0ZDZ0NFRUVEU1EwQUlCUW9BaGdpQUNnQ0FDSUJJQUFvQWpSSERRQWdBU0FBS0FKb1J3MEFJQUFvQWdRaUFTQUFLQUk0UncwQUlBRWdBQ2dDYkVZTkFRc2dDVUhiQ0RZQ0JDQUpRYmdLTmdJQVFiRExBVUg0UHlBSkVCb01BUXNDUUNBQUtBSU1JQUFvQWdoc0lnSkZEUUJCZnlBQUtBSVlJZ3AwUVg5eklRRkJBRUVCSUFwQkFXdDBJZ29nQUNnQ2lBRWJJUTlCQUNBS0lBQW9BbFFiSVJZZ0FDZ0NsQUVoQ2lBQUtBSmdJUWdnQUNnQ0xDRU5RUUFoQUFKQUlBSkJCRWtOQUNBTklBZ2dBa0VDZENJTGFpSU1TU0FJSUFzZ0RXb2lFRWx4RFFBZ0NpQVFTU0FOSUFvZ0Myb2lDMGx4RFFBZ0NDQUxTU0FLSUF4SmNRMEFJQUpCZkhFaEFDQUIvUkVoUENBUC9SRWhQU0FXL1JFaFBrRUFJUXNEUUNBTklBdEJBblFpREdvaUVDQThJQW9nREdvaUR2MEFBZ0FnUGYyeEFmMzZBU0k2L1F4cGRMTS9hWFN6UDJsMHN6OXBkTE0vL2VZQklBZ2dER29pRFAwQUFnQWdQdjJ4QWYzNkFTSTcvUXl6V1JxNHMxa2F1TE5aR3JpeldScTQvZVlCSUJEOUFBSUEvZm9CSWtEOTVBSDk1QUg5REFBQUFEOEFBQUEvQUFBQVB3QUFBRC85NUFIOStBRWlQLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDI0QVNBOElELzlPZjFTL1FzQ0FDQU1JRHdnT3YwTUdkQTJ2eG5RTnI4WjBEYS9HZEEydi8zbUFTQkEvUXpWQ1lBLzFRbUFQOVVKZ0QvVkNZQS8vZVlCSUR2OURDY3hzTDRuTWJDK0p6R3d2aWN4c0w3OTVnSDk1QUg5NUFIOURBQUFBRDhBQUFBL0FBQUFQd0FBQUQvOTVBSDkrQUVpUC8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAyNEFTQThJRC85T2YxUy9Rc0NBQ0FPSUR3Z092ME12VGNHdDcwM0JyZTlOd2EzdlRjR3QvM21BU0JBL1F4bTlIOC9adlIvUDJiMGZ6OW05SDgvL2VZQklEdjlERFhTNGo4MTB1SS9OZExpUHpYUzRqLzk1Z0g5NUFIOTVBSDlEQUFBQUQ4QUFBQS9BQUFBUHdBQUFELzk1QUg5K0FFaU92ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMjRBU0E4SURyOU9mMVMvUXNDQUNBTFFRUnFJZ3NnQUVjTkFBc2dBQ0FDUmcwQkN3TkFBbjhnQ2lBQVFRSjBJZ3RxSWd3b0FnQWdEMnV5SWtWRGFYU3pQNVFnQ0NBTGFpSVFLQUlBSUJacnNpSkhRN05aR3JpVUlBc2dEV29pRGlnQ0FMSWlTSktTUXdBQUFEK1NJa2FMUXdBQUFFOWRCRUFnUnFnTUFRdEJnSUNBZ0hnTElRc2dEaUFCSUF0QkFDQUxRUUJLR3lBQklBdElHellDQUNBUUlBRUNmeUJGUXhuUU5yK1VJRWhEMVFtQVA1UWdSME1uTWJDK2xKS1NRd0FBQUQrU0lrYUxRd0FBQUU5ZEJFQWdScWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBTUlBRUNmeUJGUTcwM0JyZVVJRWhEWnZSL1A1UWdSME0xMHVJL2xKS1NRd0FBQUQrU0lrV0xRd0FBQUU5ZEJFQWdSYWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBQVFRRnFJZ0FnQWtjTkFBc0xJQlJCQVRZQ0ZBc2dDVUVRYWlRQURBSUxJQ0VnQWlBQ0lDRkxHeUVoUVFFaEdRd0JDd0pBQWtBQ2Z3SkFBa0FnRkNnQ0dDSUJLQUlBUVFGSERRQUNRQUpBSUFFb0FqUkJBV3NPQWdFQUFnc2dBU2dDYUVFQ1J3MEJBa0FnQVNnQ0JFRUJSdzBBSUFFb0FqaEJBa2NOQUNBQktBSnNRUUpIRFFBZ0ZDSVdLQUlZSWdBb0FoZ2hBU0FBS0FLVUFTRU9JQUFvQW1BaENpQUFLQUlzSVJBZ0FDZ0NQQ0VmSUFBb0FnZ2lDU0FBS0FJTUlnSnNRUUowSWdBUUhDRUlJQUFRSENFTklBQVFIQ0VVQWtBQ1FBSkFBa0FDUUFKQUlBaEZEUUFnRFVVTkFDQVVSUTBBUVg4Z0FYUkJmM01oREVFQklBRkJBV3QwSVJFZ0FpQVdLQUlFUVFGeElnQnJJU1lnRmlnQ0FFRUJjU0VkSUFCRkRRTWdDVVVOQXdKL1FRQWdFV3V5dXlJRlJHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVJNQ2Z5QUZSQ2N4Q0t3Y1d2dy9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNoRlNBSlFRaEpBbjhnQlVRNzMwK05sMjcyUDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElSc05BU0FOSUFoclFSQkpEUUVnRkNBSWEwRVFTUTBCSUFnZ0VHdEJFRWtOQVNBVUlBMXJRUkJKRFFFZ0RTQVFhMEVRU1EwQklCUWdFR3RCRUVrTkFTQVVJQWxCZkhFaUQwRUNkQ0lDYWlFQUlBSWdDR29oQVNBVi9SRWhPeUFUL1JFaFFDQU0vUkVoUENBYi9SRWhQUU5BSUFnZ0YwRUNkQ0lMYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBTElCQnEvUUFDQUNJNklEMzlyZ0VpUGlBOC9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FMSUExcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb2dRUDJ4QVNJK0lEejl0Z0VnUHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUFzZ0ZHcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdPaUE3L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVdjBMQWdBZ0YwRUVhaUlYSUE5SERRQUxJQUlnRUdvaEVDQUNJQTFxSVFJZ0NTQVBSZzBFREFJTElBZ1FGQ0FORUJRZ0ZCQVVEQVFMSUFnaEFTQU5JUUlnRkNFQUN3TkFJQUVnRUNnQ0FDSUxJQnRxSWhjZ0RDQU1JQmRLRzBFQUlCZEJBRTRiTmdJQUlBSWdDeUFUYXlJWElBd2dEQ0FYU2h0QkFDQVhRUUJPR3pZQ0FDQUFJQXNnRldvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBRUVFYWlFQUlBSkJCR29oQWlBQlFRUnFJUUVnRUVFRWFpRVFJQTlCQVdvaUR5QUpSdzBBQ3d3QkN5QVVJUUFnRFNFQ0lBZ2hBUXNnQ1NBZGF5RWlBa0FnSmtGK2NTSW5CSDhDZjBFQUlCRnJzcnNpQlVScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVlSUNKQmZuRWlLRUVCYXdKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVnUVg1eEFuOGdCVVE3MzArTmwyNzJQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVNNZ0owRUJheUVwUVFKcUlRc2dDVUVDZENFYkEwQWdBQ0FiYWlFWElBSWdHMm9oRlNBQklCdHFJUThnRUNBYmFpRVRJQjBFUUNBQklCQW9BZ0FpQ1NBamFpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FDSUFrZ0htc2lFaUFNSUF3Z0Vrb2JRUUFnRWtFQVRoczJBZ0FnQUNBSklDQnFJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFvb0FnQWhHQ0FQQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFUS0FJQUlnbHFJaElnRENBTUlCSktHMEVBSUJKQkFFNGJOZ0lBSUJVZ0NRSi9JQmdnRVd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FYQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQWxxSWdrZ0RDQUpJQXhJRzBFQUlBbEJBRTRiTmdJQUlCZEJCR29oRnlBVlFRUnFJUlVnRDBFRWFpRVBJQk5CQkdvaEV5QUNRUVJxSVFJZ0VFRUVhaUVRSUFGQkJHb2hBU0FBUVFScUlRQUxRUUFoQ1NBb0JFQURRQ0FLS0FJQUlSd2dBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQUNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNBQ0FDSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQUNBS0tBSUFJUndnQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0JDSVNhaUlZSUF3Z0RDQVlTaHRCQUNBWVFRQk9HellDQkNBQ0lCSUNmeUFjSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lHQ0FNSUF3Z0dFb2JRUUFnR0VFQVRoczJBZ1FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFTYWlJU0lBd2dEQ0FTU2h0QkFDQVNRUUJPR3pZQ0JDQUtLQUlBSVJ3Z0R3Si9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0V5Z0NBQ0lTYWlJWUlBd2dEQ0FZU2h0QkFDQVlRUUJPR3pZQ0FDQVZJQklDZnlBY0lCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpR0NBTUlBd2dHRW9iUVFBZ0dFRUFUaHMyQWdBZ0Z3Si9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBU2FpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FLS0FJQUlSd2dEd0ovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFeWdDQkNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNCQ0FWSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnUWdGd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQkNBT1FRUnFJUTRnQ2tFRWFpRUtJQmRCQ0dvaEZ5QVZRUWhxSVJVZ0QwRUlhaUVQSUJOQkNHb2hFeUFBUVFocUlRQWdBa0VJYWlFQ0lBRkJDR29oQVNBUVFRaHFJUkFnQ1VFQ2FpSUpJQ2hKRFFBTElBc2hDUXNDUUNBSklDSlBEUUFnRUNnQ0FDRVNJQThDZnlBZklBbEJBWFlpR0VZRVFDQUJJQklnSTJvaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdBaUFTSUI1cklna2dEQ0FKSUF4SUcwRUFJQWxCQUU0Yk5nSUFJQUFnRWlBZ2FpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNBQ0FUS0FJQUlna2dIbXNpRHlBTUlBd2dEMG9iUVFBZ0QwRUFUaHNoRHlBSklDQnFJUk1nQ1NBamFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d3d0JDeUFLS0FJQUlROGdBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFbW9pQ1NBTUlBa2dERWdiUVFBZ0NVRUFUaHMyQWdBZ0FpQVNBbjhnRHlBUmE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFBQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRW1vaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdFeWdDQUNJSkFuOGdDaWdDQUNBUmE3SzdJZ1ZFYXJ4MGt4Z0UxaitpSUE0b0FnQWdFV3V5dXlJR1JBd0NLNGNXMmVZL29xQWlCNWxFQUFBQUFBQUE0RUZqQkVBZ0I2b01BUXRCZ0lDQWdIZ0xheUlQSUF4SUlSTWdEeUFNSUJNYklSTWdEMEVBU0NFU0FuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFscUlnOGdEQ0FNSUE5S0d5RWNJQTlCQUVnaEpFRUFJQk1nRWhzaER3Si9JQVZFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpRVRRUUFnSENBa0d3czJBZ0FnRlNBUE5nSUFJQmNnRXlBTUlBd2dFMG9iUVFBZ0UwRUFUaHMyQWdBZ0FFRUVhaUVBSUFKQkJHb2hBaUFCUVFScUlRRWdFRUVFYWlFUUlCZ2dIMDhOQUNBT1FRUnFJUTRnQ2tFRWFpRUtDeUFBSUJ0cUlRQWdBaUFiYWlFQ0lBRWdHMm9oQVNBUUlCdHFJUkFnSlVFQ2FpSWxJQ2RKRFFBTElDbEJmbkZCQW1vRlFRQUxJQ1pQRFFBZ0hRUkFJQUVDZjBFQUlCRnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQ1dvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBaUFKQW44Z0JVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0QzJzaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBQUovSUFWRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlKSUF3Z0NTQU1TQnRCQUNBSlFRQk9HellDQUNBQ1FRUnFJUUlnRUVFRWFpRVFJQUZCQkdvaEFTQUFRUVJxSVFBTElDSWdJa0YrY1NJYkJIOGdHMEVCYXlJSlFYNXhBa0FDZjBFQUlCdEJEMGtOQUJwQkFDQUJJQUlnQ1VFQmRpSVZRUU4wUVFocUloTnFJZ2xKSUFJZ0FTQVRhaUlMU1hFTkFCcEJBQ0FBSUF0SklBRWdBQ0FUYWlJUFNYRU5BQnBCQUNBQklCQWdFMm9pRTBrZ0N5QVFTM0VOQUJwQkFDQUtJQXRKSUFFZ0NpQVZRUUowUVFScUloSnFJaGRKY1EwQUdrRUFJQXNnRGtzZ0FTQU9JQkpxSWd0SmNRMEFHa0VBSUFJZ0Qwa2dBQ0FKU1hFTkFCcEJBQ0FDSUJOSklBa2dFRXR4RFFBYVFRQWdBaUFYU1NBSklBcExjUTBBR2tFQUlBSWdDMGtnQ1NBT1MzRU5BQnBCQUNBQUlCTkpJQThnRUV0eERRQWFRUUFnQUNBWFNTQUtJQTlKY1EwQUdrRUFJQUFnQzBrZ0RpQVBTWEVOQUJvZ0NpQVZRUUZxSWlWQi9QLy8vd2R4SWhkQkFuUWlKbW9oQ1NBQUlCZEJBM1FpRW1vaEN5QUJJQkpxSVE4Z0RQMFJJVHdnRWYwUklVQkJBQ0VWQTBBZ0VDQVZRUU4wSWhOQkdISWlIV29pSnlBUUlCTkJFSElpSG1vaUtDQVFJQk5CQ0hJaUlHb2lHQ0FRSUJOcUlpbjlYQUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJVG9DZnlBT0lCVkJBblFpSEdyOUFBSUFJRUQ5c1FIOStnRWlPLzFmSWozOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEpDQUtJQnhxL1FBQ0FDRS9JQUVnRTJvaUhQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnUHYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FrL1J3QkFuOGdPeUE3L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVB2ME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWtIOXJnRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FCSUNCcUlpUWdPLzFhQWdBQklBRWdIbW9pTENBNy9Wb0NBQUlnQVNBZGFpSXRJRHY5V2dJQUF3Si9JRDhnUVAyeEFmMzZBU0k3L1Y4aVAvME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0E5L1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajM5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElTb2dBaUFUYWlJdS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb0NmeUE5L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQ3I5SEFFQ2Z5QTcvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUGYwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQSsvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdPLzBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlQdjJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlPLzFhQWdBQUlBSWdJR29pS2lBNy9Wb0NBQUVnQWlBZWFpSXZJRHY5V2dJQUFpQUNJQjFxSWpBZ08vMWFBZ0FEQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXJJQUFnRTJvaUUvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FyL1J3QkFuOGdQZjBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJNi9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lEcjlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElqMzlyZ0VpT2lBOC9iWUJJRHI5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqcjlXZ0lBQUNBQUlDQnFJaUFnT3YxYUFnQUJJQUFnSG1vaUhpQTYvVm9DQUFJZ0FDQWRhaUlkSURyOVdnSUFBeUFjL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNkQkJHb2dLRUVFYWlBWVFRUnFJQ245WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESWpzZ1FmMnVBU0k2SUR6OXRnRWdPdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaU92MWFBZ1FBSUNRZ092MWFBZ1FCSUN3Z092MWFBZ1FDSUMwZ092MWFBZ1FESUM3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ095QSsvYkVCSWpvZ1BQMjJBU0E2L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTYvVm9DQkFBZ0tpQTYvVm9DQkFFZ0x5QTYvVm9DQkFJZ01DQTYvVm9DQkFNZ0UvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTdJRDM5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQWdJRHI5V2dJRUFTQWVJRHI5V2dJRUFpQWRJRHI5V2dJRUF5QVZRUVJxSWhVZ0YwY05BQXNnRGlBbWFpRU9JQkFnRW1vaEVDQUNJQkpxSVFJZ0Z5QWxSZ1JBSUE4aEFTQUxJUUFnQ1NFS0RBSUxJQThoQVNBTElRQWdDU0VLSUJkQkFYUUxJUThEUUNBS0tBSUFJUk1nQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0FDSUphaUlMSUF3Z0N5QU1TQnRCQUNBTFFRQk9HellDQUNBQ0lBa0NmeUFUSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lDeUFNSUFzZ0RFZ2JRUUFnQzBFQVRoczJBZ0FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFKYWlJSklBd2dDU0FNU0J0QkFDQUpRUUJPR3pZQ0FDQUtLQUlBSVJNZ0FRSi9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NCQ0lKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3pZQ0JDQUNJQWtDZnlBVElCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpQ3lBTUlBc2dERWdiUVFBZ0MwRUFUaHMyQWdRZ0FBSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNCQ0FPUVFScUlRNGdDa0VFYWlFS0lBQkJDR29oQUNBQ1FRaHFJUUlnQVVFSWFpRUJJQkJCQ0dvaEVDQVBRUUpxSWc4Z0cwa05BQXNMUVFKcUJVRUFDeUlMVFEwQUlCQW9BZ0FoQ1FKOElCOGdDMEVCZGtZRVFBSi9RUUFnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnQ1dvaUNpQU1JQW9nREVnYlFRQWdDa0VBVGhzaERpQUZEQUVMQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3lFT0lBb29BZ0FnRVd1eXV3c2hCaUFCSUE0MkFnQWdBaUFKQW44Z0JrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUFTQU1JQUVnREVnYlFRQWdBVUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlBSUF3Z0FDQU1TQnRCQUNBQVFRQk9HellDQUFzZ0ZpZ0NHQ2dDTEJBVUlCWW9BaGdpQUNBSU5nSXNJQUFvQW1BUUZDQVdLQUlZSWdBZ0RUWUNZQ0FBS0FLVUFSQVVJQllvQWhnaUFDQVVOZ0tVQVNBQUlBRDlBQUlBSWp6OUN3Sm9JQUFnUFAwTEFqUWdGa0VCTmdJVUN3d0hDeUFCS0FJRVFRRkhEUUVnQVNnQ09FRUJSdzBCSUFFb0FteEJBVWNOQVNBQktBSVlJUUFnQVNnQ2xBRWhBaUFCS0FKZ0lRc2dBU2dDTENFT0lBRW9BandoSUNBQktBSUlJZ29nQVNnQ0RDSWpiRUVDZENJQkVCd2hEeUFCRUJ3aEZpQUJFQndoRENBUFJRMEZJQlpGRFFVZ0RFVU5CU0FqQkVBZ0NpQVVLQUlBUVFGeElpeHJJU1VDZjBFQVFRRWdBRUVCYTNRaUUydXl1eUlGUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJU1pCZnlBQWRDQWxRWDV4SWlKQkFXc2lDa0VCZGlJQVFRRnFJU2NDZnlBRlJDY3hDS3djV3Z3L29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2hLQ0FLUVg1eElRb2dBRUVDZENFSUlBQkJBM1FoQUNBblFYeHhJUmRCZjNNaEVRSi9JQVZFTzk5UGpaZHU5aitpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFWUlBcEJBbW9oS1NBSVFRUnFJUndnQUVFSWFpRWJJQmRCQW5RaEpDQVhRUU4wSVJJZ0YwRUJkQ0VRSUJIOUVTRThJQlA5RVNGQUlDSkJCMGtoTFNBUElRb2dGaUVBSUF3aENBTkFJQ3dFUUNBS0lBNG9BZ0FpQVNBWWFpSU5JQkVnRFNBUlNCdEJBQ0FOUVFCT0d6WUNBQ0FBSUFFZ0ptc2lEU0FSSUEwZ0VVZ2JRUUFnRFVFQVRoczJBZ0FnQ0NBQklDaHFJZ0VnRVNBQklCRklHMEVBSUFGQkFFNGJOZ0lBSUFoQkJHb2hDQ0FLUVFScUlRb2dEa0VFYWlFT0lBQkJCR29oQUFzQ2Z3Si9JQ0pGQkVBZ0N5RUpJQWdoQVNBS0lRMUJBQXdCQzBFQUlSa0NRQUpBSUMwTkFDQUtJQUFnRzJvaUFVa2dBQ0FLSUJ0cUlnMUpjUTBBSUFnZ0RVa2dDaUFJSUJ0cUlnbEpjUTBBSUFvZ0RpQWJhaUlWU1NBTklBNUxjUTBBSUFzZ0RVa2dDaUFMSUJ4cUloOUpjUTBBSUFJZ0RVa2dDaUFDSUJ4cUlnMUpjUTBBSUFBZ0NVa2dBU0FJUzNFTkFDQUFJQlZKSUFFZ0RrdHhEUUFnQUNBZlNTQUJJQXRMY1EwQUlBQWdEVWtnQVNBQ1MzRU5BQ0FJSUJWSklBa2dEa3R4RFFBZ0NDQWZTU0FKSUF0TGNRMEFJQUlnQ1VrZ0NDQU5TWEVOQUNBTElDUnFJUWtnQ0NBU2FpRUJJQW9nRW1vaERRTkFJQTRnR1VFRGRDSVZRUmh5SWg5cUlpb2dEaUFWUVJCeUloMXFJaTRnRGlBVlFRaHlJaDVxSWk4Z0RpQVZhaUl3L1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlFNkFuOGdBaUFaUVFKMElpdHEvUUFDQUNCQS9iRUIvZm9CSWp2OVh5STkvUXc3MzArTmwyNzJQenZmVDQyWGJ2WS8vZklCSWo3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJVEVnQ3lBcmF2MEFBZ0FoUHlBS0lCVnFJaXY5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lENzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ01mMGNBUUovSURzZ08vME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMWZJajc5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaU8vMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QTcvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0F5SkIvYTRCSWpzZ1BQMjJBU0E3L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTcvVm9DQUFBZ0NpQWVhaUl4SUR2OVdnSUFBU0FLSUIxcUlqTWdPLzFhQWdBQ0lBb2dIMm9pTkNBNy9Wb0NBQU1DZnlBL0lFRDlzUUg5K2dFaU8vMWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUV5SUFBZ0ZXb2lOZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E2QW44Z1BmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBeS9Sd0JBbjhnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8xZklqMzlER3E4ZEpNWUJOWS9hcngwa3hnRTFqLzk4Z0VnUHYwTURBSXJoeGJaNWo4TUFpdUhGdG5tUC8zeUFmM3dBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWo3OXNRRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FBSUI1cUlqSWdPLzFhQWdBQklBQWdIV29pTmlBNy9Wb0NBQUlnQUNBZmFpSTNJRHY5V2dJQUF3Si9JRC85RENjeENLd2NXdncvSnpFSXJCeGEvRC85OGdFaU8vMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoT0NBSUlCVnFJaFg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lEdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ09QMGNBUUovSUQzOURDY3hDS3djV3Z3L0p6RUlyQnhhL0QvOThnRWlPdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE2L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBeUk5L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUk2L1ZvQ0FBQWdDQ0FlYWlJZUlEcjlXZ0lBQVNBSUlCMXFJaDBnT3YxYUFnQUNJQWdnSDJvaUh5QTYvVm9DQUFNZ0svME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQXFRUVJxSUM1QkJHb2dMMEVFYWlBdy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5STdJRUg5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQXhJRHI5V2dJRUFTQXpJRHI5V2dJRUFpQTBJRHI5V2dJRUF5QTEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRHNnUHYyeEFTSTZJRHo5dGdFZ092ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpT3YxYUFnUUFJRElnT3YxYUFnUUJJRFlnT3YxYUFnUUNJRGNnT3YxYUFnUURJQlg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT3lBOS9hNEJJam9nUFAyMkFTQTYvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VWlJNi9Wb0NCQUFnSGlBNi9Wb0NCQUVnSFNBNi9Wb0NCQUlnSHlBNi9Wb0NCQU1nR1VFRWFpSVpJQmRIRFFBTElBSWdKR29oQWlBT0lCSnFJUTRnQUNBU2FpRUFJQkFoR1NBcElCY2dKMFlOQWhvTUFRc2dDaUVOSUFnaEFTQUxJUWtMQTBBZ0NTZ0NBQ0VMSUEwQ2Z5QUNLQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUE0b0FnQWlDbW9pQ0NBUklBZ2dFVWdiUVFBZ0NFRUFUaHMyQWdBZ0FDQUtBbjhnQ3lBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVNBSUlCRklHMEVBSUFoQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnQ21vaUNpQVJJQW9nRVVnYlFRQWdDa0VBVGhzMkFnQWdDU2dDQUNFTElBMENmeUFDS0FJQUlCTnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElBNG9BZ1FpQ21vaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzMkFnUWdBQ0FLQW44Z0N5QVRhN0s3SWdaRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXRySWdnZ0VTQUlJQkZJRzBFQUlBaEJBRTRiTmdJRUlBRUNmeUFHUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzZ0Ntb2lDaUFSSUFvZ0VVZ2JRUUFnQ2tFQVRoczJBZ1FnQWtFRWFpRUNJQWxCQkdvaENTQUJRUWhxSVFFZ0FFRUlhaUVBSUExQkNHb2hEU0FPUVFocUlRNGdHVUVDYWlJWklDSkpEUUFMSUNrTElnZ2dKVThFUUNBQklRZ2dEU0VLSUFrTUFRc2dEaWdDQUNFS0FuOGdJQ0FJUVFGMklobEdCRUFnQ2lBbWF5SUlJQkVnQ0NBUlNCdEJBQ0FJUVFCT0d5RUxJQW9nR0dvaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzaENDQW9EQUVMSUFvQ2Z5QUpLQUlBSUJOcnNyc2lCVVJxdkhTVEdBVFdQNklnQWlnQ0FDQVRhN0s3SWdaRURBSXJoeGJaNWoraW9DSUhtVVFBQUFBQUFBRGdRV01FUUNBSHFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVVnaEN5QUlJQkVnQ3h0QkFDQUlRUUJPR3lFTEFuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFwcUlnZ2dFU0FJSUJGSUcwRUFJQWhCQUU0YklRZ0NmeUFGUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzTElSVWdEU0FJTmdJQUlBQWdDellDQUNBQklBb2dGV29pQ2lBUklBb2dFVWdiUVFBZ0NrRUFUaHMyQWdBZ0FVRUVhaUVJSUFCQkJHb2hBQ0FOUVFScUlRb2dEa0VFYWlFT0lBa2dHU0FnVHcwQUdpQUNRUVJxSVFJZ0NVRUVhZ3NoQ3lBNVFRRnFJamtnSTBjTkFBc0xJQlFvQWhnb0Fpd1FGQ0FVS0FJWUlnQWdEellDTENBQUtBSmdFQlFnRkNnQ0dDSUFJQlkyQW1BZ0FDZ0NsQUVRRkNBVUtBSVlJZ0FnRERZQ2xBRWdBQ0FBL1FBQ0FDSTgvUXNDYUNBQUlEejlDd0kwSUJSQkFUWUNGRUVBSVJrTUJnc2dBU2dDYUVFQlJ3MEFJQUVvQWdSQkFVY05BQ0FCS0FJNFFRRkhEUUFnQVNnQ2JFRUJSdzBBSUFFb0FoZ2hBaUFCS0FLVUFTRUpJQUVvQW1BaERpQUJLQUlzSVFBZ0FTZ0NEQ0FCS0FJSWJDSU1RUUowSWdFUUhDRUlJQUVRSENFUElBRVFIQ0VMQWtBZ0NFVU5BQ0FQUlEwQUlBdEZEUUFnREVVTkJFRi9JQUowUVg5eklSbEJBU0FDUVFGcmRDRVRJQXhCQ0VrTkFpQVBJQWhyUVJCSkRRSWdDeUFJYTBFUVNRMENJQWdnQUd0QkVFa05BaUFJSUE1clFSQkpEUUlnQ0NBSmEwRVFTUTBDSUFzZ0QydEJFRWtOQWlBUElBQnJRUkJKRFFJZ0R5QU9hMEVRU1EwQ0lBOGdDV3RCRUVrTkFpQUxJQUJyUVJCSkRRSWdDeUFPYTBFUVNRMENJQXNnQ1d0QkVFa05BaUFKSUF4QmZIRWlDa0VDZENJUWFpRU5JQXNnRUdvaEFTQUlJQkJxSVFJZ0dmMFJJVHdnRS8wUklUb0RRQUovSUFrZ0ZrRUNkQ0lSYXYwQUFnQWdPdjJ4QWYzNkFTSTcvVjhpUGYwTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFVklBNGdFV3I5QUFJQUlUOGdDQ0FSYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUlCRnEvUUFDQUNKQUFuOGdQdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUVTQVYvUndCQW44Z095QTcvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpTy8wTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0FnSi9JRDc5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0QvYTRCSWo0Z1BQMjJBU0ErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVV2MExBZ0FDZnlBL0lEcjlzUUg5K2dFaVB2MWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUVWSUE4Z0VXcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdRQUovSUQzOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUkVnRmYwY0FRSi9JRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlJOS9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRHY5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlPLzBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBLzJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RVZJQXNnRVdyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBSi9JRHY5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdGZjBjQVFKL0lEMzlEQ2N4Q0t3Y1d2dy9KekVJckJ4YS9ELzk4Z0VpTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQUlDZnlBNy9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQS8ydUFTSTdJRHo5dGdFZ08vME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVkw5Q3dJQUlCWkJCR29pRmlBS1J3MEFDeUFLSUF4R0RRUWdEaUFRYWlFT0lBQWdFR29oQUNBUElCQnFEQU1MSUFnUUZDQVBFQlFnQ3hBVURBVUxJQnBCendNMkFnUWdHa0c0Q2pZQ0FFR3d5d0ZCbzhBQUlCb1FHZ3dFQ3lBSUlRSWdDeUVCSUFraERTQVBDeUVKQTBBZ0RpZ0NBQ0VSSUFJQ2Z5QU5LQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFBb0FnQWlGbW9pRUNBWklCQWdHVWdiUVFBZ0VFRUFUaHMyQWdBZ0NTQVdBbjhnRVNBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaEFnR1NBUUlCbElHMEVBSUJCQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRm1vaUZpQVpJQllnR1VnYlFRQWdGa0VBVGhzMkFnQWdBVUVFYWlFQklBbEJCR29oQ1NBQ1FRUnFJUUlnRFVFRWFpRU5JQTVCQkdvaERpQUFRUVJxSVFBZ0NrRUJhaUlLSUF4SERRQUxDeUFVS0FJWUtBSXNFQlFnRkNnQ0dDSUFJQWcyQWl3Z0FDZ0NZQkFVSUJRb0FoZ2lBQ0FQTmdKZ0lBQW9BcFFCRUJRZ0ZDZ0NHQ0FMTmdLVUFTQVVRUUUyQWhSQkFDRVpEQUVMSUE4UUZDQVdFQlFnREJBVUN5QWFLQUlnSVFBQ1FDQUREUUFnSVVVTkFDQUFLQUlZSVJSQkFDRVdBMEFnRkNBV1FUUnNhaUlES0FJWUlnSkJDRWNFUUFKQUlBSkJCMDBFUUNBREtBSU1JQU1vQWdoc0lRRWdBeWdDTENFSUlBTW9BaUFFUUNBQlJRMENRUUVnQWtFQmEzU3RJVUpCQUNFS0lBRkJCRThFUUNBQlFYeHhJUW9nUXYwU0lUeEJBQ0VPQTBBZ0NDQU9RUUowYWlJQ0lBTDlBQUlBSWpyOXh3RkJCLzNMQVNJNy9SMEFJRHo5SFFBaVEzLzlFaUE3L1IwQklEejlIUUVpUkgvOUhnRWdPaUE4L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpT3YwZEFDQkRmLzBTSURyOUhRRWdSSC85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQTVCQkdvaURpQUtSdzBBQ3lBQklBcEdEUU1MQTBBZ0NDQUtRUUowYWlJQ0lBSTBBZ0JDQjRZZ1FuOCtBZ0FnQ2tFQmFpSUtJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUNkRUYvYzYwaFFrRUFJUW9nQVVFRVR3UkFJQUZCZkhFaENpQkMvUkloUEVFQUlRNERRQ0FJSUE1QkFuUnFJZ0lnQXYwQUFnQWlPdjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSTcvUjBBSUR6OUhRQWlRNEQ5RWlBNy9SMEJJRHo5SFFFaVJJRDlIZ0VnT2lBOC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWpyOUhRQWdRNEQ5RWlBNi9SMEJJRVNBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FPUVFScUlnNGdDa2NOQUFzZ0FTQUtSZzBDQ3dOQUlBZ2dDa0VDZEdvaUFpQUNOUUlBUXY4QmZpQkNnRDRDQUNBS1FRRnFJZ29nQVVjTkFBc01BUXNnQWtFSWF5RUlJQU1vQWd3Z0F5Z0NDR3doQVNBREtBSXNJUTBnQXlnQ0lBUkFJQUZGRFFGQkFDRUtJQUZCQkU4RVFDQUJRWHh4SVFwQkFDRUNBMEFnRFNBQ1FRSjBhaUlKSUFuOUFBSUFJQWo5ckFIOUN3SUFJQUpCQkdvaUFpQUtSdzBBQ3lBQklBcEdEUUlMQTBBZ0RTQUtRUUowYWlJQ0lBSW9BZ0FnQ0hVMkFnQWdDa0VCYWlJS0lBRkhEUUFMREFFTElBRkZEUUJCQUNFS0lBRkJCRThFUUNBQlFYeHhJUXBCQUNFQ0EwQWdEU0FDUVFKMGFpSUpJQW45QUFJQUlBajlyUUg5Q3dJQUlBSkJCR29pQWlBS1J3MEFDeUFCSUFwR0RRRUxBMEFnRFNBS1FRSjBhaUlDSUFJb0FnQWdDSFkyQWdBZ0NrRUJhaUlLSUFGSERRQUxDeUFEUVFnMkFoZ0xJQlpCQVdvaUZpQWhSdzBBQ3dzZ0FDZ0NEQ0FBS0FJSWJDRUJBa0FnR1VVRVFDQUFLQUlVUVFKR0JFQWdBQ2dDRUVFQlJnUkFJQUFvQWhnb0Fpd2dBUkFTREFNTElBUkZEUUlnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBUkFJREFJTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUVRQnd3QkN3SkFBa0FDUUNBaFFRRnJEZ1FBQXdFQ0F3c2dBQ2dDR0NnQ0xDQUJFQVlNQWdzZ0FDZ0NHQ0lBS0FJc0lBQW9BbUFnQUNnQ2xBRWdBUkFGREFFTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUFvQXNnQklBRVFCQXNnR2lnQ0lCQWxRUUFoRGdzZ0drSGd3QUJxSkFBZ0Rnc0lBRUVJSUFBUUtRdXJBZ0lDZmdKL1FuOGhBeUFBTFFCRVFRaHhSUVJBSUFBZ0FDZ0NJQ0lHTmdJa0FrQUNRQUpBSUFBZ0FDZ0NNQ0lGQkg4RFFDQUdJQVVnQUNnQ0FDQUFLQUlVRVFBQUlnVkJmMFlOQWlBQUlBQW9BaVFnQldvaUJqWUNKQ0FBSUFBb0FqQWdCV3NpQlRZQ01DQUZEUUFMSUFBb0FpQUZJQVlMTmdJa0lBRkNBRlVOQVVJQUlRTU1BZ3NnQUNBQUtBSkVRUWh5TmdKRUlBSkJCRUhQK1FCQkFCQVRJQUJCQURZQ01DQUFJQUFvQWtSQkNISTJBa1JDZnc4TFFnQWhBd05BSUFFZ0FDZ0NBQ0FBS0FJWUVRMEFJZ1JDZjFFRVFDQUNRUVJCd1BrQVFRQVFFeUFBSUFBb0FrUkJDSEkyQWtRZ0FDQUFLUU00SUFOOE53TTRRbjhnQXlBRFVCc1BDeUFESUFSOElRTWdBU0FFZlNJQlFnQlZEUUFMQ3lBQUlBQXBBemdnQTN3M0F6Z0xJQU1MSXdFQmZ5QUJJQUVvQWdBZ0FTZ0NDQ0lCSUFDbklnSWdBU0FDU1J0cU5nSUVRUUVMUEFJQ2Z3RitJQUVvQWdBZ0FTZ0NDR29pQXlBQktBSUVJZ0pHQkVCQ2Z3OExJQUVnQWlBQXAybzJBZ1FnQUNBRElBSnJyQ0lFSUFBZ0JGTWJDNXNCQVFWL1FRRWdBaWdDQ0NJSElBZEJBVTBiSVFRZ0FpZ0NCQ0lESUFJb0FnQnJJUVlEUUNBRUlnVkJBWFFoQkNBRklBWnJJQUZKRFFBTElBVWdCMGNFUUNBRkVCZ2lBMFVFUUVGL0R3c2dBaWdDQUNJRUJFQWdBeUFFSUFZUUZob2dBaWdDQUJBVUN5QUNJQVUyQWdnZ0FpQUROZ0lBSUFJZ0F5QUdhaUlETmdJRUN5QURJQUFnQVJBV0dpQUNJQUlvQWdRZ0FXbzJBZ1FnQVF1T0F3SUNmZ0ovSUFBb0FqQWlCU0FCcHlJR1R3UkFJQUFnQlNBR2F6WUNNQ0FBSUFBb0FpUWdCbW8yQWlRZ0FDQUFLUU00SUFGOE53TTRJQUVQQ3lBQUxRQkVRUVJ4QkVBZ0FFRUFOZ0l3SUFBZ0FDZ0NKQ0FGYWpZQ0pDQUFJQVd0SWdFZ0FDa0RPSHczQXpnZ0FVSi9JQVViRHdzQ1FDQUZSUVJBREFFTElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUZyU0lEZlNFQkN5QUJRZ0JWQkVBRFFDQUFLUU1JSUFBcEF6Z2dBU0FEZkh4VUJFQWdBa0VFUWVuNUFFRUFFQk1nQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dBM3dpQXpjRE9DQUFLUU1JSWdFZ0EzMGhCQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFVRVFDQUFJQUUzQXpnTElBQWdCVUVFY2pZQ1JFSi9JQVFnQVNBRFVSc1BDeUFCSUFBb0FnQWdBQ2dDR0JFTkFDSUVRbjlSQkVBZ0FrRUVRZW41QUVFQUVCTWdBQ0FBS0FKRVFRUnlOZ0pFSUFBZ0FDa0RPQ0FEZkRjRE9FSi9JQU1nQTFBYkR3c2dBeUFFZkNFRElBRWdCSDBpQVVJQVZRMEFDd3NnQUNBQUtRTTRJQU44TndNNElBTUxSZ0VDZnlBQ0tBSUFJQUlvQWdocUlnUWdBaWdDQkNJRFJnUkFRWDhQQ3lBQUlBTWdCQ0FEYXlJQUlBRWdBQ0FCU1JzaUFCQVdHaUFDSUFJb0FnUWdBR28yQWdRZ0FBdXFBZ0VFZnlNQVFSQnJJZ1FrQUFKQUlBQW9BblFOQUNBQ1FRRk5CRUFnQTBFQlFZM0ZBRUVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FFS0FJTUlnWkIvLzhEY1NJSFJRUkFJQU5CQVVHdXhRQkJBQkFUREFFTElBZEJCbXhCQW1vZ0Frc0VRQ0FEUVFGQmpjVUFRUUFRRXd3QkN5QUdRUVpzRUJnaUEwVU5BQ0FBUVFnUUdDSUNOZ0owSUFKRkJFQWdBeEFVREFFTElBSWdBellDQUNBQ0lBUXZBUXdpQWpzQkJDQUNSUVJBUVFFaEJRd0JDMEVBSVFJRFFDQUJRUUpxSUFSQkRHb2lCVUVDRUJVZ0F5QUNRUVpzYWlJR0lBUW9BZ3c3QVFBZ0FVRUVhaUFGUVFJUUZTQUdJQVFvQWd3N0FRSWdBVUVHYWlJQklBVkJBaEFWSUFZZ0JDZ0NERHNCQkVFQklRVWdBa0VCYWlJQ0lBQW9BblF2QVFSSkRRQUxDeUFFUVJCcUpBQWdCUXZzQVFFRWZ5TUFRUkJySWdVa0FBSi9JQUFvQW5naUJFVUVRQ0FEUVFGQjM4UUFRUUFRRTBFQURBRUxJQVFvQWd3RVFDQURRUUZCcWRvQVFRQVFFMEVBREFFTElBSWdCQzBBRWlJQ1FRSjBJZ1JKQkVBZ0EwRUJRYjdFQUVFQUVCTkJBQXdCQzBFQUlBUVFHQ0lFUlEwQUdpQUNCRUJCQUNFREEwQWdBU0FGUVF4cUlnWkJBaEFWSUFRZ0EwRUNkR29pQnlBRktBSU1Pd0VBSUFGQkFtb2dCa0VCRUJVZ0J5QUZLQUlNT2dBQ0lBRkJBMm9nQmtFQkVCVWdCeUFGS0FJTU9nQURJQUZCQkdvaEFTQURRUUZxSWdNZ0FrY05BQXNMSUFBb0FuZ2dCRFlDREVFQkN5QUZRUkJxSkFBTDhBTUJDWDhqQUVFUWF5SUZKQUFDUUNBQ1FRTkpEUUFnQUNnQ2VBMEFJQUVnQlVFTWFrRUNFQlVnQlM4QkRDSUpRWUVJYTBIL2QwMEVRQ0FGSUFrMkFnQWdBMEVCUWFFYklBVVFFd3dCQ3lBQlFRSnFJQVZCREdwQkFSQVZJQVV2QVF3aUNFVUVRQ0FEUVFGQndSaEJBQkFUREFFTElBSWdDRUVEYWtrTkFDQUlJQWxzUVFKMEVCZ2lCMFVOQUNBSUVCZ2lDa1VFUUNBSEVCUU1BUXNnQ0JBWUlndEZCRUFnQnhBVUlBb1FGQXdCQzBFVUVCZ2lCa1VFUUNBSEVCUWdDaEFVSUFzUUZBd0JDeUFCUVFOcUlRTWdCaUFLTmdJSUlBWWdDellDQkNBR0lBazdBUkFnQmlBSE5nSUFJQVVvQWd3aERDQUdRUUEyQWd3Z0JpQU1PZ0FTSUFBZ0JqWUNlQU5BSUFNZ0JVRU1ha0VCRUJVZ0JDQUthaUFGTFFBTVFmOEFjVUVCYWpvQUFDQUVJQXRxSUFVb0FneEJnQUZ4UVFkMk9nQUFJQU5CQVdvaEF5QUVRUUZxSWdRZ0NFY05BQXNnQ1VVRVFFRUJJUVFNQVF0QkFDRUdBMEJCQUNFRVFRQWhBQU5BUVFRZ0JDQUthaTBBQUVFSGFrRURkaUlFSUFSQkJFOGJJZ1FnQXlBQmEyb2dBa29FUUVFQUlRUU1Bd3NnQXlBRlFReHFJQVFRRlNBSElBVW9BZ3cyQWdBZ0IwRUVhaUVISUFNZ0JHb2hBeUFBUVFGcUlnQkIvLzhEY1NJRUlBaEpEUUFMUVFFaEJDQUdRUUZxSWdaQi8vOERjU0FKU1EwQUN3c2dCVUVRYWlRQUlBUUxtQUVCQW44akFFRVFheUlGSkFBZ0FDZ0NHQ0lFUWY4QlJ3UkFJQVVnQkRZQ0FDQURRUUpCMFJRZ0JSQVRDd0pBQWtBZ0FDZ0NGQ0FDUmdSQUlBSU5BVUVCSVFRTUFndEJBQ0VFSUFOQkFVR0o4UUJCQUJBVERBRUxRUUFoQWdOQVFRRWhCQ0FCSUFBb0FrZ2dBa0VNYkdwQkNHcEJBUkFWSUFGQkFXb2hBU0FDUVFGcUlnSWdBQ2dDRkVrTkFBc0xJQVZCRUdva0FDQUVDNDRHQVFaL0l3QkIwQUJySWdRa0FBSkFJQUpCQWswRVFDQURRUUZCNmZBQVFRQVFFd3dCQ3lBQUxRQjhCRUFnQTBFRVFaVFhBRUVBRUJOQkFTRUdEQUVMUVFFaEJpQUJJQUJCS0dwQkFSQVZJQUZCQVdvZ0FFRTBha0VCRUJVZ0FVRUNhaUFBUVN4cVFRRVFGU0FCUVFOcUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWlnaUIwRUJhdzRDQUFFQ0N5QUNRUVpOQkVBZ0JDQUNOZ0lRSUFOQkFVR085Z0FnQkVFUWFoQVRRUUFoQmd3RkN3SkFJQUpCQjBZTkFDQUFLQUl3UVE1R0RRQWdCQ0FDTmdJd0lBTkJBa0dPOWdBZ0JFRXdhaEFUQ3lBRklBQkJNR3BCQkJBVklBQW9BakJCRGtjTkEwRWtFQmdpQlVVRVFFRUFJUVlnQTBFQlFaUStRUUFRRXd3RkN5QUZRUTQyQWdBZ0JFRUFOZ0pBSUFSQkFEWUNPQ0FFUVFBMkFrZ2dCRUVBTmdJOElBUkJBRFlDUkNBRVFRQTJBa3hCc09xUUFpRUdJQVJCc09xUUFqWUNOQ0FGUVlDTWxhSUVOZ0lFQW44Z0FrRUhSd1JBSUFKQkkwWUVRQ0FCUVFkcUlBUkJ6QUJxUVFRUUZTQUJRUXRxSUFSQnlBQnFRUVFRRlNBQlFROXFJQVJCeEFCcVFRUVFGU0FCUVJOcUlBUkJRR3RCQkJBVklBRkJGMm9nQkVFOGFrRUVFQlVnQVVFYmFpQUVRVGhxUVFRUUZTQUJRUjlxSUFSQk5HcEJCQkFWSUFWQkFEWUNCQ0FFS0FJMElRWWdCQ2dDT0NFQ0lBUW9Ba0FoQXlBRUtBSThJUWNnQkNnQ1JDRUlJQVFvQWt3aENTQUVLQUpJREFJTElBUWdBallDSUNBRFFRSkJzdllBSUFSQklHb1FFd3RCQUNFQ1FRQWhBMEVBSVFkQkFBc2hBU0FGSUFjMkFoZ2dCU0FJTmdJUUlBVWdDVFlDQ0NBRklBWTJBaUFnQlNBQ05nSWNJQVVnQXpZQ0ZDQUZJQUUyQWd3Z0FFRUFOZ0p3SUFBZ0JUWUNiQXdEQ3lBQUlBSkJBMnNpQVRZQ2NDQUFRUUVnQVJBWElnTTJBbXdnQTBVTkFTQUNRUU5NRFFKQkFDRUNBMEFnQlNBRVFjd0Fha0VCRUJVZ0FDZ0NiQ0FDYWlBRUtBSk1PZ0FBSUFWQkFXb2hCU0FDUVFGcUlnSWdBVWNOQUFzTUFnc2dCMEVEU1EwQ0lBUWdCellDQUNBRFFRUkJxZndBSUFRUUV3d0NDMEVBSVFZZ0FFRUFOZ0p3REFFTFFRRWhCaUFBUVFFNkFId0xJQVJCMEFCcUpBQWdCZ3UwQXdFRGZ5TUFRU0JySWdRa0FBSkFJQUFvQWtnRVFDQURRUUpCd2paQkFCQVRRUUVoQWd3QkN5QUNRUTVIQkVCQkFDRUNJQU5CQVVISThBQkJBQkFUREFFTElBRWdBRUVRYWtFRUVCVWdBVUVFYWlBQVFReHFRUVFRRlNBQlFRaHFJQUJCRkdwQkFoQVZJQUFvQWd3aEJRSkFJQVFDZnlBQUtBSVFJZ1pGQkVBZ0FDZ0NGQXdCQ3lBQUtBSVVJZ0lnQlVVTkFCb2dBZzBCUVFBTE5nSUlJQVFnQmpZQ0JDQUVJQVUyQWdBZ0EwRUJRYXp2QUNBRUVCTkJBQ0VDREFFTElBSkJnWUFCYTBILy8zNU5CRUJCQUNFQ0lBTkJBVUhXN2dCQkFCQVREQUVMSUFBZ0FrRU1FQmNpQWpZQ1NDQUNSUVJBUVFBaEFpQURRUUZCKys0QVFRQVFFd3dCQzBFQklRSWdBVUVLYWlBQVFSaHFRUUVRRlNBQlFRdHFJQUJCSEdwQkFSQVZJQUFvQWh3aUJVRUhSd1JBSUFRZ0JUWUNFQ0FEUVFSQjYvNEFJQVJCRUdvUUV3c2dBVUVNYWlBQVFTQnFRUUVRRlNBQlFRMXFJQUJCSkdwQkFSQVZJQUFvQWdBaUFTQUJMUURVQVVIN0FYRWdBQ2dDR0VIL0FVWkJBblJ5T2dEVUFTQUFLQUlBSWdFZ0FDZ0NERFlDOEFFZ0FTQUFLQUlRTmdMMEFTQUFRUUU2QUlVQkN5QUVRU0JxSkFBZ0FndTNCQUVGZnlNQVFSQnJJZ1lrQUFKL0lBQXRBR1JCQW5GRkJFQWdBMEVCUWJmWUFFRUFFQk5CQUF3QkN5QUFRUUEyQW1nQ1FBSkFBa0FnQWdSQUEwQWdBa0VIVFFSQUlBTkJBVUdtR2tFQUVCTU1CUXNnQVNBR1FReHFJZ1ZCQkJBVklBWW9BZ3doQkNBQlFRUnFJQVZCQkJBVlFRZ2hCeUFHS0FJTUlRVUNRQUpBQWtBQ1FDQUVEZ0lCQUFNTElBSkJFRWtFUUVIT0dpRUVEQWNMSUFGQkNHb2dCa0VJYWtFRUVCVWdCaWdDQ0FSQVFkekJBQ0VFREFjTElBRkJER29nQmtFTWFrRUVFQlVnQmlnQ0RDSUVEUUZCbnhraEJBd0dDeUFEUVFGQm54bEJBQkFUREFZTFFSQWhCd3NnQkNBSFNRUkFJQU5CQVVHWHh3QkJBQkFUREFVTElBSWdCRWtFUUNBRFFRRkJ6OFlBUVFBUUUwRUFEQVlMQWtBQ1FDQUFJQUVnQjJvZ0JDQUhheUFEQW44Q1FBSkFBa0FnQlVIeDJMMmJCa3dFUUNBRlFlUEd3Wk1HUmcwQklBVkI1c3FSbXdaR0RRTWdCVUh3d3JXYkJrY05CVUdneFFFTUJBc2dCVUh5MkkyREIwWU5BVUdBeFFFZ0JVSHl5S0hMQmtZTkF4b2dCVUh5MkwyYkJrY05CRUdJeFFFTUF3dEJrTVVCREFJTFFaakZBUXdCQzBHb3hRRUxLQUlFRVFFQURRRkJBQXdIQ3lBQUlBQW9BbWhCLy8vLy93ZHlOZ0pvQzBFQklBZ2dCVUh5eUtITEJrWWJJUWdnQVNBRWFpRUJJQUlnQkdzaUFnMEFDeUFJRFFFTElBTkJBVUhyeFFCQkFCQVRRUUFNQXdzZ0FFRUJPZ0NFQVNBQUlBQW9BbVJCQkhJMkFtUkJBUXdDQ3lBRFFRRWdCRUVBRUJNTElBTkJBVUdMRDBFQUVCTkJBQXNnQmtFUWFpUUFDK0lCQVFGL0lBQW9BbVJCQVVjRVFDQURRUUZCNU5nQVFRQVFFMEVBRHdzQ1FDQUNRUWROQkVBTUFRc2dBU0FBUVRocVFRUVFGU0FCUVFScUlBQkJQR3BCQkJBVklBSkJBM0VFUUF3QkN5QUFJQUpCQ0dzaUFrRUNkaUlFTmdKQUFrQWdBa1VOQUNBQUlBUkJCQkFYSWdJMkFrUWdBa1VFUUNBRFFRRkJsaEZCQUJBVFFRQVBDeUFBS0FKQVJRMEFJQUZCQ0dvaEEwRUFJUUlEUUNBRElBQW9Ba1FnQWtFQ2RHcEJCQkFWSUFOQkJHb2hBeUFDUVFGcUlnSWdBQ2dDUUVrTkFBc0xJQUFnQUNnQ1pFRUNjallDWkVFQkR3c2dBMEVCUVo0dVFRQVFFMEVBQzM0QkFYOGpBRUVRYXlJRUpBQUNmeUFBS0FKa0JFQWdBMEVCUVlIWUFFRUFFQk5CQUF3QkN5QUNRUVJIQkVBZ0EwRUJRY0l1UVFBUUUwRUFEQUVMSUFFZ0JFRU1ha0VFRUJVZ0JDZ0NERUdLanFyb0FFY0VRQ0FEUVFGQjZpWkJBQkFUUVFBTUFRc2dBQ0FBS0FKa1FRRnlOZ0prUVFFTElBUkJFR29rQUF2RUFRRUNmeUFBSUFBb0FpQWlCRFlDSkFKQUlBQW9BakFpQXdSQUEwQWdCQ0FESUFBb0FnQWdBQ2dDRkJFQUFDSURRWDlHRFFJZ0FDQUFLQUlrSUFOcUlnUTJBaVFnQUNBQUtBSXdJQU5ySWdNMkFqQWdBdzBBQ3lBQUtBSWdJUVFMSUFCQkFEWUNNQ0FBSUFRMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ3dCRkJFQWdBQ0FBS0FKRVFRaHlOZ0pFUVFBUEN5QUFJQUUzQXpoQkFROExJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJ6L2tBUVFBUUV5QUFJQUFvQWtSQkNISTJBa1JCQUFzTkFDQUFLQUlBSUFFZ0FoQk9Dd2tBSUFBb0FnQVFVd3NKQUNBQUtBSUFFRklMRFFBZ0FDZ0NBQ0FCSUFJUVZRdEJBUUYvSUFJRWZ5QURRUUpCeTg4QVFRQVFFeUFBS0FJQUlBRWdBaUFESUFRUVQwVUVRQ0FEUVFGQm5UQkJBQkFUUVFBUEN5QUFJQUlnQXhCK0JVRUFDd3NWQUNBQUtBSUFJQUVnQWlBRElBUWdCU0FHRUZjTER3QWdBQ2dDQUNBQklBSWdBeEJZQ3hNQUlBQW9BZ0FnQVNBQ0lBTWdCQ0FGRURFTEhRQWdBQ2dDQUNBQklBSWdBeUFFSUFVZ0JpQUhJQWdnQ1NBS0VDd0w1UVFCQm44Z0FTZ0NDRUUySUFNUUtFVUVRRUVBRHdzZ0FTZ0NCQ0lJS0FJQUlRY2dDQ2dDQ0NFR0FrQWdCd1JBUVFFaEJTQUhRUUZ4SVFrZ0IwRUJSZ1IvUVFBRklBZEJmbkVoQndOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUhSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NSc2hCUUpBSUFsRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0NFRUFOZ0lBSUFVTkFVRUFEd3NnQ0VFQU5nSUFDeUFCS0FJSUlnY29BZ0FoQkNBSEtBSUlJUVlDUUNBRUJFQkJBU0VGSUFSQkFYRWhDQ0FFUVFGR0JIOUJBQVVnQkVGK2NTRUpRUUFoQkFOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUpSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NCc2hCUUpBSUFoRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0IwRUFOZ0lBSUFVTkFVRUFEd3NnQjBFQU5nSUFDeUFCTFFDRUFVVUVRQ0FEUVFGQmk5c0FRUUFRRTBFQUR3c2dBUzBBaFFGRkJFQWdBMEVCUWU3YUFFRUFFQk5CQUE4TElBQWdBU2dDQUNBQ0lBTVFXUUpBSUFKRkRRQWdBaWdDQUNJQVJRMEFRUUVoQkFKQUFrQUNRQUpBQWtBQ1FDQUJLQUl3UVF4ckRnMERCQVFFQlFBQkJBUUVCQVFDQkF0QkFpRUVEQVFMUVFNaEJBd0RDMEVFSVFRTUFndEJCU0VFREFFTFFYOGhCQXNnQUNBRU5nSVVJQUVvQW13aUJVVU5BQ0FBSUFVMkFod2dBaWdDQUNBQktBSndOZ0lnSUFGQkFEWUNiQXNMNGdrQ0NYOEJmaU1BUWZBQWF5SURKQUJCZ0FnaENBSi9Ba0JCQVVHQUNCQVhJZ1lFUUNBRFFkd0FhaUVMSUFOQjdBQnFJUWtEUUFKQUFrQUNRQ0FCSUFOQjZBQnFJZ1JCQ0NBQ0VCMUJDRWNOQUNBRUlBTkIyQUJxUVFRUUZTQUpJQXRCQkJBVlFRZ2hCUUpBQWtBQ1FBSkFBa0FnQXlnQ1dBNENBQUVFQ3lBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2lERUw0Ly8vL0QxTU5BU0FDUVFGQjNNRUFRUUFRRXd3RUN5QUJJQU5CNkFCcUlnUkJDQ0FDRUIxQkNFY05BeUFFSUFOQjVBQnFRUVFRRlNBREtBSmtSUTBCSUFKQkFVSGN3UUJCQUJBVERBTUxJQU1nREtkQkNHbzJBbGdNQVFzZ0NTQURRZGdBYWtFRUVCVkJFQ0VGQ3lBREtBSmNJZ1JCNCtUQTB3WkdCRUFnQUNnQ1pDSUJRUVJ4QkVBZ0FDQUJRUWh5TmdKa0RBSUxJQUpCQVVHaExFRUFFQk1nQmhBVVFRQU1Cd3NnQXlnQ1dDSUhSUVJBSUFKQkFVR2ZHVUVBRUJNZ0JoQVVRUUFNQndzZ0JTQUhTd1JBSUFNZ0JEWUNCQ0FESUFjMkFnQWdBa0VCUWNqc0FDQURFQk1NQmdzQ1FBSi9BbjhDUUFKL0FrQUNRQUpBQWtBQ1FDQUVRZkhZdlpzR1RBUkFJQVJCNDhiQmt3WkdEUUlnQkVIbXlwR2JCa1lOQkNBRVFmREN0WnNHUncwQlFhREZBUXdHQ3lBRVFaL0F3TklHVEFSQUlBUkI4dGk5bXdaR0RRVkJnTVVCSUFSQjhzaWh5d1pHRFFZYUlBUkI4UExSc3daSERRRkI2TVFCREFnTElBUkI4dGlOZ3dkR0RRSWdCRUdnd01EU0JrWU5Ca0h3eEFFZ0JFSG81TURUQmtZTkJ4b0xJQUFvQW1RaUJFRUJjUTBJSUFKQkFVSHBEMEVBRUJNZ0JoQVVRUUFNRHd0QmtNVUJEQU1MUVpqRkFRd0NDMEdveFFFTUFRdEJpTVVCQ3lFS0lBTWdCRUgvQVhFMkFrd2dBeUFFUVJoMk5nSkFJQU1nQkVFSWRrSC9BWEUyQWtnZ0F5QUVRUkIyUWY4QmNUWUNSQ0FDUVFKQnRnOGdBMEZBYXhBVElBY2dCV3NpQlNBQUxRQmtRUVJ4RFFJYUlBTWdBeWdDWENJRVFSaDJOZ0l3SUFNZ0JFSC9BWEUyQWp3Z0F5QUVRUkIyUWY4QmNUWUNOQ0FESUFSQkNIWkIvd0Z4TmdJNElBSkJBa0hPTkNBRFFUQnFFQk1nQUNBQUtBSmtRZi8vLy84SGNqWUNaQ0FCSUFXdElnd2dBaUFCS0FJb0VRZ0FJQXhSRFFjZ0FrRUJRZjhjUVFBUUV5QUdFQlJCQUF3S0MwSGd4QUVMSVFvZ0J5QUZhd3NoQlNBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2dCYTFUQkVBZ0F5Z0NXQ0VFSUFNb0Fsd2hBQ0FESUFFcEF3Z2lERkFFZmtJQUJTQU1JQUVwQXpoOUN6NENLQ0FESUFVMkFpUWdBeUFBUWY4QmNUWUNJQ0FESUFCQkdIWTJBaFFnQXlBRU5nSVFJQU1nQUVFSWRrSC9BWEUyQWh3Z0F5QUFRUkIyUWY4QmNUWUNHQ0FDUVFGQm0vb0FJQU5CRUdvUUV3d0hDeUFGSUFoTkJFQWdCaUVFREFRTElBVWhDQ0FHSUFVUUd5SUVEUU1nQmhBVUlBSkJBVUhzRUVFQUVCTkJBQXdIQ3lBRVFRSnhSUVJBSUFKQkFVR3ZFRUVBRUJNZ0JoQVVRUUFNQndzZ0FDQUVRZi8vLy84SGNqWUNaQ0FCSUFjZ0JXdXRJZ3dnQWlBQktBSW9FUWdBSUF4UkRRTWdBQzBBWkVFSWNVVU5BU0FDUVFKQi94eEJBQkFUQ3lBR0VCUkJBUXdGQ3lBQ1FRRkIveHhCQUJBVElBWVFGRUVBREFRTElBRWdCQ0FGSUFJUUhTQUZSd1JBSUFKQkFVR3hIVUVBRUJNZ0JCQVVRUUFNQkFzZ0FDQUVJZ1lnQlNBQ0lBb29BZ1FSQVFBTkFBc2dCQkFVUVFBTUFnc2dBa0VCUVpZbVFRQVFFMEVBREFFTElBWVFGRUVBQ3lBRFFmQUFhaVFBQytBQkFRWi9JQUFvQWdoQk5pQUNFQ2hGQkVCQkFBOExJQUFvQWdnaUJpZ0NBQ0VESUFZb0FnZ2hCUUpBSUFNRVFFRUJJUVFnQTBFQmNTRUhJQU5CQVVZRWYwRUFCU0FEUVg1eElRTURRQUovUVFBZ0JFVU5BQnBCQUNBQUlBRWdBaUFGS0FJQUVRQUFSUTBBR2lBQUlBRWdBaUFGS0FJRUVRQUFRUUJIQ3lFRUlBVkJDR29oQlNBSVFRSnFJZ2dnQTBjTkFBc2dCRVVMSVFOQkFDQUVJQWNiSVFRQ1FDQUhSUTBBSUFNTkFDQUFJQUVnQWlBRktBSUFFUUFBUVFCSElRUUxJQVpCQURZQ0FDQUVEUUZCQUE4TElBWkJBRFlDQUFzZ0FDZ0NBQnBCQVFzS0FDQUFLQUlBR2tFQUN5a0FBa0FnQUNnQ0FDSUFSUTBBSUFBZ0FUWUMwQUVnQVVVTkFDQUFJQUF0QUZ4QkNISTZBRndMQ3lFQUlBQW9BZ0FnQVJCY0lBQkJBRG9BZkNBQUlBRW9BcmhBUVFGeE5nS0FBUXN5QUNBQ1JRUkFRUUFQQ3lBQUtBSUFJQUVnQWlBREVGRkZCRUFnQTBFQlFaMHdRUUFRRTBFQUR3c2dBQ0FDSUFNUWZndHBBZ0ovQVh3akFFRVFheUlESkFBZ0FnUkFBMEFnQUNBRFFRaHFFRTBnQVFKL0lBTXJBd2dpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMTmdJQUlBRkJCR29oQVNBQVFRaHFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTGhBRUNBbjhCZlNNQVFSQnJJZ01rQUNBQ0JFQURRQ0FESUFBdEFBQTZBQThnQXlBQUxRQUJPZ0FPSUFNZ0FDMEFBam9BRFNBRElBQXRBQU02QUF3Z0FRSi9JQU1xQWd3aUJZdERBQUFBVDEwRVFDQUZxQXdCQzBHQWdJQ0FlQXMyQWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TEFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFRUVCVWdBU0FES0FJTU5nSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxTd0VDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NERFlDQUNBQlFRUnFJUUVnQUVFQ2FpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzBvQkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUWhxRUUwZ0FTQURLd01JdGpnQ0FDQUJRUVJxSVFFZ0FFRUlhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMyZ0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBeUFBTFFBQU9nQVBJQU1nQUMwQUFUb0FEaUFESUFBdEFBSTZBQTBnQXlBQUxRQURPZ0FNSUFFZ0F5b0NERGdDQUNBQlFRUnFJUUVnQUVFRWFpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUXhxUVFRUUZTQUJJQU1vQWd5ek9BSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxUQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NETE00QWdBZ0FVRUVhaUVCSUFCQkFtb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF1cUNBSU5md0Y3SXdCQkVHc2lDQ1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaENRSkFJQUpGQkVBZ0EwRUJRZjRnUVFBUUV3d0JDeUFBS0FKZ0lRWkJBU0VFSUFFZ0NFRUlha0VCRUJVZ0NDZ0NDQ0lGUVFKUEJFQWdBMEVDUVp2TUFFRUFFQk1NQVFzZ0JVRUJhaUFDUndSQVFRQWhCQ0FEUVFKQi9pQkJBQkFUREFFTEFrQWdCaWdDRUNJRFJRMEFJQWtvQXRBcklRUWdBMEVJVHdSQUlBTkJlSEVoQmtFQUlRSURRQ0FFUVFBMkFyeERJQVJCQURZQ2hEc2dCRUVBTmdMTU1pQUVRUUEyQXBRcUlBUkJBRFlDM0NFZ0JFRUFOZ0trR1NBRVFRQTJBdXdRSUFSQkFEWUN0QWdnQkVIQXd3QnFJUVFnQWtFSWFpSUNJQVpIRFFBTEN5QURRUWR4SWdORkRRQkJBQ0VDQTBBZ0JFRUFOZ0swQ0NBRVFiZ0lhaUVFSUFKQkFXb2lBaUFEUncwQUN3c2dDU2dDNkNzaUFnUi9JQUlRRkNBSlFRQTJBdWdySUFnb0FnZ0ZJQVVMUlFSQVFRRWhCQXdCQ3dOQUlBRkJBV29pQVNBSVFReHFRUUVRRlFKQUlBa29Bb0FzUlEwQUlBa29BdndySWdNb0FnQWdDQ2dDREVjTkFDQURLQUlFSWdVZ0FDZ0NZQ0lHS0FJUVJ3MEFJQU1vQWdnaUFnUkFRUUFoQkNBQ0tBSVFJQVVnQld3aUJTQUNLQUlBUVFKMFFaRENBV29vQWdCc1J3MERJQWtnQlVFQ2RCQVlJZ2MyQXVncklBZEZEUU1nQWlnQ0RDQUhJQVVnQWlnQ0FFRUNkRUhBeEFGcUtBSUFFUVVBQ3lBREtBSU1JZ0pGRFFCQkFDRUVJQUlvQWhBZ0JpZ0NFQ0lESUFJb0FnQkJBblJCa01JQmFpZ0NBR3hIRFFJZ0EwRUNkQkFZSWdWRkRRSWdBaWdDRENBRklBTWdBaWdDQUVFQ2RFSFF4QUZxS0FJQUVRVUFBa0FnQmlnQ0VDSUhSUTBBSUFrb0F0QXJJUVJCQUNFTEFrQUNRQ0FIUVFSSkRRQWdCRUcwQ0dvaURDQUZJQWRCQW5ScVNRUkFJQVVnQkNBSFFiZ0liR3BKRFFFTElBUkIzQ0ZxSVEwZ0JFR2tHV29oRGlBRVFld1FhaUVQSUFVZ0IwRjhjU0lHUVFKMGFpRUNJQVFnQmtHNENHeHFJUVJCQUNFREEwQWdEQ0FEUWJnSWJDSUthaUFGSUFOQkFuUnEvUUFDQUNJUi9Wb0NBQUFnQ2lBUGFpQVIvVm9DQUFFZ0NpQU9haUFSL1ZvQ0FBSWdDaUFOYWlBUi9Wb0NBQU1nQTBFRWFpSURJQVpIRFFBTElBWWdCMFlOQWd3QkN5QUZJUUpCQUNFR0N5QUhJQVlpQTJ0QkIzRWlDZ1JBQTBBZ0JDQUNLQUlBTmdLMENDQURRUUZxSVFNZ0JFRzRDR29oQkNBQ1FRUnFJUUlnQzBFQmFpSUxJQXBIRFFBTEN5QUdJQWRyUVhoTERRQURRQ0FFSUFJb0FnQTJBclFJSUFRZ0FpZ0NCRFlDN0JBZ0JDQUNLQUlJTmdLa0dTQUVJQUlvQWd3MkF0d2hJQVFnQWlnQ0VEWUNsQ29nQkNBQ0tBSVVOZ0xNTWlBRUlBSW9BaGcyQW9RN0lBUWdBaWdDSERZQ3ZFTWdCRUhBd3dCcUlRUWdBa0VnYWlFQ0lBTkJDR29pQXlBSFJ3MEFDd3NnQlJBVUMwRUJJUVFnRUVFQmFpSVFJQWdvQWdoSkRRQUxDeUFJUVJCcUpBQWdCQXNFQUVKL0M3c0pBUXAvSXdCQkVHc2lCU1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEJ3Si9JQUpCQVUwRVFDQURRUUZCekNSQkFCQVRRUUFNQVFzZ0FTQUZRUXhxUVFJUUZTQUZLQUlNQkVBZ0EwRUNRZVF0UVFBUUUwRUJEQUVMSUFKQkJrMEVRQ0FEUVFGQnpDUkJBQkFUUVFBTUFRc2dBVUVDYWlBRlFRaHFRUUVRRlNBSEtBTDhLeUlKSVFBQ1FBSkFBa0FnQnlnQ2dDd2lCa1VOQUNBRktBSUlJUWdEUUNBQUtBSUFJQWhHRFFFZ0FFRVVhaUVBSUFSQkFXb2lCQ0FHUncwQUN3d0JDeUFFSUFaSERRRUxJQWNvQW9Rc0lBWkdCSDhnQnlBR1FRcHFJZ0EyQW9Rc0lBa2dBRUVVYkJBYklnQkZCRUFnQnlnQy9Dc1FGQ0FIUVFBMkFvUXNJQWRDQURjQy9Dc2dBMEVCUWVZa1FRQVFFMEVBREFNTElBY2dBRFlDL0NzZ0FDQUhLQUtBTENJRVFSUnNha0VBSUFjb0FvUXNJQVJyUVJSc0VCa2FJQWNvQXZ3cklRa2dCeWdDZ0N3RklBWUxRUlJzSUFscUlRQkJBU0VMQ3lBQUlBVW9BZ2cyQWdBZ0FVRURhaUFGUVF4cVFRSVFGU0FGS0FJTUJFQWdBMEVDUWVRdFFRQVFFMEVCREFFTElBRkJCV29nQlVFRWFrRUNFQlVnQlNnQ0JDSUVRUUpQQkVBZ0EwRUNRWlVZUVFBUUUwRUJEQUVMSUFKQkIyc2hCaUFFQkVBZ0FVRUhhaUVDUVFBaENRTkFJQVpCQWswRVFDQURRUUZCekNSQkFCQVRRUUFNQXdzZ0FpQUZRUXhxUVFFUUZTQUZLQUlNUVFGSEJFQWdBMEVDUWFZclFRQVFFMEVCREFNTElBSkJBV29nQlVFQ0VCVWdBQ0FGS0FJQUlnUkIvLzhCY1NJQk5nSUVJQVpCQTJzaUNDQUVRUTkyUVFGcUlnWWdBV3hCQW1vaUNra0VRQ0FEUVFGQnpDUkJBQkFUUVFBTUF3c2dBa0VEYWlFQ1FRQWhCQ0FCQkVBRFFDQUNJQVZCREdvZ0JoQVZJQVFnQlNnQ0RFY0VRQ0FEUVFKQnpqQkJBQkFUUVFFTUJRc2dBaUFHYWlFQ0lBUkJBV29pQkNBQUtBSUVTUTBBQ3dzZ0FpQUZRUUlRRlNBRklBVW9BZ0FpQkVILy93RnhJZ0UyQWdBZ0FDZ0NCQ0FCUndSQUlBTkJBa0hGR1VFQUVCTkJBUXdEQ3lBSUlBcHJJZ29nQkVFUGRrRUJhaUlHSUFGc1FRTnFJZ3hKQkVBZ0EwRUJRY3drUVFBUUUwRUFEQU1MSUFKQkFtb2hBa0VBSVFRZ0FRUkFBMEFnQWlBRlFReHFJQVlRRlNBRUlBVW9BZ3hIQkVBZ0EwRUNRYzR3UVFBUUUwRUJEQVVMSUFJZ0Jtb2hBaUFFUVFGcUlnUWdBQ2dDQkVrTkFBc0xJQUlnQlVFTWFrRURFQlVnQlNnQ0RDRUdJQUJDQURjQ0NDQUFJQVpCZ0lBRWNVVWdBQzBBRUVIK0FYRnlPZ0FRSUFVZ0JrSC9BWEVpQ0RZQ0NBSkFJQWhGRFFBZ0J5Z0M5Q3NpRFFSQUlBY29BdkFySVFSQkFDRUJBMEFnQ0NBRUtBSUlSZ1JBSUFBZ0JEWUNDQXdEQ3lBRVFSUnFJUVFnQVVFQmFpSUJJQTFIRFFBTEN5QURRUUZCekNSQkFCQVRRUUFNQXdzZ0JTQUdRUWgyUWY4QmNTSUdOZ0lJQWtBZ0JrVU5BQ0FIS0FMMEt5SUlCRUFnQnlnQzhDc2hCRUVBSVFFRFFDQUdJQVFvQWdoR0JFQWdBQ0FFTmdJTURBTUxJQVJCRkdvaEJDQUJRUUZxSWdFZ0NFY05BQXNMSUFOQkFVSE1KRUVBRUJOQkFBd0RDeUFLSUF4cklRWWdBa0VEYWlFQ0lBbEJBV29pQ1NBRktBSUVTUTBBQ3dzZ0JnUkFJQU5CQVVITUpFRUFFQk5CQUF3QkMwRUJJQXRGRFFBYUlBY2dCeWdDZ0N4QkFXbzJBb0FzUVFFTElBVkJFR29rQUF2MUFRRUZmeU1BUVJCcklnUWtBQUpBSUFBb0FtQW9BaEFpQmtFQ2FpQUNSd1JBSUFOQkFVSGtJMEVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FHSUFRb0FneEhCRUFnQTBFQlFlUWpRUUFRRXd3QkN5QUdSUVJBUVFFaEJRd0JDeUFCUVFKcUlRSWdBQ2dDWUNnQ0dDRUFRUUFoQVFOQUlBSWdCRUVJYWtFQkVCVWdBQ0FFS0FJSUlnVkIvd0J4SWdkQkFXb2lDRFlDR0NBQUlBVkJCM1pCQVhFMkFpQWdCMEVmVHdSQUlBUWdDRFlDQkNBRUlBRTJBZ0FnQTBFQlFZWDRBQ0FFRUJOQkFDRUZEQUlMSUFCQk5Hb2hBRUVCSVFVZ0FrRUJhaUVDSUFGQkFXb2lBU0FHUncwQUN3c2dCRUVRYWlRQUlBVUxsQVVCQ1g4akFFRVFheUlISkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDdEFFZ0FDZ0M1QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUZBbjhnQWtFQlRRUkFJQU5CQVVIL0gwRUFFQk5CQUF3QkN5QUJJQWRCREdwQkFoQVZBa0FnQnlnQ0RBUkFJQU5CQWtIekcwRUFFQk1NQVFzZ0FrRUdUUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFCUVFKcUlBZEJER3BCQWhBVklBVW9BdkFySVFRZ0J5MEFEQ0VLQWtBQ1FBSkFJQVVvQXZRcklnWkZCRUFnQkNFQURBRUxJQVFoQUFOQUlBQW9BZ2dnQ2tZTkFTQUFRUlJxSVFBZ0NFRUJhaUlJSUFaSERRQUxEQUVMSUFZZ0NFY05BUXNnQlNnQytDc2dCa1lFUUNBRklBWkJDbW9pQURZQytDc2dCQ0FBUVJSc0VCc2hBQ0FGS0FMd0t5RUVJQUJGQkVBZ0JCQVVJQVZCQURZQytDc2dCVUlBTndMd0t5QURRUUZCbVNCQkFCQVRRUUFNQkFzQ1FDQUFJQVJHRFFBZ0JTZ0NnQ3dpQzBVTkFDQUZLQUw4S3lFTVFRQWhDQU5BSUF3Z0NFRVViR29pQmlnQ0NDSUpCRUFnQmlBQUlBa2dCR3RxTmdJSUN5QUdLQUlNSWdrRVFDQUdJQUFnQ1NBRWEybzJBZ3dMSUFoQkFXb2lDQ0FMUncwQUN3c2dCU0FBTmdMd0t5QUFJQVVvQXZRcklnUkJGR3hxUVFBZ0JTZ0MrQ3NnQkd0QkZHd1FHUm9nQlNnQzlDc2hCaUFGS0FMd0t5RUVDeUFGSUFaQkFXbzJBdlFySUFRZ0JrRVViR29oQUFzZ0FDZ0NEQ0lFQkVBZ0JCQVVJQUJDQURjQ0RBc2dBQ0FLTmdJSUlBQWdCeWdDRENJRVFRcDJRUU54TmdJQUlBQWdCRUVJZGtFRGNUWUNCQ0FCUVFScUlBZEJER3BCQWhBVklBY29BZ3dFUUNBRFFRSkJxaGRCQUJBVERBRUxJQUFnQWtFR2F5SUNFQmdpQkRZQ0RDQUVSUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFFSUFGQkJtb2dBaEFXR2lBQUlBSTJBaEFMUVFFTElBZEJFR29rQUFzbkFFRUJJUUVnQUNnQ1lDZ0NFRUVDZENBQ1J3Ui9JQU5CQVVITElrRUFFQk5CQUFWQkFRc0xwd01CQkg4akFFRVFheUlHSkFBQ2Z5QUNRUUZOQkVBZ0EwRUJRZW9lUVFBUUUwRUFEQUVMSUFBdEFOUUJRUUZ4QkVBZ0EwRUJRZGZpQUVFQUVCTkJBQXdCQ3lBQUtBSzBBU0FBS0FMa0FVR01MR3hxSWdBZ0FDMEFpQ3hCQW5JNkFJZ3NJQUVnQmtFTWFrRUJFQlVDUUNBQUtBS3NLQ0lFUlFSQUlBQWdCaWdDREVFQmFpSUZRUWdRRnlJRU5nS3NLQ0FFUlFSQUlBTkJBVUdFSDBFQUVCTkJBQXdEQ3lBQUlBVTJBcWdvREFFTElBWW9BZ3dpQlNBQUtBS29LRWtOQUNBRUlBVkJBV29pQkVFRGRCQWJJZ1ZGQkVBZ0EwRUJRWVFmUVFBUUUwRUFEQUlMSUFBZ0JUWUNyQ2dnQlNBQUtBS29LQ0lIUVFOMGFrRUFJQVFnQjJ0QkEzUVFHUm9nQUNBRU5nS29LQ0FBS0FLc0tDRUVDeUFFSUFZb0Fnd2lCVUVEZEdvb0FnQUVRQ0FHSUFVMkFnQWdBMEVCUWZJMklBWVFFMEVBREFFTElBSkJBV3NpQWhBWUlRUWdBQ2dDckNnaUFDQUdLQUlNSWdWQkEzUnFJQVEyQWdBZ0JFVUVRQ0FEUVFGQmhCOUJBQkFUUVFBTUFRc2dBQ0FGUVFOMGFpQUNOZ0lFSUFBZ0JpZ0NERUVEZEdvb0FnQWdBVUVCYWlBQ0VCWWFRUUVMSUFaQkVHb2tBQXY2QWdFRWZ5TUFRUkJySWdZa0FBSi9JQUpCQVUwRVFDQURRUUZCc2lGQkFCQVRRUUFNQVFzZ0FDQUFMUURVQVVFQmNqb0ExQUVnQVNBR1FReHFRUUVRRlFKQUlBQW9Bb3dCSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBWElnUTJBb3dCSUFSRkJFQWdBMEVCUWN3aFFRQVFFMEVBREFNTElBQWdCVFlDaUFFTUFRc2dCaWdDRENJRklBQW9Bb2dCU1EwQUlBUWdCVUVCYWlJRVFRTjBFQnNpQlVVRVFDQURRUUZCekNGQkFCQVRRUUFNQWdzZ0FDQUZOZ0tNQVNBRklBQW9Bb2dCSWdkQkEzUnFRUUFnQkNBSGEwRURkQkFaR2lBQUlBUTJBb2dCSUFBb0Fvd0JJUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQmlEY2dCaEFUUVFBTUFRc2dBa0VCYXlJQ0VCZ2hCQ0FBS0FLTUFTSUFJQVlvQWd3aUJVRURkR29nQkRZQ0FDQUVSUVJBSUFOQkFVSE1JVUVBRUJOQkFBd0JDeUFBSUFWQkEzUnFJQUkyQWdRZ0FDQUdLQUlNUVFOMGFpZ0NBQ0FCUVFGcUlBSVFGaHBCQVFzZ0JrRVFhaVFBQzV3QkFRTi9Jd0JCRUdzaUJDUUFBbjhnQWtVRVFDQURRUUZCNVI5QkFCQVRRUUFNQVFzZ0FTQUVRUXhxUVFFUUZVRUJJQUpCQVdzaUJVVU5BQnBCQUNFQVFRQWhBZ05BSUFGQkFXb2lBU0FFUVFocVFRRVFGU0FFS0FJSUlnWkJHSFJCSDNVZ0JrSC9BSEVnQW5KQkIzUnhJUUlnQUVFQmFpSUFJQVZIRFFBTFFRRWdBa1VOQUJvZ0EwRUJRZVVmUVFBUUUwRUFDeUFFUVJCcUpBQUxHd0JCQVNFQUlBSUVmMEVCQlNBRFFRRkI4aUZCQUJBVFFRQUxDOW9FQVFkL0l3QkJJR3NpQkNRQVFRRWhCUUpBSUFKQkFVMEVRRUVBSVFVZ0EwRUJRYW5PQUVFQUVCTU1BUXNnQUNnQ1RBMEFJQUVnQkVFY2FrRUJFQlVnQVVFQmFpQUVRUmhxUVFFUUZTQUVLQUlZSWdaQkJIWkJBM0VpQjBFRFJnUkFJQUJCQVRZQ1RDQURRUUpCZ2RvQVFRQVFFd3dCQ3lBQ1FRSnJJZ0lnQWlBR1FRVjJRUUp4UVFKcUlna2dCMm9pQ0c0aUJpQUliRWNFUUNBQVFRRTJBa3dnQTBFQ1FkN1dBRUVBRUJNTUFRc2dBaUFJU1EwQUFrQWdBQ2dDUkNJQ0lBWkJmM05OQkVBZ0FpQUdhaUlDUVlDQWdJQUNTUTBCQ3lBQVFRRTJBa3dnQTBFQ1FaUEpBRUVBRUJNTUFRc2dBQ2dDU0NBQ1FRTjBFQnNpQ0VVRVFDQUFRUUUyQWt3Z0EwRUNRYjdKQUVFQUVCTU1BUXNnQVVFQ2FpRUNJQUFnQ0RZQ1NBSkFJQWNFUUVFQklBWWdCa0VCVFJzaENrRUFJUVlEUUNBQ0lBUkJGR29nQnhBVklBUW9BaFFpQVNBQUtBS0VBU0FBS0FLQUFXeFBEUUlnQWlBSGFpSUJJQVJCRUdvZ0NSQVZJQWdnQUNnQ1JDSUNRUU4wYWlJRklBUW9BaFE3QVFBZ0JTQUVLQUlRTmdJRVFRRWhCU0FBSUFKQkFXbzJBa1FnQVNBSmFpRUNJQVpCQVdvaUJpQUtSdzBBQ3d3Q0MwRUJJQVlnQmtFQlRSc2hCeUFBS0FKRUlRRkJBQ0VHQTBBZ0JDQUJOZ0lVSUFFZ0FDZ0NoQUVnQUNnQ2dBRnNUdzBCSUFJZ0JFRVFhaUFKRUJVZ0NDQUFLQUpFSWdwQkEzUnFJZ1VnQVRzQkFDQUZJQVFvQWhBMkFnUkJBU0VGSUFBZ0NrRUJhaUlCTmdKRUlBSWdDV29oQWlBR1FRRnFJZ1lnQjBjTkFBc01BUXNnQUVFQk5nSk1JQVFnQVRZQ0FDQURRUUpCMGp3Z0JCQVRDeUFFUVNCcUpBQWdCUXNFQUVFQUN3dkx3UUVoQUVHQUNBdmdtUUZqWVc1dWIzUWdZV3hzYjJOaGRHVWdiM0JxWDNSalpGOXpaV2RmWkdGMFlWOWphSFZ1YTE5MEtpQmhjbkpoZVFBdEt5QWdJREJZTUhnQUxUQllLekJZSURCWUxUQjRLekI0SURCNEFGVnVhMjV2ZDI0Z1ptOXliV0YwQUVaaGFXeGxaQ0IwYnlCelpYUjFjQ0IwYUdVZ1pHVmpiMlJsY2dCR1lXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2FHVmhaR1Z5QUc1aGJnQXFiRjkwYVd4bFgyeGxiaUErSUZWSlRsUmZUVUZZSUMwZ1QxQktYME5QVFUxUFRsOURRa3hMWDBSQlZFRmZSVmhVVWtFZ0xTQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9BR2x1WmdCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUhSb1pTQnBiV0ZuWlFCSmJuWmhiR2xrSUdGalkyVnpjeUIwYnlCd2FTMCthVzVqYkhWa1pRQXZkRzF3TDI5d1pXNXFjR1ZuTDNOeVl5OWlhVzR2WTI5dGJXOXVMMk52Ykc5eUxtTUFRVXhNWDBOUVZWTUFUMUJLWDA1VlRWOVVTRkpGUVVSVEFFNUJUZ0JQU2xCZlJFOWZUazlVWDBSSlUxQk1RVmxmVkVsTVJWOUpUa1JGV0Y5SlJsOVVURTBBU1U1R0FIQmZhakpyTFQ1dFgzTndaV05wWm1salgzQmhjbUZ0TG0xZlpHVmpiMlJsY2k1dFgzTnZkRjlzWlc1bmRHZ2dQaUJWU1U1VVgwMUJXQ0F0SUU5UVNsOURUMDFOVDA1ZlEwSk1TMTlFUVZSQlgwVllWRkpCQUFrSkNTQndjbVZqWTJsdWRITnBlbVVnS0hjc2FDazlBQWtKQ1NCemRHVndjMmw2WlhNZ0tHMHNaU2s5QUZOUFZDQnRZWEpyWlhJZ1ptOXlJSFJwYkdVZ0pYVWdaR1ZqYkdGeVpYTWdiVzl5WlNCMGFXeGxMWEJoY25SeklIUm9ZVzRnWm05MWJtUWdhVzRnVkV4TklHMWhjbXRsY2k0QUtHNTFiR3dwQUNnbFpDd2xaQ2tnQUNWemZRb0FDUWtnZlFvQVcwUkZWbDBnUkhWdGNDQmhiaUJwYldGblpWOWpiMjF3WDJobFlXUmxjaUJ6ZEhKMVkzUWdld29BVzBSRlZsMGdSSFZ0Y0NCaGJpQnBiV0ZuWlY5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUVsdFlXZGxJR2x1Wm04Z2V3b0FDU0JrWldaaGRXeDBJSFJwYkdVZ2V3b0FKWE1KSUdOdmJYQnZibVZ1ZENBbFpDQjdDZ0FKQ1NCamIyMXdJQ1ZrSUhzS0FBa2dWR2xzWlNCcGJtUmxlRG9nZXdvQUNTQk5ZWEpyWlhJZ2JHbHpkRG9nZXdvQVEyOWtaWE4wY21WaGJTQnBibVJsZUNCbWNtOXRJRzFoYVc0Z2FHVmhaR1Z5T2lCN0NnQkRiMlJsYzNSeVpXRnRJR2x1Wm04Z1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnS0FFWnZkVzVrSUdFZ2JXbHpjR3hoWTJWa0lDY2xZeVZqSldNbFl5Y2dZbTk0SUc5MWRITnBaR1VnYW5BeWFDQmliM2dLQUUxaGJHWnZjbTFsWkNCS1VESWdabWxzWlNCbWIzSnRZWFE2SUdacGNuTjBJR0p2ZUNCdGRYTjBJR0psSUVwUVJVY2dNakF3TUNCemFXZHVZWFIxY21VZ1ltOTRDZ0JOWVd4bWIzSnRaV1FnU2xBeUlHWnBiR1VnWm05eWJXRjBPaUJ6WldOdmJtUWdZbTk0SUcxMWMzUWdZbVVnWm1sc1pTQjBlWEJsSUdKdmVBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR3B3WldjeU1EQXdJR0p2ZUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2QybDBhQ0JHVkZsUUlFSnZlQW9BUVNCdFlYSnJaWElnU1VRZ2QyRnpJR1Y0Y0dWamRHVmtJQ2d3ZUdabUxTMHBJR2x1YzNSbFlXUWdiMllnSlM0NGVBb0FDUWtnYldOMFBTVjRDZ0FKQ1FrZ1kySnNhM04wZVQwbEkzZ0tBQWtKQ1NCamMzUjVQU1VqZUFvQUNRa2djSEpuUFNVamVBb0FTVzUwWldkbGNpQnZkbVZ5Wm14dmR3b0FDU0IwWkhnOUpYVXNJSFJrZVQwbGRRb0FDU0IwZHowbGRTd2dkR2c5SlhVS0FBa2dkSGd3UFNWMUxDQjBlVEE5SlhVS0FFbHVkbUZzYVdRZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0T2lBbGRRb0FVM1J5WldGdElIUnZieUJ6YUc5eWRBb0FUV0Z5YTJWeUlHaGhibVJzWlhJZ1puVnVZM1JwYjI0Z1ptRnBiR1ZrSUhSdklISmxZV1FnZEdobElHMWhjbXRsY2lCelpXZHRaVzUwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdZM1Z5Y21WdWRDQndjbVZqYVc1amRDQmpiMlJsWW14dlkyc2daV3hsYldWdWRBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MENnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUlkyUWdiM0lnVTFGall5QmxiR1Z0Wlc1MENnQkJJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQnBjeUJoZG1GcGJHRmliR1VnWVd4MGFHOTFaMmdnUWxCRElHZHBkbVZ1SUdKNUlIUm9aU0JKU0VSU0lHSnZlQ0FvSldRcElHbHVaR2xqWVhSbElHTnZiWEJ2Ym1WdWRITWdZbWwwSUdSbGNIUm9JR2x6SUdOdmJuTjBZVzUwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJR2xzYkdWbllXd2dkR2xzWlNCdlptWnpaWFFLQUVsdWRtRnNhV1FnY0hKbFkybHVZM1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHaGhibVJzWlNCaVlXNWtJSEJ5WldOcGJuUnpDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR0ZzYkNCMWMyVmtJR052YlhCdmJtVnVkSE1LQUZOcGVtVWdiMllnWTI5a1pTQmliRzlqYXlCa1lYUmhJR1Y0WTJWbFpITWdjM2x6ZEdWdElHeHBiV2wwY3dvQVUybDZaU0J2WmlCMGFXeGxJR1JoZEdFZ1pYaGpaV1ZrY3lCemVYTjBaVzBnYkdsdGFYUnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ1RVTlVJRzFoY210bGNuTUtBRU52Y25KMWNIUmxaQ0JRVUUwZ2JXRnlhMlZ5Y3dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJSFJwYkdVZ2NtVnpiMngxZEdsdmJuTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdGRXeDBhWEJzWlNCamIyeHNaV04wYVc5dWN3b0FTVzUyWVd4cFpDQlFRMHhTSUdKdmVDNGdVbVZ3YjNKMGN5QXdJSEJoYkdWMGRHVWdZMjlzZFcxdWN3b0FWMlVnWkc4Z2JtOTBJSE4xY0hCdmNuUWdVazlKSUdsdUlHUmxZMjlrYVc1bklFaFVJR052WkdWaWJHOWphM01LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlIVnVaR1ZtYVc1bFpDQnphWHBsY3dvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJR052Ykd4bFkzUnBiMjV6SUhkcGRHaHZkWFFnYzJGdFpTQnVkVzFpWlhJZ2IyWWdhVzVrYVhobGN3b0FTVzUyWVd4cFpDQjBhV3hsWXkwK2QybHVYM2g0ZUNCMllXeDFaWE1LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlHeGxjM01nZEdoaGJpQTRJR0o1ZEdWekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUZoTUlHSnZlQ0J2WmlCc1pYTnpJSFJvWVc0Z01UWWdZbmwwWlhNS0FFTnZiWEJ2Ym1WdWRDQnBibVJsZUNBbGRTQjFjMlZrSUhObGRtVnlZV3dnZEdsdFpYTUtBRWx1ZG1Gc2FXUWdVRU5NVWlCaWIzZ3VJRkpsY0c5eWRITWdKV1FnWlc1MGNtbGxjd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1kzSmxZWFJsSUZSaFp5MTBjbVZsSUc1dlpHVnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JXTjBJR1JoZEdFZ2QybDBhR2x1SUcxMWJIUnBjR3hsSUUxRFZDQnlaV052Y21SekNnQkRZVzV1YjNRZ1pHVmpiMlJsSUhScGJHVXNJRzFsYlc5eWVTQmxjbkp2Y2dvQWIzQnFYMm95YTE5aGNIQnNlVjl1WWw5MGFXeGxYM0JoY25SelgyTnZjbkpsWTNScGIyNGdaWEp5YjNJS0FGQnliMkpzWlcwZ2QybDBhQ0J6YTJsd2NHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lISmxZV1JwYm1jZ1NsQkZSekl3TURBZ1ltOTRMQ0J6ZEhKbFlXMGdaWEp5YjNJS0FGVnVhMjV2ZDI0Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnZEd3Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnYldnZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QjBZV3RsSUdsdUlHTm9ZWEpuWlNCVFNWb2diV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1VGQlVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFQxUWdiV0Z5YTJWeUNnQkVhV1FnYm05MElHZGxkQ0JsZUhCbFkzUmxaQ0JUVDFRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5VSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lITndZV05sSUdadmNpQmxlSEJsWTNSbFpDQlRUMUFnYldGeWEyVnlDZ0JGZUhCbFkzUmxaQ0JUVDFBZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRTFEVHlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVa2RPSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRkJRVFNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRXhOSUcxaGNtdGxjZ29BUlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjbVZ4ZFdseVpXUWdSVkJJSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QkRVa2NnYldGeWEyVnlDZ0JWYm10dWIzZHVJSEJ5YjJkeVpYTnphVzl1SUc5eVpHVnlJR2x1SUVOUFJDQnRZWEpyWlhJS0FGVnVhMjV2ZDI0Z1UyTnZaQ0IyWVd4MVpTQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVVU5FSUcxaGNtdGxjZ29BUTNKeWIzSWdjbVZoWkdsdVp5QkRRa1FnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlBReUJ0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1EwOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUlEwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUUxRFF5QnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1RVTkRJRzFoY210bGNnb0FjbVZ4ZFdseVpXUWdVMGxhSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBSEpsY1hWcGNtVmtJRU5QUkNCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0J5WlhGMWFYSmxaQ0JSUTBRZ2JXRnlhMlZ5SUc1dmRDQm1iM1Z1WkNCcGJpQnRZV2x1SUdobFlXUmxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2FHRnVaR3hsSUdwd1pXY3lNREF3SUdacGJHVWdhR1ZoWkdWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lHaGxZV1JsY2dvQVJYSnliM0lnZDJsMGFDQktVQ0JUYVdkdVlYUjFjbVVnT2lCaVlXUWdiV0ZuYVdNZ2JuVnRZbVZ5Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCamRYSnlaVzUwSUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCd2NtVjJhVzkxY3lCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ1kzVnljbVZ1ZENCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDaG9aV0ZrWlhJcElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQWRHbHNaWE1nY21WeGRXbHlaU0JoZENCc1pXRnpkQ0J2Ym1VZ2NtVnpiMngxZEdsdmJnb0FUV0Z5YTJWeUlHbHpJRzV2ZENCamIyMXdiR2xoYm5RZ2QybDBhQ0JwZEhNZ2NHOXphWFJwYjI0S0FGQnliMkpzWlcwZ2QybDBhQ0J6WldWcklHWjFibU4wYVc5dUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUVEyOWtJRk5RUTI5aklHVnNaVzFsYm5Rc0lFbHVkbUZzYVdRZ1kySnNhM2N2WTJKc2EyZ2dZMjl0WW1sdVlYUnBiMjRLQUVsdWRtRnNhV1FnYlhWc2RHbHdiR1VnWTI5dGNHOXVaVzUwSUhSeVlXNXpabTl5YldGMGFXOXVDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1kyOXNiR1ZqZEdsdmJuTWdiM1JvWlhJZ2RHaGhiaUJoY25KaGVTQmtaV052Y25KbGJHRjBhVzl1Q2dCVWIyOGdiR0Z5WjJVZ2RtRnNkV1VnWm05eUlFNXdjRzBLQUU1dmRDQmxibTkxWjJnZ1lubDBaWE1nZEc4Z2NtVmhaQ0JPY0hCdENnQmlZV1FnY0d4aFkyVmtJR3B3WldjZ1kyOWtaWE4wY21WaGJRb0FDU0JOWVdsdUlHaGxZV1JsY2lCemRHRnlkQ0J3YjNOcGRHbHZiajBsYkd4cENna2dUV0ZwYmlCb1pXRmtaWElnWlc1a0lIQnZjMmwwYVc5dVBTVnNiR2tLQUUxaGNtdGxjaUJ6YVhwbElHbHVZMjl1YzJsemRHVnVkQ0IzYVhSb0lITjBjbVZoYlNCc1pXNW5kR2dLQUZScGJHVWdjR0Z5ZENCc1pXNW5kR2dnYzJsNlpTQnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQnpkSEpsWVcwZ2JHVnVaM1JvQ2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdiWFZzZEdsd2JHVWdaR0YwWVNCemNHRnVibWx1WndvQVYzSnZibWNnWm14aFp3b0FSWEp5YjNJZ2QybDBhQ0JHVkZsUUlITnBaMjVoZEhWeVpTQkNiM2dnYzJsNlpRb0FSWEp5YjNJZ2QybDBhQ0JLVUNCemFXZHVZWFIxY21VZ1FtOTRJSE5wZW1VS0FFbHVkbUZzYVdRZ2NISmxZMmx1WTNRZ2MybDZaUW9BU1c1amIyNXphWE4wWlc1MElHMWhjbXRsY2lCemFYcGxDZ0JKYm5aaGJHbGtJRzFoY210bGNpQnphWHBsQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSWdjMmw2WlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUdFZ2JtVjNJSFpoYkdsa1lYUnBiMjRnY0hKdlkyVmtkWEpsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmtaV052WkdVZ2RHbHNaUW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0IwYUdVZ1kyOWtaWE4wY21WaGJTQnBiaUIwYUdVZ1NsQXlJR1pwYkdVS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCM2FYUm9JR2x1WkdsNElITm9kV1ptYkdVS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCVWFXVnlJREVnYUdGdVpHeGxDZ0JPYnlCa1pXTnZaR1ZrSUdGeVpXRWdjR0Z5WVcxbGRHVnljeXdnYzJWMElIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ2RHOGdkR2hsSUhkb2IyeGxJR2x0WVdkbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbGFXNXBkR2xoYkdsNlpTQjBhR1VnZEdGbklIUnlaV1VLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQ3dnU1c1MllXeHBaQ0IwY21GdWMyWnZjbTFoZEdsdmJpQm1iM1Z1WkFvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwTGlCVmJuTjFjSEJ2Y25SbFpDQk5hWGhsWkNCSVZDQmpiMlJsTFdKc2IyTnJJSE4wZVd4bElHWnZkVzVrQ2dCVWFXeGxJRmtnWTI5dmNtUnBibUYwWlhNZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FGUnBiR1VnV0NCamIyOXlaR2x1WVhSbGN5QmhjbVVnYm05MElITjFjSEJ2Y25SbFpBb0FTVzFoWjJVZ1kyOXZjbVJwYm1GMFpYTWdZV0p2ZG1VZ1NVNVVYMDFCV0NCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVNsQkZSekl3TURBZ1NHVmhaR1Z5SUdKdmVDQnViM1FnY21WaFpDQjVaWFFzSUNjbFl5VmpKV01sWXljZ1ltOTRJSGRwYkd3Z1ltVWdhV2R1YjNKbFpBb0FiM0JxWDJveWExOXRaWEpuWlY5d2NIUW9LU0JvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpBb0FiM0JxWDJveWExOWlkV2xzWkY5MGNGOXBibVJsZUY5bWNtOXRYM1JzYlNncE9pQjBhV3hsSUdsdVpHVjRJR0ZzYkc5allYUnBiMjRnWm1GcGJHVmtDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRk5QVkNCdFlYSnJaWEl1SUZScGJHVWdhVzVrWlhnZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzWldRS0FFbG5ibTl5YVc1bklHbG9aSElnWW05NExpQkdhWEp6ZENCcGFHUnlJR0p2ZUNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0hRZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCYWNIQnRJQ1YxSUdGc2NtVmhaSGtnY21WaFpBb0FVRlJGVWswZ1kyaGxZMnNnWm1GcGJIVnlaVG9nSldRZ2MzbHVkR2hsYzJsNlpXUWdNSGhHUmlCdFlYSnJaWEp6SUhKbFlXUUtBQWtKQ1NCallteHJkejB5WGlWa0NnQUpDUWtnWTJKc2EyZzlNbDRsWkFvQUNRa0pJSEZ1ZEhOMGVUMGxaQW9BSlhNZ1pIZzlKV1FzSUdSNVBTVmtDZ0FKQ1FrZ2NtOXBjMmhwWm5ROUpXUUtBQWtKQ1NCdWRXMW5ZbWwwY3owbFpBb0FDUWtnYm5WdGJHRjVaWEp6UFNWa0NnQWxjeUJ1ZFcxamIyMXdjejBsWkFvQWIzQnFYMnB3TWw5aGNIQnNlVjlqWkdWbU9pQmhZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdOdVBTVmtMQ0J1ZFcxamIyMXdjejBsWkFvQUNRa0pJRzUxYlhKbGMyOXNkWFJwYjI1elBTVmtDZ0FKQ1NCMGVYQmxQU1VqZUN3Z2NHOXpQU1ZzYkdrc0lHeGxiajBsWkFvQUpYTWdjMmR1WkQwbFpBb0FDUWtKSUhGdFptSnBaRDBsWkFvQUpYTWdjSEpsWXowbFpBb0FDUWtnYm1JZ2IyWWdkR2xzWlMxd1lYSjBJR2x1SUhScGJHVWdXeVZrWFQwbFpBb0FKWE1nZURFOUpXUXNJSGt4UFNWa0NnQWxjeUI0TUQwbFpDd2dlVEE5SldRS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ2RHbHNaU0FsWkM4bFpBb0FVMlYwZEdsdVp5QmtaV052WkdsdVp5QmhjbVZoSUhSdklDVmtMQ1ZrTENWa0xDVmtDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR052YlhCdmJtVnVkQ0FsWkFvQVNXNTJZV3hwWkNCMllXeDFaU0JtYjNJZ2JuVnRjbVZ6YjJ4MWRHbHZibk1nT2lBbFpDd2diV0Y0SUhaaGJIVmxJR2x6SUhObGRDQnBiaUJ2Y0dWdWFuQmxaeTVvSUdGMElDVmtDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0J1ZFcxaVpYSTZJQ1ZrTENCeVpXZGhjbVJwYm1jZ2RHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNWa0NnQlViMjhnYldGdWVTQlFUME56SUNWa0NnQnZjR3BmYWpKclgzSmxZV1JmZEd4dEtDazZJR2x1ZG1Gc2FXUWdkR2xzWlNCdWRXMWlaWElnSldRS0FFbHVkbUZzYVdRZ2RHbHNaU0J1ZFcxaVpYSWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQndZWEowSUdsdVpHVjRJR1p2Y2lCMGFXeGxJRzUxYldKbGNpQWxaQzRnUjI5MElDVmtMQ0JsZUhCbFkzUmxaQ0FsWkFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHbHNiR1ZuWVd3Z0xUNGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFWmhhV3hsWkNCMGJ5QnRaWEpuWlNCUVVGUWdaR0YwWVFvQVJtRnBiR1ZrSUhSdklHMWxjbWRsSUZCUVRTQmtZWFJoQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCc1lYbGxjbk1nYVc0Z1EwOUVJRzFoY210bGNpQTZJQ1ZrSUc1dmRDQnBiaUJ5WVc1blpTQmJNUzAyTlRVek5WMEtBQ1Z6T2lWa09tTnZiRzl5WDJOdGVXdGZkRzlmY21kaUNnbERRVTRnVGs5VUlFTlBUbFpGVWxRS0FDVnpPaVZrT21OdmJHOXlYMlZ6ZVdOalgzUnZYM0puWWdvSlEwRk9JRTVQVkNCRFQwNVdSVkpVQ2dBbGN6b2xaRHBqYjJ4dmNsOXplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0JUZEhKbFlXMGdkRzl2SUhOb2IzSjBMQ0JsZUhCbFkzUmxaQ0JUVDFRS0FGVnVZV0pzWlNCMGJ5QnpaWFFnZERFZ2FHRnVaR3hsSUdGeklGUk1Vd29BVTI5MElHeGxibWQwYUNCcGN5QnNaWE56SUhSb1lXNGdiV0Z5YTJWeUlITnBlbVVnS3lCdFlYSnJaWElnU1VRS0FGTjBjbVZoYlNCa2IyVnpJRzV2ZENCbGJtUWdkMmwwYUNCRlQwTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJSE5wZW1WeklHaHBaMmhsY2lCMGFHRnVJREplTXpJS0FHOXdhbDl3YVY5dVpYaDBYMnh5WTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0pzWTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYMk53Y213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0JqY213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0p3WTJ3b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDkwTVY5a1pXTnZaR1ZmWTJKc2F5Z3BPaUIxYm5OMWNIQnZjblJsWkNCaWNHNXZYM0JzZFhOZmIyNWxJRDBnSldRZ1BqMGdNekVLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdsc1pTQXhMekVLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRUVUZRSUdKdmVDNEtBRTVsWldRZ2RHOGdjbVZoWkNCaElGQkRURklnWW05NElHSmxabTl5WlNCMGFHVWdRMDFCVUNCaWIzZ3VDZ0JKYm5OMVptWnBZMmxsYm5RZ1pHRjBZU0JtYjNJZ1EwUkZSaUJpYjNndUNnQk9kVzFpWlhJZ2IyWWdZMmhoYm01bGJDQmtaWE5qY21sd2RHbHZiaUJwY3lCbGNYVmhiQ0IwYnlCNlpYSnZJR2x1SUVORVJVWWdZbTk0TGdvQVUzUnlaV0Z0SUdWeWNtOXlJSGRvYVd4bElISmxZV1JwYm1jZ1NsQXlJRWhsWVdSbGNpQmliM2c2SUc1dklDZHBhR1J5SnlCaWIzZ3VDZ0JPYjI0Z1kyOXVabTl5YldGdWRDQmpiMlJsYzNSeVpXRnRJRlJRYzI5MFBUMVVUbk52ZEM0S0FGTjBjbVZoYlNCbGNuSnZjaUIzYUdsc1pTQnlaV0ZrYVc1bklFcFFNaUJJWldGa1pYSWdZbTk0T2lCaWIzZ2diR1Z1WjNSb0lHbHpJR2x1WTI5dWMybHpkR1Z1ZEM0S0FFSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FVbVZ6YjJ4MWRHbHZiaUJtWVdOMGIzSWdhWE1nWjNKbFlYUmxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJSEpsYzI5c2RYUnBiMjRnYVc0Z2RHaGxJR052YlhCdmJtVnVkQzRLQUVOdmJYQnZibVZ1ZENCdFlYQndhVzVuSUhObFpXMXpJSGR5YjI1bkxpQlVjbmxwYm1jZ2RHOGdZMjl5Y21WamRDNEtBRzl3YWw5cU1tdGZZblZwYkdSZmRIQmZhVzVrWlhoZlpuSnZiVjkwYkcwb0tUb2dkR2xzWlNBbFpDQm9ZWE1nYm04Z2NtVm5hWE4wWlhKbFpDQjBhV3hsTFhCaGNuUWdhVzRnVkV4TklHMWhjbXRsY2lCelpXZHRaVzUwY3k0S0FHOXdhbDlxTW10ZmNtVmhaRjkwYkcwb0tUb2dkRzl2SUcxaGJua2dWRXhOSUcxaGNtdGxjbk11Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklHTmhibTV2ZENCaGJHeHZZMkYwWlNCdFgzUnBiR1ZmY0dGeWRGOXBibVp2Y3k0S0FFbHVZMjl0Y0d4bGRHVWdZMmhoYm01bGJDQmtaV1pwYm1sMGFXOXVjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRWx1ZG1Gc2FXUWdZMjlrWldKc2IyTnJJR3hsYm1kMGFDQjJZV3gxWlhNdUNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQnRiM0psSUhSb1lXNGdNeUJqYjJScGJtY2djR0Z6YzJWeklHbHVJR0Z1SUVoVUlHTnZaR1ZpYkc5amF6c2dWR2hwY3lCamIyUmxZbXh2WTJ0eklHaGhjeUFsWkNCd1lYTnpaWE11Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJVYUdWeVpTQmhjbVVnSldRZ2VtVnlieUJpYVhSd2JHRnVaWE1nYVc0Z0pXUWdZbWwwY0d4aGJtVnpMZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElIUnlZVzV6Wm05eWJXRjBhVzl1SUhOMFlXZGxjeTRLQUZWdWEyNXZkMjRnYldGeWEyVnlJR2hoY3lCaVpXVnVJR1JsZEdWamRHVmtJR0Z1WkNCblpXNWxjbUYwWldRZ1pYSnliM0l1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRIVndYMlJsWTI5a1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNKbFlXUmZhR1ZoWkdWeUlHWjFibU4wYVc5dUlHbHpJRzV2ZENCaElHUmxZMjl0Y0hKbGMzTnZjaUJvWVc1a2JHVnlMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlVURTBnYldGeWEyVnlMZ29BVkdsc1pYTWdaRzl1SjNRZ1lXeHNJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUxpQlRhMmx3SUhSb1pTQk5RMVFnYzNSbGNDNEtBRTUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNnbFpDa2dhWE1nYVc1amIyNXphWE4wWlc1MElIZHBkR2dnWVNCTlExUXVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BU2xBeUlHSnZlQ0IzYUdsamFDQmhjbVVnWVdaMFpYSWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0J1YjNRZ1ltVWdjbVZoWkNCaWVTQjBhR2x6SUdaMWJtTjBhVzl1TGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVjJobGJpQjBhR1VnYm5WdFltVnlJRzltSUhwbGNtOGdjR3hoYm1WeklHSnBkSEJzWVc1bGN5QnBjeUJsY1hWaGJDQjBieUIwYUdVZ2JuVnRZbVZ5SUc5bUlHSnBkSEJzWVc1bGN5d2diMjVzZVNCMGFHVWdZMnhsWVc1MWNDQndZWE56SUcxaGEyVnpJSE5sYm5ObExDQmlkWFFnZDJVZ2FHRjJaU0FsWkNCd1lYTnpaWE1nYVc0Z2RHaHBjeUJqYjJSbFlteHZZMnN1SUZSb1pYSmxabTl5WlN3Z2IyNXNlU0IwYUdVZ1kyeGxZVzUxY0NCd1lYTnpJSGRwYkd3Z1ltVWdaR1ZqYjJSbFpDNGdWR2hwY3lCdFpYTnpZV2RsSUhkcGJHd2dibTkwSUdKbElHUnBjM0JzWVhsbFpDQmhaMkZwYmk0S0FFbHRZV2RsSUdoaGN5QnNaWE56SUdOdmJYQnZibVZ1ZEhNZ2RHaGhiaUJqYjJSbGMzUnlaV0Z0TGdvQVRtVmxaQ0IwYnlCa1pXTnZaR1VnZEdobElHMWhhVzRnYUdWaFpHVnlJR0psWm05eVpTQmlaV2RwYmlCMGJ5QmtaV052WkdVZ2RHaGxJSEpsYldGcGJtbHVaeUJqYjJSbGMzUnlaV0Z0TGdvQVVITnZkQ0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGFXeGxMWEJoY25RZ2FYTWdaWEYxWVd3Z2RHOGdlbVZ5Ynl3Z2QyVWdZWE56ZFcxcGJtY2dhWFFnYVhNZ2RHaGxJR3hoYzNRZ2RHbHNaUzF3WVhKMElHOW1JSFJvWlNCamIyUmxjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FiM0JxWDJveWExOXlaV0ZrWDNSc2JTZ3BPaUJVVEUwZ2JXRnlhMlZ5SUc1dmRDQnZaaUJsZUhCbFkzUmxaQ0J6YVhwbExnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklGTlVJRDBnTXlCcGN5QnBiblpoYkdsa0xnb0FUMjVzZVNCdmJtVWdRMDFCVUNCaWIzZ2dhWE1nWVd4c2IzZGxaQzRLQUZkbElHNWxaV1FnWVc0Z2FXMWhaMlVnY0hKbGRtbHZkWE5zZVNCamNtVmhkR1ZrTGdvQVNVaEVVaUJpYjNoZmJXbHpjMmx1Wnk0Z1VtVnhkV2x5WldRdUNnQktVREpJSUdKdmVDQnRhWE56YVc1bkxpQlNaWEYxYVhKbFpDNEtBRTV2ZENCemRYSmxJR2h2ZHlCMGFHRjBJR2hoY0hCbGJtVmtMZ29BVFdGcGJpQm9aV0ZrWlhJZ2FHRnpJR0psWlc0Z1kyOXljbVZqZEd4NUlHUmxZMjlrWldRdUNnQlVhV3hsSUNWa0x5VmtJR2hoY3lCaVpXVnVJR1JsWTI5a1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BVlc1bGVIQmxZM1JsWkNCUFQwMHVDZ0F6TWlCaWFYUnpJR0Z5WlNCdWIzUWdaVzV2ZFdkb0lIUnZJR1JsWTI5a1pTQjBhR2x6SUdOdlpHVmliRzlqYXl3Z2MybHVZMlVnZEdobElHNTFiV0psY2lCdlppQmlhWFJ3YkdGdVpTd2dKV1FzSUdseklHeGhjbWRsY2lCMGFHRnVJRE13TGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYzJodmRXeGtJR0psSUQ0Z01DNEtBRkpwWjJoMElIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTRNVDBsWkNrZ2MyaHZkV3hrSUdKbElENGdNQzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2MyaHZkV3hrSUdKbElENDlJREF1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2djMmh2ZFd4a0lHSmxJRDQ5SURBdUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJNklIQmhZMnRsZENCb1pXRmtaWElnYUdGMlpTQmlaV1Z1SUhCeVpYWnBiM1Z6YkhrZ1ptOTFibVFnYVc0Z2RHaGxJRzFoYVc0Z2FHVmhaR1Z5SUNoUVVFMGdiV0Z5YTJWeUtTNEtBRk4wWVhKMElIUnZJSEpsWVdRZ2FqSnJJRzFoYVc0Z2FHVmhaR1Z5SUNnbGJHeGtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmx6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0hOcGVqMGxaQ2t1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XSE5wZWowbFpDa3VDZ0JDYjNSMGIyMGdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t4UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JWY0NCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVUQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZsUGMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmhQYzJsNlBTVmtLUzRLQUZOcGVtVWdlQ0J2WmlCMGFHVWdaR1ZqYjJSbFpDQmpiMjF3YjI1bGJuUWdhVzFoWjJVZ2FYTWdhVzVqYjNKeVpXTjBJQ2hqYjIxd1d5VmtYUzUzUFNWa0tTNEtBRk5wZW1VZ2VTQnZaaUIwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5RZ2FXMWhaMlVnYVhNZ2FXNWpiM0p5WldOMElDaGpiMjF3V3lWa1hTNW9QU1ZrS1M0S0FGUnBiR1VnY21WaFpDd2daR1ZqYjJSbFpDQmhibVFnZFhCa1lYUmxaQ0JwY3lCdWIzUWdkR2hsSUdSbGMybHlaV1FnYjI1bElDZ2xaQ0IyY3lBbFpDa3VDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVDQWxaQ0FvUGowZ0pXUXBMZ29BYjNCcVgzSmxZV1JmYUdWaFpHVnlLQ2tnYzJodmRXeGtJR0psSUdOaGJHeGxaQ0JpWldadmNtVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITW9LUzRLQUUxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVnYVc0Z2IzQnFYMnB3TWw5aGNIQnNlVjl3WTJ4eUtDa3VDZ0JwYldGblpTMCtZMjl0Y0hOYkpXUmRMbVJoZEdFZ1BUMGdUbFZNVENCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdWRtRnNhV1FnWW05NElITnBlbVVnSldRZ0tDVjRLUW9BUm1GcGJDQjBieUJ5WldGa0lIUm9aU0JqZFhKeVpXNTBJRzFoY210bGNpQnpaV2R0Wlc1MElDZ2xJM2dwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRWxJUkZJZ2R5Z2xkU2tnYUNnbGRTa2dkbk11SUZOSldpQjNLQ1YxS1NCb0tDVjFLUW9BUlhKeWIzSWdjbVZoWkdsdVp5QkRUME1nYldGeWEyVnlJQ2hpWVdRZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITXBDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUIwYVd4bGN5QTZJQ1YxSUhnZ0pYVWdLRzFoZUdsdGRXMGdabWw0WldRZ1lua2dhbkJsWnpJd01EQWdibTl5YlNCcGN5QTJOVFV6TlNCMGFXeGxjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tHbG9aSElwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FXMWhaMlVnYUdWaFpHVnlJQ2hwYUdSeUtRb0FWM0p2Ym1jZ2RtRnNkV1Z6SUdadmNqb2dkeWdsWkNrZ2FDZ2xaQ2tnYm5WdFkyOXRjSE1vSldRcElDaHBhR1J5S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJR1I0UFNWMUlHUjVQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F5TlRVZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1VFVkhNakF3TUNCdWIzSnRLUW9BUW1Ga0lHbHRZV2RsSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVOUFRGSWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCQ1lXUWdRbEJEUXlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2JtVm5ZWFJwZG1VZ2IzSWdlbVZ5YnlCcGJXRm5aU0J6YVhwbElDZ2xiR3hrSUhnZ0pXeHNaQ2tLQUhOcmFYQTZJSE5sWjIxbGJuUWdkRzl2SUd4dmJtY2dLQ1ZrS1NCM2FYUm9JRzFoZUNBb0pXUXBJR1p2Y2lCamIyUmxZbXh2WTJzZ0pXUWdLSEE5SldRc0lHSTlKV1FzSUhJOUpXUXNJR005SldRcENnQnlaV0ZrT2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BUkdWemNHbDBaU0JLVURJZ1FsQkRJVDB5TlRVc0lIQnlaV05wYzJsdmJpQmhibVF2YjNJZ2MyZHVaQ0IyWVd4MVpYTWdabTl5SUdOdmJYQmJKV1JkSUdseklHUnBabVpsY21WdWRDQjBhR0Z1SUdOdmJYQmJNRjA2Q2lBZ0lDQWdJQ0FnV3pCZElIQnlaV01vSldRcElITm5ibVFvSldRcElGc2xaRjBnY0hKbFl5Z2xaQ2tnYzJkdVpDZ2xaQ2tLQUdKaFpDQmpiMjF3YjI1bGJuUWdiblZ0WW1WeUlHbHVJRkpIVGlBb0pXUWdkMmhsYmlCMGFHVnlaU0JoY21VZ2IyNXNlU0FsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZENCcGN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCeVpXMWhhVzVwYm1jZ2JuVnRZbVZ5SUc5bUlIQmhjbUZ0WlhSbGNuTWdLQ0FsWkNCMmN5QWxaQ2tLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhVzUyWVd4cFpDQjBhV3hsSUhOcGVtVWdLSFJrZURvZ0pXUXNJSFJrZVRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoaVlXUWdjMmw2WlRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoRFNVVk1ZV0lzSUdKaFpDQnphWHBsT2lBbFpDa0tBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lISmxiV0ZwYm1sdVp5QmllWFJsY3lCcGJpQmpiMlJsSUdKc2IyTnJJQ2dsWkNCMWMyVmtJQzhnSldRcENnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCUGJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNGdhWE1nYm05MElHMWxkRG9nTWlBOFBTQlRZM1Z3SUR3OUlHMXBiaWhNWTNWd0xDQTBNRGM1S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJSEJ5WldNOUpYVWdLSE5vYjNWc1pDQmlaU0JpWlhSM1pXVnVJREVnWVc1a0lETTRJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlM0Z1QzQmxia3B3WldjZ2IyNXNlU0J6ZFhCd2IzSjBjeUIxY0NCMGJ5QXpNU2tLQUVsdWRtRnNhV1FnWW1sMElHNTFiV0psY2lBbFpDQnBiaUJ2Y0dwZmRESmZjbVZoWkY5d1lXTnJaWFJmYUdWaFpHVnlLQ2tLQUZOMGNtVmhiU0JsY25KdmNpRUtBRVZ5Y205eUlHOXVJSGR5YVhScGJtY2djM1J5WldGdElRb0FVM1J5WldGdElISmxZV05vWldRZ2FYUnpJR1Z1WkNBaENnQkZlSEJsWTNSbFpDQmhJRk5QUXlCdFlYSnJaWElnQ2dCSmJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lHWnZjaUJpYjNnZ0p5VmpKV01sWXlWakp5NGdUbVZsWkNBbFpDQmllWFJsY3l3Z0pXUWdZbmwwWlhNZ2NtVnRZV2x1YVc1bklBb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZWOXhJR2x6SUd4aGNtZGxjaUIwYUdGdUlIcGxjbThnWW1sMGNHeGhibVZ6SUNzZ01TQUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwYzJ4aGNtZGxjaUIwYUdGdUlHSnBkSEJzWVc1bGN5QXJJREVnQ2dCRFQweFNJRUpQV0NCdFpYUm9JSFpoYkhWbElHbHpJRzV2ZENCaElISmxaM1ZzWVhJZ2RtRnNkV1VnS0NWa0tTd2djMjhnZDJVZ2QybHNiQ0JwWjI1dmNtVWdkR2hsSUdWdWRHbHlaU0JEYjJ4dmRYSWdVM0JsWTJsbWFXTmhkR2x2YmlCaWIzZ3VJQW9BVjJocGJHVWdjbVZoWkdsdVp5QkRRMUJmVVU1VVUxUlpJR1ZzWlcxbGJuUWdhVzV6YVdSbElGRkRSQ0J2Y2lCUlEwTWdiV0Z5YTJWeUlITmxaMjFsYm5Rc0lHNTFiV0psY2lCdlppQnpkV0ppWVc1a2N5QW9KV1FwSUdseklHZHlaV0YwWlhJZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwTGlCVGJ5QjNaU0JzYVcxcGRDQjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUhOMGIzSmxaQ0IwYnlCUFVFcGZTakpMWDAxQldFSkJUa1JUSUNnbFpDa2dZVzVrSUhOcmFYQWdkR2hsSUhKbGMzUXVJQW9BU2xBeUlFbElSRklnWW05NE9pQmpiMjF3Y21WemMybHZiaUIwZVhCbElHbHVaR2xqWVhSbElIUm9ZWFFnZEdobElHWnBiR1VnYVhNZ2JtOTBJR0VnWTI5dVptOXliV2x1WnlCS1VESWdabWxzWlNBb0pXUXBJQW9BVkdsc1pTQnBibVJsZUNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQnBjeUJwYm1OdmNuSmxZM1FnSldRZ0tHMWhlQ0E5SUNWa0tTQUtBRVZ5Y205eUlHUmxZMjlrYVc1bklHTnZiWEJ2Ym1WdWRDQWxaQzRLVkdobElHNTFiV0psY2lCdlppQnlaWE52YkhWMGFXOXVjeUIwYnlCeVpXMXZkbVVnS0NWa0tTQnBjeUJuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJvWVc0Z2RHaGxJRzUxYldKbGNpQnZaaUJ5WlhOdmJIVjBhVzl1Y3lCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZENBb0pXUXBDazF2WkdsbWVTQjBhR1VnWTNCZmNtVmtkV05sSUhCaGNtRnRaWFJsY2k0S0NnQkpiV0ZuWlNCa1lYUmhJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUWdkMmwwYUNCMGFXeGxJQ1ZrTGdvS0FDTUFwUUJEQUdZQWd3RHVxQlFBMzlnakFMNFFRd0QvOVlNQWZpQlZBRjlSSXdBMUFFTUFUa1NEQU03RUZBRFB6Q01BL3VKREFQK1pnd0NXQU1VQVB6RWpBS1VBUXdCZVJJTUF6c2dVQU44Ukl3RCs5RU1BLy95REFKNEFWUUIzQUNNQU5RQkRBUC94Z3dDdWlCUUF0d0FqQVA3NFF3RHY1SU1Bam9qRkFCOFJJd0NsQUVNQVpnQ0RBTzZvRkFEZlZDTUF2aEJEQU84aWd3QitJRlVBZnlJakFEVUFRd0JPUklNQXpzUVVBTDhSSXdEKzRrTUE5d0NEQUpZQXhRQS9JaU1BcFFCREFGNUVnd0RPeUJRQTF3QWpBUDcwUXdEL3VvTUFuZ0JWQUc4QUl3QTFBRU1BLythREFLNklGQUN2b2lNQS92aERBT2NBZ3dDT2lNVUFMeUlDQU1VQWhBQitJQUlBenNRa0FQY0FBZ0Qrb2tRQVZnQUNBSjRBRkFEWEFBSUF2aENFQUdZQUFnQ3VpQ1FBM3hFQ0FPNm9SQUEyQUFJQWpvZ1VBQjhSQWdERkFJUUFiZ0FDQU02SUpBRC9pQUlBL3JoRUFFNUVBZ0NXQUJRQXR3QUNBUDdraEFCZVJBSUFwZ0FrQU9jQUFnRGVWRVFBTGlJQ0FENEFGQUIzQUFJQXhRQ0VBSDRnQWdET3hDUUEvL0VDQVA2aVJBQldBQUlBbmdBVUFMOFJBZ0MrRUlRQVpnQUNBSzZJSkFEdklnSUE3cWhFQURZQUFnQ09pQlFBZnlJQ0FNVUFoQUJ1QUFJQXpvZ2tBTy9rQWdEK3VFUUFUa1FDQUpZQUZBQ3ZvZ0lBL3VTRUFGNUVBZ0NtQUNRQTM5Z0NBTjVVUkFBdUlnSUFQZ0FVQUY5UkFnQlZBSVFBWmdBQ0FONklKQUQvTWdJQS9oRkVBRTVFQWdDdUFCUUF0d0FDQUg0eGhBQmVVUUlBeGdBa0FOY0FBZ0R1SUVRQUhoRUNBSjRBRkFCM0FBSUFWUUNFQUY1VUFnRE9SQ1FBNXdBQ0FQN3hSQUEyQUFJQXBnQVVBRjlWQWdEK2RJUUFQaEVDQUw0Z0pBQi9kQUlBM3NSRUFQLzRBZ0NXQUJRQUx5SUNBRlVBaEFCbUFBSUEzb2drQVBjQUFnRCtFVVFBVGtRQ0FLNEFGQUNQaUFJQWZqR0VBRjVSQWdER0FDUUF6OGdDQU80Z1JBQWVFUUlBbmdBVUFHOEFBZ0JWQUlRQVhsUUNBTTVFSkFEZjBRSUEvdkZFQURZQUFnQ21BQlFBZnlJQ0FQNTBoQUErRVFJQXZpQWtBTDhpQWdEZXhFUUE3eUlDQUpZQUZBQS9NZ01BM3RUOTlQLzhGQUErRVZVQWo0Z0RBTDR5aFFEbkFDVUFYbEgrcW45eUF3RE9SUDM0NzBRVUFINWtSUUN2b2dNQXBnQmRWZCtaL2ZFMkFQNzFiMklEQU43Ui9mVC81aFFBZm5GVkFMK3hBd0N1aUlVQTM5VWxBRTVFL3ZKL1pnTUF4Z0Q5K08vaUZBQmVWRVVBbnhFREFKWUFYVlhQeVAzeEhoSHV5R2NBQXdEZTFQMzAvL01VQUQ0UlZRQy9FUU1BdmpLRkFOL1lKUUJlVWY2cUx5SURBTTVFL2ZqM0FCUUFmbVJGQUorWUF3Q21BRjFWMXdEOThUWUEvdlZ2UkFNQTN0SDk5UCs1RkFCK2NWVUF0d0FEQUs2SWhRRGYzQ1VBVGtUKzhuY0FBd0RHQVAzNDcrUVVBRjVVUlFCL2N3TUFsZ0JkVmIrNC9mRWVFZTdJUHpJQ0FLVUFoQUIrUUFJQTNoQWtBTjhSQWdEK2NrUUFWZ0FDQUs2b0ZBQy9zZ0lBbGdDRUFHWUFBZ0RHQUNRQTV3QUNBTzdJUkFBdUlnSUFqb2dVQUhjQUFnQ2xBSVFBYmdBQ0FNNklKQUQzQUFJQS9wRkVBRFlBQWdDdW9oUUFyNm9DQVA2NGhBQmVBQUlBdmdBa0FNL0VBZ0R1UkVRQS8vUUNBRDRpRkFBZkVRSUFwUUNFQUg1QUFnRGVFQ1FBLzVrQ0FQNXlSQUJXQUFJQXJxZ1VBTGNBQWdDV0FJUUFaZ0FDQU1ZQUpBRFhBQUlBN3NoRUFDNGlBZ0NPaUJRQVQwUUNBS1VBaEFCdUFBSUF6b2drQU8vaUFnRCtrVVFBTmdBQ0FLNmlGQUIvUkFJQS9yaUVBRjRBQWdDK0FDUUFud0FDQU81RVJBRC9kZ0lBUGlJVUFEOHhBd0RHQUlVQS85bjk4bjVrL3ZHL21RTUFycUlsQU85bS9mUldBTzdpZjNNREFMNllSUUQzQVAzNFpnRCtkcCtJQXdDT2lCVUEzOVdsQUM0aTNwaFBSQU1BdnJLRkFQLzgvZkp1SXBZQXR3QURBSzZxSlFEZjBmMzBOZ0RlMUc5a0F3Q3VxRVVBNytyOStGNUU3dWgvY1FNQVBqSVZBTS9FcFFELytzNklQekVEQU1ZQWhRRC9kLzN5Zm1UKzhiK3pBd0N1b2lVQTV3RDk5RllBN3VKM0FBTUF2cGhGQU8vay9maG1BUDUyZjJZREFJNklGUURYQUtVQUxpTGVtRDh6QXdDK3NvVUEvM1g5OG00aWxnQ2ZrUU1BcnFvbEFOK1ovZlEyQU43VVgxRURBSzZvUlFEdjdQMzRYa1R1Nkg5eUF3QStNaFVBdjdHbEFQL3p6b2dmRVFNQTNsVDk4aDRSRkFCK1pQNzR6OHdEQUw2UlJRRHZJaVVBTGlMKzg0K0lBd0RHQUlVQTl3QVVBRjRSL3Z5dnFBTUFwZ0ExQU4vSS9mRStNZjVtYjJRREFNN0kvZkwvOVJRQVpnRCs5TCs2QXdDdUlrVUE1d0FsQUQ0eS91cC9jd01BdnJLRkFOOVZGQUJXQUg1eG54RURBSllBTlFEUHhQM3hQalB1NkU5RUF3RGVWUDN5SGhFVUFINWsvdmkvbVFNQXZwRkZBTy9pSlFBdUl2N3pmMllEQU1ZQWhRRHY1QlFBWGhIKy9KK1lBd0NtQURVQTF3RDk4VDR4L21adklnTUF6c2o5OHYrNUZBQm1BUDcwdHdBREFLNGlSUURmMFNVQVBqTCs2bmNBQXdDK3NvVUE3K3dVQUZZQWZuRi9jZ01BbGdBMUFMKzQvZkUrTSs3b1gxVDg4ZDdSL2ZyWEFQejRGZ0Q5LzM5MC9QUitjZjN6djdQODh1L3E3dWhQUlB6eHJpSUZBTCs0L1BqM0FQNzhkd0Q4OUY0Ui9mVi9kZnp5MzlqdTRqOHovUEcrc3YzNno0ajgrUC83L2Y5L2MvejBiZ0Q5ODdjQS9QTHZadjc1UHpIODhaNEFCUUMvdXZ6NC8vMys5bWNBL1BRbUFQMzFqNGo4OHQvYzN0UXZJdnp4M3RIOStzL0UvUGdXQVAzL2YzTDg5SDV4L2ZPL21menk3K3p1NkVjQS9QR3VJZ1VBcHdEOCtQLzMvdnhYQVB6MFhoSDk5WmNBL1BMZjFlN2lOd0Q4OGI2eS9mckhBUHo0Ly83OS8zOW0vUFJ1QVAzenI2ajg4dWNBL3ZrL012enhuZ0FGQUwreC9QanY1UDcyWDFUODlDWUEvZldIQVB6eTM1bmUxQjhSRXdCbEFFTUEzZ0NEQUkySUl3Qk9SQk1BcFFCREFLNklnd0ExQUNNQTF3QVRBTVVBUXdDZUFJTUFWUUFqQUM0aUV3Q1ZBRU1BZmdDREFQNFFJd0IzQUJNQVpRQkRBTTZJZ3dDTmlDTUFIaEVUQUtVQVF3QmVBSU1BTlFBakFPY0FFd0RGQUVNQXZnQ0RBRlVBSXdEL0VSTUFsUUJEQUQ0QWd3RHVRQ01BcjZJVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RHZSQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUxjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUF6OFFUQU1VQVF3QytBSU1BVlFBakFQY0FFd0NWQUVNQVBnQ0RBTzVBSXdCdkFBRUFoQUFCQUZZQUFRQVVBQUVBMXdBQkFDUUFBUUNXQUFFQVJRQUJBSGNBQVFDRUFBRUF4Z0FCQUJRQUFRQ1BpQUVBSkFBQkFQY0FBUUExQUFFQUx5SUJBSVFBQVFEK1FBRUFGQUFCQUxjQUFRQWtBQUVBdndBQkFFVUFBUUJuQUFFQWhBQUJBS1lBQVFBVUFBRUFUMFFCQUNRQUFRRG5BQUVBTlFBQkFEOFJBUUNFQUFFQVZnQUJBQlFBQVFEUEFBRUFKQUFCQUpZQUFRQkZBQUVBYndBQkFJUUFBUURHQUFFQUZBQUJBSjhBQVFBa0FBRUE3d0FCQURVQUFRQS9NZ0VBaEFBQkFQNUFBUUFVQUFFQXJ3QUJBQ1FBQVFEL1JBRUFSUUFCQUY4QUFRQ0VBQUVBcGdBQkFCUUFBUUIvQUFFQUpBQUJBTjhBQVFBMUFBRUFIeEVCQUNRQUFRQldBQUVBaFFBQkFMOEFBUUFVQUFFQTl3QUJBTVlBQVFCM0FBRUFKQUFCQVAvNEFRQkZBQUVBZndBQkFCUUFBUURmQUFFQXBnQUJBRDh4QVFBa0FBRUFMaUlCQUlVQUFRQzNBQUVBRkFBQkFPOUVBUUN1b2dFQVp3QUJBQ1FBQVFEL1VRRUFSUUFCQUpjQUFRQVVBQUVBendBQkFEWUFBUUEvSWdFQUpBQUJBRllBQVFDRkFBRUF2N0lCQUJRQUFRRHZRQUVBeGdBQkFHOEFBUUFrQUFFQS8zSUJBRVVBQVFDZkFBRUFGQUFCQU5jQUFRQ21BQUVBVDBRQkFDUUFBUUF1SWdFQWhRQUJBSytvQVFBVUFBRUE1d0FCQUs2aUFRQmZBQUVBSkFBQkFQOUVBUUJGQUFFQWo0Z0JBQlFBQVFDdnFnRUFOZ0FCQUI4UkFnRCsrQ1FBVmdBQ0FMWUFoUUQvWmdJQXpnQVVBQjRSQWdDV0FEVUFyNmdDQVBZQUpBQStNUUlBcGdCRkFMK3pBZ0Mrc2hRQS8vVUNBR1lBZmxGZlZBSUEvdklrQUM0aUFnQ3VJb1VBNzBRQ0FNWUFGQUQvOUFJQWRnQTFBSDlFQWdEZVFDUUFQaklDQUo0QVJRRFhBQUlBdm9nVUFQLzZBZ0JlRWY3eFQwUUNBUDc0SkFCV0FBSUF0Z0NGQU8vSUFnRE9BQlFBSGhFQ0FKWUFOUUNQaUFJQTlnQWtBRDR4QWdDbUFFVUEzMFFDQUw2eUZBRC9xQUlBWmdCK1VXOEFBZ0QrOGlRQUxpSUNBSzRpaFFEbkFBSUF4Z0FVQU8vaUFnQjJBRFVBZjNJQ0FONUFKQUErTWdJQW5nQkZBTCt4QWdDK2lCUUEvM01DQUY0Ui92RS9Nd0VBaEFBQkFPNGdBUURGQUFFQXo4UUJBRVFBQVFEL01nRUFGUUFCQUkrSUFRQ0VBQUVBWmdBQkFDVUFBUUN2QUFFQVJBQUJBTzhpQVFDbUFBRUFYd0FCQUlRQUFRQk9SQUVBeFFBQkFNL01BUUJFQUFFQTl3QUJBQlVBQVFCdkFBRUFoQUFCQUZZQUFRQWxBQUVBbndBQkFFUUFBUURmQUFFQS9qQUJBQzhpQVFDRUFBRUE3aUFCQU1VQUFRRFB5QUVBUkFBQkFQOFJBUUFWQUFFQWR3QUJBSVFBQVFCbUFBRUFKUUFCQUg4QUFRQkVBQUVBNXdBQkFLWUFBUUEzQUFFQWhBQUJBRTVFQVFERkFBRUF0d0FCQUVRQUFRQy9BQUVBRlFBQkFEOEFBUUNFQUFFQVZnQUJBQ1VBQVFDWEFBRUFSQUFCQU5jQUFRRCtNQUVBSHhFQ0FPNm9SQUNPaUFJQTFnREZBUC96QWdEKy9DVUFQZ0FDQUxZQVZRRGYyQUlBL3ZoRUFHWUFBZ0IrSUlVQS81a0NBT1lBOVFBMkFBSUFwZ0FWQUo4QUFnRCs4a1FBZGdBQ0FNNUV4UUQvZGdJQS92RWxBRTVFQWdDdUFGVUF6OGdDQVA3MFJBQmVSQUlBdmhDRkFPL2tBZ0RlVlBVQUhoRUNBSllBRlFBdklnSUE3cWhFQUk2SUFnRFdBTVVBLy9vQ0FQNzhKUUErQUFJQXRnQlZBTDhSQWdEKytFUUFaZ0FDQUg0Z2hRRHZJZ0lBNWdEMUFEWUFBZ0NtQUJVQWZ5SUNBUDd5UkFCMkFBSUF6a1RGQVAvVkFnRCs4U1VBVGtRQ0FLNEFWUUJ2QUFJQS92UkVBRjVFQWdDK0VJVUEzeEVDQU41VTlRQWVFUUlBbGdBVkFGOVJBd0QyQUJRQUhoRkVBSTZJcFFEZjFBTUFycUpWQVA5MkpBQStJcllBcjZvREFPWUFGQUQvOVVRQVpnQ0ZBTS9NQXdDZUFNVUE3MFFrQURZQS92aC9NUU1BN3VnVUFQL3hSQUIyQUtVQXo4UURBSDRpVlFEZjBTUUFUa1QrOUY5UkF3RFdBQlFBNytKRUFGNUVoUUMvSWdNQWxnREZBTi9JSkFBdUl2N3lieUlEQVBZQUZBQWVFVVFBam9pbEFMK3hBd0N1b2xVQS96TWtBRDRpdGdDdnFBTUE1Z0FVQVArNVJBQm1BSVVBdjZnREFKNEF4UUR2NUNRQU5nRCsrRzlrQXdEdTZCUUEvL3hFQUhZQXBRRFB5QU1BZmlKVkFPL3FKQUJPUlA3MGYzUURBTllBRkFELytrUUFYa1NGQUwreUF3Q1dBTVVBMzBRa0FDNGkvdkkvTWZNQS92cjk4VFlBQkFDK01uVUEzeEh6QU41VS9mTHY1TlVBZm5IKy9IOXo4d0QrOC8zNEhoRUVBSllBVlFDL3NmTUF6Z0MxQU4vWS9mUm1BUDY1WDFUekFQNTIvZkVtQUFRQXBnQjFBSjhBOHdDdUFQM3kvL2ZWQUVZQS92Vi9kUE1BNWdEOStCWUFCQUNHQUZVQWo0anpBTVlBdFFEdjR2MzBYaEh1cUQ4Ujh3RCsrdjN4TmdBRUFMNHlkUURmMGZNQTNsVDk4di83MVFCK2NmNzhmMFR6QVA3ei9mZ2VFUVFBbGdCVkFIOXk4d0RPQUxVQTd5TDk5R1lBL3JsUFJQTUEvbmI5OFNZQUJBQ21BSFVBdnhIekFLNEEvZkwvLzlVQVJnRCs5VDh5OHdEbUFQMzRGZ0FFQUlZQVZRQnZBUE1BeGdDMUFMKzQvZlJlRWU2b0x5SUFRZXloQVF1a0hnRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQkFBQUFBVUFBQUMzSVVJaFp5RkNJUkVSRVJFek16TXpkM2QzZHdBQUFBQUFBQUFBQVZZQUFBQUFBQUJRVVFBQVlGRUFBQUZXQUFBQkFBQUFZRkVBQUZCUkFBQUJOQUFBQUFBQUFIQlJBQUR3VVFBQUFUUUFBQUVBQUFDQVVRQUFBRklBQUFFWUFBQUFBQUFBa0ZFQUFGQlNBQUFCR0FBQUFRQUFBS0JSQUFCZ1VnQUF3UW9BQUFBQUFBQ3dVUUFBc0ZJQUFNRUtBQUFCQUFBQXdGRUFBTUJTQUFBaEJRQUFBQUFBQU5CUkFBRFFWQUFBSVFVQUFBRUFBQURnVVFBQTRGUUFBQ0VDQUFBQUFBQUE4RlVBQUZCVkFBQWhBZ0FBQVFBQUFBQldBQUJnVlFBQUFWWUFBQUFBQUFBUVVnQUFBRklBQUFGV0FBQUJBQUFBSUZJQUFQQlJBQUFCVkFBQUFBQUFBREJTQUFEd1VnQUFBVlFBQUFFQUFBQkFVZ0FBQUZNQUFBRklBQUFBQUFBQVVGSUFBUEJTQUFBQlNBQUFBUUFBQUdCU0FBQUFVd0FBQVRnQUFBQUFBQUJ3VWdBQThGSUFBQUU0QUFBQkFBQUFnRklBQUFCVEFBQUJNQUFBQUFBQUFKQlNBQUJRVXdBQUFUQUFBQUVBQUFDZ1VnQUFZRk1BQUFFa0FBQUFBQUFBc0ZJQUFIQlRBQUFCSkFBQUFRQUFBTUJTQUFDQVV3QUFBUndBQUFBQUFBRFFVZ0FBc0ZNQUFBRWNBQUFCQUFBQTRGSUFBTUJUQUFBQkZnQUFBQUFBQU5CVUFBRFFVd0FBQVJZQUFBRUFBQURnVkFBQTRGTUFBQUZXQUFBQUFBQUFFRk1BQUFCVEFBQUJWZ0FBQVFBQUFDQlRBQUR3VWdBQUFWUUFBQUFBQUFBd1V3QUE4RklBQUFGVUFBQUJBQUFBUUZNQUFBQlRBQUFCVVFBQUFBQUFBRkJUQUFBUVV3QUFBVkVBQUFFQUFBQmdVd0FBSUZNQUFBRklBQUFBQUFBQWNGTUFBREJUQUFBQlNBQUFBUUFBQUlCVEFBQkFVd0FBQVRnQUFBQUFBQUNRVXdBQVVGTUFBQUU0QUFBQkFBQUFvRk1BQUdCVEFBQUJOQUFBQUFBQUFMQlRBQUJ3VXdBQUFUUUFBQUVBQUFEQVV3QUFnRk1BQUFFd0FBQUFBQUFBMEZNQUFKQlRBQUFCTUFBQUFRQUFBT0JUQUFDZ1V3QUFBU2dBQUFBQUFBRHdVd0FBa0ZNQUFBRW9BQUFCQUFBQUFGUUFBS0JUQUFBQkpBQUFBQUFBQUJCVUFBQ3dVd0FBQVNRQUFBRUFBQUFnVkFBQXdGTUFBQUVpQUFBQUFBQUFNRlFBQU5CVEFBQUJJZ0FBQVFBQUFFQlVBQURnVXdBQUFSd0FBQUFBQUFCUVZBQUE4Rk1BQUFFY0FBQUJBQUFBWUZRQUFBQlVBQUFCR0FBQUFBQUFBSEJVQUFBUVZBQUFBUmdBQUFFQUFBQ0FWQUFBSUZRQUFBRVdBQUFBQUFBQWtGUUFBREJVQUFBQkZnQUFBUUFBQUtCVUFBQkFWQUFBQVJRQUFBQUFBQUN3VkFBQVVGUUFBQUVVQUFBQkFBQUF3RlFBQUdCVUFBQUJFZ0FBQUFBQUFOQlVBQUJ3VkFBQUFSSUFBQUVBQUFEZ1ZBQUFnRlFBQUFFUkFBQUFBQUFBOEZRQUFKQlVBQUFCRVFBQUFRQUFBQUJWQUFDZ1ZBQUF3UW9BQUFBQUFBQVFWUUFBc0ZRQUFNRUtBQUFCQUFBQUlGVUFBTUJVQUFEQkNRQUFBQUFBQURCVkFBRFFWQUFBd1FrQUFBRUFBQUJBVlFBQTRGUUFBS0VJQUFBQUFBQUFVRlVBQVBCVUFBQ2hDQUFBQVFBQUFHQlZBQUFBVlFBQUlRVUFBQUFBQUFCd1ZRQUFFRlVBQUNFRkFBQUJBQUFBZ0ZVQUFDQlZBQUJCQkFBQUFBQUFBSkJWQUFBd1ZRQUFRUVFBQUFFQUFBQ2dWUUFBUUZVQUFLRUNBQUFBQUFBQXNGVUFBRkJWQUFDaEFnQUFBUUFBQU1CVkFBQmdWUUFBSVFJQUFBQUFBQURRVlFBQWNGVUFBQ0VDQUFBQkFBQUE0RlVBQUlCVkFBQkJBUUFBQUFBQUFQQlZBQUNRVlFBQVFRRUFBQUVBQUFBQVZnQUFvRlVBQUJFQkFBQUFBQUFBRUZZQUFMQlZBQUFSQVFBQUFRQUFBQ0JXQUFEQVZRQUFoUUFBQUFBQUFBQXdWZ0FBMEZVQUFJVUFBQUFCQUFBQVFGWUFBT0JWQUFCSkFBQUFBQUFBQUZCV0FBRHdWUUFBU1FBQUFBRUFBQUJnVmdBQUFGWUFBQ1VBQUFBQUFBQUFjRllBQUJCV0FBQWxBQUFBQVFBQUFJQldBQUFnVmdBQUZRQUFBQUFBQUFDUVZnQUFNRllBQUJVQUFBQUJBQUFBb0ZZQUFFQldBQUFKQUFBQUFBQUFBTEJXQUFCUVZnQUFDUUFBQUFFQUFBREFWZ0FBWUZZQUFBVUFBQUFBQUFBQTBGWUFBSEJXQUFBRkFBQUFBUUFBQU9CV0FBQ0FWZ0FBQVFBQUFBQUFBQURRVmdBQWtGWUFBQUVBQUFBQkFBQUE0RllBQUtCV0FBQUJWZ0FBQUFBQUFQQldBQUR3VmdBQUFWWUFBQUVBQUFBQVZ3QUFBRmNBQUFBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd0FCQlFZQkFnWUdBd01IQndNREJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEF3TUhCd01EQndjRUJBY0hCQVFIQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NCQWdZR0FnSUdCZ01EQndjREF3Y0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQlFZSUNBWUdDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FZR0NBZ0dCZ2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBRUNCZ1lDQWdZR0F3TUhCd01EQndjQkFnWUdBZ0lHQmdNREJ3Y0RBd2NIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEFnSUdCZ0lDQmdZREF3Y0hBd01IQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBWUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdBQVFNREFRSURBd1VHQndjR0JnY0hBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3VUdCd2NHQmdjSENBZ0lDQWdJQ0FnRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQVFJREF3SUNBd01HQmdjSEJnWUhCd0VDQXdNQ0FnTURCZ1lIQndZR0J3Y0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUFRSURBd0lDQXdNR0JnY0hCZ1lIQndFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBSUNBd01DQWdNREJnWUhCd1lHQndjQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUFEQVFRREJnUUhBUVFDQlFRSEJRY0FBd0VFQXdZRUJ3RUVBZ1VFQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndFRUFnVUVCd1VIQWdVQ0JRVUhCUWNEQmdRSEJnZ0hDQVFIQlFjSENBY0lBd1lFQndZSUJ3Z0VCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0VFQWdVRUJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dFQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQXdZRUJ3WUlCd2dFQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0VCd1VIQndnSENBVUhCUWNIQ0FjSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FZSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lDUWtLQ2drSkNnb01EQTBMREF3TkN3a0pDZ29KQ1FvS0RBd0xEUXdNQ3cwTURBME5EQXdMQ3d3SkRRb0pEQW9MREF3TEN3d01EUTBNQ1FzS0NRd0tEUWtKQ2dvSkNRb0tEQXdOQ3d3TURRc0pDUW9LQ1FrS0Nnd01DdzBNREFzTkRBd05EUXdNQ3dzTUNRMEtDUXdLQ3d3TUN3c01EQTBOREFrTENna01DZzBLQ2dvS0Nnb0tDZzBMRFFzTkN3MExDZ29KQ1FvS0NRa05Dd3dNRFFzTURBME5EUTBMQ3dzTERRb05DZ29MQ2dzTkRRd01Dd3NNREEwS0RBa0tDd2tNQ2dvSkNRb0tDUWtMRFF3TUN3ME1EQW9LQ2dvS0Nnb0tDdzBMRFFzTkN3MExDd3dNRFEwTURBc0tEQWtLRFFrTUN3c0xDdzBORFEwTENnc0tDZzBLRFFCQm1jQUJDemNCQUFFQUFRQUJBQUFCQVFBQUFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBQUFBQUFCQUFFQUFBQUFBUUVCQVFBQUFBRUFBUUVCQUVIWndBRUxOd0VBQVFBQkFBRUFBQUVCQUFBQkFRQUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFRQUJBUUVBUVpuQkFRc0hBUUFCQUFFQUFRQkJxY0VCQzVVQ0FRQUJBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVBQUFBQUFRRUJBUUFBQUFBQUFRQUJBUUVBQUFFQkFBQUFBUUFCQUFFQUFRRUJBUUVCQVFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQkFBQUJBUUFCQUFBQUFBRUJBUUVBQVFBQkFRRUJBUUlBQUFBRUFBQUFCQUFBQUFnQUFBQ1Evd0FBREFBQUFCa0FBQUJTL3dBQUZBQUFBQm9BQUFCVC93QUFGQUFBQUJzQUFBQmUvd0FBRkFBQUFCd0FBQUJjL3dBQUZBQUFBQjBBQUFCZC93QUFGQUFBQUI0QUFBQmYvd0FBRkFBQUFCOEFBQUJSL3dBQUFnQUFBQ0FBQUFCVi93QUFCQUFBQUNFQUFBQlgvd0FBQkFBQUFDSUFBQUJZL3dBQUVBQUFBQ01BQUFCZy93QUFCQUFBQUNRQUFBQmgvd0FBRUFBQUFDVUFBQUNSL3dCQnlNTUJDMlZqL3dBQUJBQUFBQ1lBQUFCay93QUFGQUFBQUNjQUFBQjAvd0FBRkFBQUFDZ0FBQUI0L3dBQUJBQUFBQ2tBQUFCUS93QUFCQUFBQUNvQUFBQlovd0FBQkFBQUFDc0FBQUIxL3dBQUZBQUFBQ3dBQUFCMy93QUFGQUFBQUMwQUFBQUFBQUFBRkFCQndNUUJDelV1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFDQWdVR28zQUFBQWNIbDBaamdBQUFCb01uQnFPUUJCZ01VQkN6SnlaR2hwT2dBQUFISnNiMk03QUFBQVkyTndZandBQUFCeWJHTndQUUFBQUhCaGJXTStBQUFBWm1Wa1l6OEFBQUJBWmdCQndNVUJDMEVaQUFzQUdSa1pBQUFBQUFVQUFBQUFBQUFKQUFBQUFBc0FBQUFBQUFBQUFCa0FDZ29aR1JrRENnY0FBUUFKQ3hnQUFBa0dDd0FBQ3dBR0dRQUFBQmtaR1FCQmtjWUJDeUVPQUFBQUFBQUFBQUFaQUFzTkdSa1pBQTBBQUFJQUNRNEFBQUFKQUE0QUFBNEFRY3ZHQVFzQkRBQkIxOFlCQ3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWVhIQVFzQkVBQkJrY2NCQ3hVUEFBQUFCQThBQUFBQUNSQUFBQUFBQUJBQUFCQUFRYi9IQVFzQkVnQkJ5OGNCQ3g0UkFBQUFBQkVBQUFBQUNSSUFBQUFBQUJJQUFCSUFBQm9BQUFBYUdob0FRWUxJQVFzT0dnQUFBQm9hR2dBQUFBQUFBQWtBUWJQSUFRc0JGQUJCdjhnQkN4VVhBQUFBQUJjQUFBQUFDUlFBQUFBQUFCUUFBQlFBUWUzSUFRc0JGZ0JCK2NnQkMyUVZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVlBQUFBQWNBQUFBSEFBQUFCeEFBQUFjUUFBQUhFQUFBQnhBQUFBY1FBQUFIRUFBQUJ3QUFBQWNBQUFBSEVBQUFCd0FBQUFjQUFBQUhBQUFBQndBRUdBeWdFTEhYRUFBQUJ4QUFBQWNBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQnhBRUdveXdFTENWQndBUUFBQUFBQUJRQkJ2TXNCQ3dGckFFSFV5d0VMQ213QUFBQnRBQUFBdUdzQVFlekxBUXNCQWdCQi9Nc0JDd2ovLy8vLy8vLy8vd0JCd013QkN3RUZBRUhNekFFTEFXNEFRZVRNQVFzT2JBQUFBRzhBQUFESWF3QUFBQVFBUWZ6TUFRc0JBUUJCak0wQkN3WC8vLy8vQ2c9PSI7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW50aWF0ZVN5bmMoZCxlKVswXSl9KCksSD0oTC51LGEuX21hbGxvYz1MLnYsYS5fZnJlZT1MLncsYS5fanAyX2RlY29kZT1MLnksTC56KTtiPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe1N8fHJ1bigpO1N8fChiPXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEoeT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGYudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTtpZighKHk+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKCk9PntzZXRUaW1lb3V0KCgoKT0+YS5zZXRTdGF0dXMoIiIpKSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7aWYoIVMpe1M9ITA7YS5jYWxsZWRSdW49ITA7aWYoIXUpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2NhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpO3QoYSk7YS5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihhLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2Zvcig7YS5wb3N0UnVuLmxlbmd0aDspZT1hLnBvc3RSdW4uc2hpZnQoKSxtLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MobSl9KCl9fX19aWYoYS5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTtmb3IoO2EucHJlSW5pdC5sZW5ndGg+MDspYS5wcmVJbml0LnBvcCgpKCl9cnVuKCk7cmV0dXJuIGF9KTtjb25zdCByaT1haTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNiPW51bGw7c3RhdGljIGRlY29kZShlLHQpe3R8fD17fTt0aGlzLiNifHw9cmkoe3dhcm59KTtjb25zdCBpPXRoaXMuI2IuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI2I9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlKX1kZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1KcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscj17ZWFybHlDaGFuZ2U6aSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtyLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtyLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1yfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxpPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9aT1pPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9aTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGk+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsaSxhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IG49ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxnPXIuZGljdGlvbmFyeUxlbmd0aHMsYz1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGw9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCBDPXIuY3VycmVudFNlcXVlbmNlO2xldCBRPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLEU9MCx1PXRoaXMuYnVmZmVyTGVuZ3RoLGQ9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhsKSxyPVE+MDtpZihlPDI1Nil7Q1swXT1lO1E9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7bD05O249MjU4O1E9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPG4pe1E9Z1tlXTtmb3IodD1RLTEsaT1lO3Q+PTA7dC0tKXtDW3RdPW9baV07aT1jW2ldfX1lbHNlIENbUSsrXT1DWzBdfWlmKHIpe2Nbbl09aDtnW25dPWdbaF0rMTtvW25dPUNbMF07bisrO2w9bitzJm4rcy0xP2w6MHxNYXRoLm1pbihNYXRoLmxvZyhuK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtFKz1RO2lmKGE8RSl7ZG97YSs9NTEyfXdoaWxlKGE8RSk7ZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8UTt0KyspZFt1KytdPUNbdF19ci5uZXh0Q29kZT1uO3IuY29kZUxlbmd0aD1sO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1RO3RoaXMuYnVmZmVyTGVuZ3RoPXV9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1pLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPWkuZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1pLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dGhpcy5jb2x1bW5zPWkuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPW4qcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgbixvPTAsZz0wLGM9MCxsPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3Iobj0wO248ZTsrK24pe2xldCBlPXNbbl1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2lbaCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihuPTA7bjxyOysrbilpW2grK109c1tuXTtmb3IoO248ZTsrK24pe2lbaF09aVtoLXJdK3Nbbl07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKG49MDtuPHQ7KytuKWlbaCsrXT1zW25dO2Zvcig7bjxlO24rPTIpe2NvbnN0IGU9KCgyNTUmc1tuXSk8PDgpKygyNTUmc1tuKzFdKSsoKDI1NSZpW2gtdF0pPDw4KSsoMjU1JmlbaC10KzFdKTtpW2grK109ZT4+OCYyNTU7aVtoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCBDPTAsUT10O2NvbnN0IEU9dGhpcy5jb2x1bW5zO2ZvcihuPTA7bjxFOysrbilmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihjPGEpe289bzw8OHwyNTUmc1tDKytdO2MrPTh9ZVt0XT1lW3RdKyhvPj5jLWEpJmg7Yy09YTtnPWc8PGF8ZVt0XTtsKz1hO2lmKGw+PTgpe2lbUSsrXT1nPj5sLTgmMjU1O2wtPTh9fWw+MCYmKGlbUSsrXT0oZzw8OC1sKSsobyYoMTw8OC1sKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxpPXRoaXMuc3RyLmdldEJ5dGUoKSxhPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IG49cy5zdWJhcnJheShyLWUscik7MD09PW4ubGVuZ3RoJiYobj1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sZyxjLGw9cjtzd2l0Y2goaSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW2wrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbbCsrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tsXT1zW2wtdF0rYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tsKytdPW5bb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW2wrK109KG5bb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW2xdPShuW29dK3NbbC10XT4+MSkrYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2c9bltvXTtjPWFbb107c1tsKytdPWcrY31mb3IoO288ZTsrK28pe2c9bltvXTtjb25zdCBlPW5bby10XSxpPXNbbC10XSxyPWkrZy1lO2xldCBoPXItaTtoPDAmJihoPS1oKTtsZXQgQz1yLWc7QzwwJiYoQz0tQyk7bGV0IFE9ci1lO1E8MCYmKFE9LVEpO2M9YVtvXTtzW2wrK109aDw9QyYmaDw9UT9pK2M6Qzw9UT9nK2M6ZStjfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7aX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7dFtpKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKGEpO3Quc2V0KGUsaSk7aSs9YX19ZWxzZXthPTI1Ny1hO2NvbnN0IHI9ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXRbaSsrXT1yfXRoaXMuYnVmZmVyTGVuZ3RoPWl9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmk9ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9aTt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBpPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1FdDspaS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1FdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGk7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gaTtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1FdDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PUV0KWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PUV0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGk9ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBpPWUucGVla0J5dGVzKDE1KSxuPWkubGVuZ3RoO2lmKDA9PT1uKWJyZWFrO2ZvcihsZXQgZT0wO2U8bjtlKyspe2E9aVtlXTtpZigoMCE9PWF8fDA9PT1pW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpLnNsaWNlKCkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBnPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PUV0KXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgaT10W2UuY21kXTtpZighaSl7cz0wO2JyZWFrfWlmKGkudmFyaWFibGVBcmdzP2c8PWkubnVtQXJnczpnPT09aS5udW1BcmdzKWJyZWFrO2c9MH1lbHNlIGcrK31pZigyPT09cylicmVha31lbHNlIHM9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihyKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXIpKX19bGV0IG49NDtlLnNraXAoLW4pO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChuKTtpc1doaXRlU3BhY2UoYSl8fG4tLTtyZXR1cm4gZS5wb3Mtbi1pfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaSxhLHI9ITE7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09aSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpyPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihyKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWkpe2NvbnN0IHQ9ZS5wb3M7aT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoaSk7KXtlLnNraXAoKTtpPWUucGVla0J5dGUoKX1pZig2Mj09PWkpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1pOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGk9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09aSlpPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09aSlpPTczPT09dD8yOjA7ZWxzZSBpZigyPT09aSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGk9dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09RXQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09RXQpYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHI9aS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEuRnx8YS5GaWx0ZXIpO2xldCBuO2lmKHMgaW5zdGFuY2VvZiBOYW1lKW49cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihzWzBdKTtlIGluc3RhbmNlb2YgTmFtZSYmKG49ZS5uYW1lKX1jb25zdCBvPWkucG9zO2xldCBnLGM7c3dpdGNoKG4pe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zz10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zz10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zz10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGc8MWUzJiZyPjApe2NvbnN0IGU9aS5wb3M7aS5wb3M9dC5iZWdpbklubGluZUltYWdlUG9zO2M9ZnVuY3Rpb24gZ2V0SW5saW5lSW1hZ2VDYWNoZUtleShlKXtjb25zdCB0PVtdLGk9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8aS0xOyl0LnB1c2goZVthKytdPDw4fGVbYSsrXSk7YTxpJiZ0LnB1c2goZVthXSk7cmV0dXJuIGkrIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KX0oaS5nZXRCeXRlcyhyK2cpKTtpLnBvcz1lO2NvbnN0IGE9dGhpcy5pbWFnZUNhY2hlW2NdO2lmKHZvaWQgMCE9PWEpe3RoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTthLnJlc2V0KCk7cmV0dXJuIGF9fWNvbnN0IGw9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBhKWwuc2V0KGUsYVtlXSk7bGV0IGg9aS5tYWtlU3ViU3RyZWFtKG8sZyxsKTtlJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGcpKTtoPXRoaXMuZmlsdGVyKGgsbCxnKTtoLmRpY3Q9bDtpZih2b2lkIDAhPT1jKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbY109aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I0QoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBpPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9aS5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3Qgbj10LnBlZWtCeXRlcygyMDQ4KSxvPW4ubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgZz0wO2Zvcig7ZzxvOyl7bGV0IG89MDtmb3IoO288YSYmbltnK29dPT09aVtvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmbltnK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UobltnK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5pLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9ZztyZXR1cm4gdC5wb3MtZX19ZysrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBpPXRoaXMubGV4ZXI7bGV0IGE9aS5zdHJlYW07aS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7aS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI0Qocik7aWYoczwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtpLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocixzLGUpO3QmJihhPXQuY3JlYXRlU3RyZWFtKGEscykpO2E9dGhpcy5maWx0ZXIoYSxlLHMpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsaSl7bGV0IGE9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYoYSBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUsaSxyKX1sZXQgcz1pO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YSxpPXI7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87KytuKXthPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbbl0pO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke2F9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGkpJiZuIGluIGkmJihyPXRoaXMueHJlZi5mZXRjaElmUmVmKGlbbl0pKTtlPXRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxzLHIpO3M9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsaSxhKXtpZigwPT09aSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGkpLGksYSk6bmV3IEZsYXRlU3RyZWFtKGUsaSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGksdCksaSxhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGksdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxpLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxpLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiBuZXcgQXNjaWk4NVN0cmVhbShlLGkpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKGUsaSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgQ0NJVFRGYXhTdHJlYW0oZSxpLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4gbmV3IFJ1bkxlbmd0aFN0cmVhbShlLGkpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgSmJpZzJTdHJlYW0oZSxpLGEpfXdhcm4oYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJbnZhbGlkIHN0cmVhbTogIiR7ZX0iYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfX19Y29uc3Qgc2k9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxpPTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7aT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCByPWUtNDgscz0wLG49MTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7Y29uc3QgYT1lLTQ4O2lmKHQpcz0xMCpzK2E7ZWxzZXswIT09aSYmKGkqPTEwKTtyPTEwKnIrYX19ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1pKWJyZWFrO2k9MX1lbHNlIGlmKDQ1PT09ZSl3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztlPXRoaXMucGVla0NoYXIoKTtpZig0Mz09PWV8fDQ1PT09ZSl7bj00NT09PWU/LTE6MTt0aGlzLm5leHRDaGFyKCl9ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9MCE9PWkmJihyLz1pKTt0JiYocio9MTAqKihuKnMpKTtyZXR1cm4gYSpyfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2kucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGkucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDppLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6aS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmkucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmkucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjppLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3I9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtyPSExO2U9KGU8PDMpKygxNSZhKX19aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7cnx8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gaS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhc2lbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoc2lbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7aS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHI9dG9IZXhEaWdpdChlKTtpZigtMT09PXIpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHNpW2VdKWJyZWFrO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHIpKX1lbHNlIGkucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7aS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7aS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGkuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fHdhcm4oYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6d2FybigiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0PXRoaXMuY3VycmVudENoYXIsaT0tMSxhPS0xO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKHQ8MCl7d2FybigiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09c2lbdF0pe2E9dG9IZXhEaWdpdCh0KTtpZigtMT09PWEpdGhpcy5faGV4U3RyaW5nV2Fybih0KTtlbHNlIGlmKC0xPT09aSlpPWE7ZWxzZXtlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0fGEpKTtpPS0xfXQ9dGhpcy5uZXh0Q2hhcigpfWVsc2UgdD10aGlzLm5leHRDaGFyKCl9LTEhPT1pJiZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0KSk7cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1zaVt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiXSIpO2Nhc2UgNjA6dD10aGlzLm5leHRDaGFyKCk7aWYoNjA9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPj4iKX1yZXR1cm4gQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgSWxsZWdhbCBjaGFyYWN0ZXI6ICR7dH1gKX1sZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoaSl9fWNvbnN0IGE9dGhpcy5rbm93bkNvbW1hbmRzO2xldCByPXZvaWQgMCE9PWE/LltpXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFzaVt0XTspe2NvbnN0IGU9aStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHImJnZvaWQgMD09PWFbZV0pYnJlYWs7aWYoMTI4PT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2kubGVuZ3RofWApO2k9ZTtyPXZvaWQgMCE9PWE/LltpXX1pZigidHJ1ZSI9PT1pKXJldHVybiEwO2lmKCJmYWxzZSI9PT1pKXJldHVybiExO2lmKCJudWxsIj09PWkpcmV0dXJuIG51bGw7IkJJIj09PWkmJih0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9dGhpcy5zdHJlYW0ucG9zKTtyZXR1cm4gQ21kLmdldChpKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0LGk9ITEpe2NvbnN0IGE9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmKGk/YT49MDphPjApKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGk9dC5nZXRPYmooKSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbixvO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmaXNDbWQociwib2JqIikmJnMgaW5zdGFuY2VvZiBEaWN0JiYibnVtYmVyIj09dHlwZW9mKG49cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm4+MCkpcmV0dXJuIG51bGw7aWYoKG89Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpvLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgaTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShpPXQubGVuZ3RoKXx8ND09PWkpKXtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBpPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fWNvbnN0IG5pPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sb2k9MioqMjQtMTtjbGFzcyBDTWFwe2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxpKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxpKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBDaWRSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IoO2U8PXQ7KXRoaXMuX21hcFtlKytdPWkrK31tYXBCZlJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1pO2NvbnN0IHQ9aS5jaGFyQ29kZUF0KGEpKzE7dD4yNTU/aT1pLnN1YnN0cmluZygwLGEtMSkrU3RyaW5nLmZyb21DaGFyQ29kZShpLmNoYXJDb2RlQXQoYS0xKSsxKSsiXDAiOmk9aS5zdWJzdHJpbmcoMCxhKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7aWYodC1lPm9pKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aDtsZXQgcj0wO2Zvcig7ZTw9dCYmcjxhOyl7dGhpcy5fbWFwW2VdPWlbcisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxpPXQubGVuZ3RoO2lmKGk8PTY1NTM2KWZvcihsZXQgYT0wO2E8aTthKyspdm9pZCAwIT09dFthXSYmZShhLHRbYV0pO2Vsc2UgZm9yKGNvbnN0IGkgaW4gdCllKGksdFtpXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGkpe2xldCBhPTA7Y29uc3Qgcj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspe2E9KGE8PDh8ZS5jaGFyQ29kZUF0KHQrcykpPj4+MDtjb25zdCBuPXJbc107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7KXtjb25zdCB0PW5bZSsrXSxyPW5bZSsrXTtpZihhPj10JiZhPD1yKXtpLmNoYXJjb2RlPWE7aS5sZW5ndGg9cysxO3JldHVybn19fWkuY2hhcmNvZGU9MDtpLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7KXtjb25zdCByPWFbdCsrXSxzPWFbdCsrXTtpZihlPj1yJiZlPD1zKXJldHVybiBpKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihpKXx8InN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoaSk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTppO2UubWFwQmZSYW5nZShhLHIsdCl9ZWxzZXtpZighaXNDbWQoaSwiWyIpKWJyZWFrO3tpPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyFpc0NtZChpLCJdIikmJmkhPT1FdDspe3MucHVzaChpKTtpPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShhLHIscyl9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PUV0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcENpZFJhbmdlKGEscixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCByPXN0clRvSW50KGkpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoaS5sZW5ndGgsYSxyKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihpKSYmKGUudmVydGljYWw9ISFpKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO2kgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWkubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxpLGEpe2xldCByLHM7QTpmb3IoOzspdHJ5e2NvbnN0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1pLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1pLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtyPWl9ZWxzZSBpZihpIGluc3RhbmNlb2YgQ21kKXN3aXRjaChpLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBBO2Nhc2UidXNlY21hcCI6ciBpbnN0YW5jZW9mIE5hbWUmJihzPXIubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hYSYmcyYmKGE9cyk7cmV0dXJuIGE/ZXh0ZW5kQ01hcChlLGksYSk6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxpKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoaSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllLmNvZGVzcGFjZVJhbmdlc1tpXT10W2ldLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFuaS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6aSxpc0NvbXByZXNzZWQ6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhpLHIsKGU9PmV4dGVuZENNYXAocix0LGUpKSk7Y29uc3Qgcz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpKSk7cmV0dXJuIHBhcnNlQ01hcChyLHMsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOml9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBhPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxpKTtyZXR1cm4gYS5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChhLm5hbWUsdCk6YX10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE3OTUpO2NvbnN0IGdpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sSWk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sY2k9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sbGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxoaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLENpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sQmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLFFpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxFaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHVpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gUWk7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gQmk7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gQ2k7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIEVpO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB1aTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gbGk7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGRpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdLGZpPTM5MSxwaT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxtaT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWl9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBpPXRoaXMucGFyc2VIZWFkZXIoKSxhPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChyLm9iai5nZXQoMCkpLGc9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWkub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChhLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChzLm9iaik7dC50b3BEaWN0PWc7dC5nbG9iYWxTdWJySW5kZXg9bi5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Zy5oYXNOYW1lKCJST1MiKTtjb25zdCBjPWcuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGw9dGhpcy5wYXJzZUluZGV4KGMpLm9iaixoPWcuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtjb25zdCBDPWcuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKEMpe2UuYXNjZW50PU1hdGgubWF4KENbM10sQ1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKENbMV0sQ1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IFEsRTtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoZy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9RT1udWxsO1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksbC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGcuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGwuY291bnQpfWVsc2V7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxsLmNvdW50LHQuc3RyaW5ncywhMSk7RT10aGlzLnBhcnNlRW5jb2RpbmcoZy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsUS5jaGFyc2V0KX10LmNoYXJzZXQ9UTt0LmVuY29kaW5nPUU7Y29uc3QgdT10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmwsbG9jYWxTdWJySW5kZXg6Zy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpuLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmcucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXUuY2hhclN0cmluZ3M7dC5zZWFjcz11LnNlYWNzO3Qud2lkdGhzPXUud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJjEhPT1lW2ldOykrK2k7aWYoaT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1pKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGkpO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxuPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLG4pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgaT1lW3QrK107aWYoMzA9PT1pKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBpPSIiO2NvbnN0IGE9MTUscj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scz1lLmxlbmd0aDtmb3IoO3Q8czspe2NvbnN0IHM9ZVt0KytdLG49cz4+NCxvPTE1JnM7aWYobj09PWEpYnJlYWs7aSs9cltuXTtpZihvPT09YSlicmVhaztpKz1yW29dfXJldHVybiBwYXJzZUZsb2F0KGkpfSgpO2lmKDI4PT09aSl7aT1lW3QrK107aT0oaTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBpfWlmKDI5PT09aSl7aT1lW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107cmV0dXJuIGl9aWYoaT49MzImJmk8PTI0NilyZXR1cm4gaS0xMzk7aWYoaT49MjQ3JiZpPD0yNTApcmV0dXJuIDI1NiooaS0yNDcpK2VbdCsrXSsxMDg7aWYoaT49MjUxJiZpPD0yNTQpcmV0dXJuLTI1NiooaS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicraSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgaT1bXTtjb25zdCBhPVtdO3Q9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7YS5wdXNoKFtyLGldKTtpPVtdOysrdH1lbHNlIGkucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIGF9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxpPXRoaXMuYnl0ZXMsYT1pW2UrK108PDh8aVtlKytdLHI9W107bGV0IHMsbixvPWU7aWYoMCE9PWEpe2NvbnN0IHQ9aVtlKytdLGc9ZSsoYSsxKSp0LTE7Zm9yKHM9MCxuPWErMTtzPG47KytzKXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDsrK3Ipe2E8PD04O2ErPWlbZSsrXX1yLnB1c2goZythKX1vPXJbYV19Zm9yKHM9MCxuPXIubGVuZ3RoLTE7czxuOysrcyl7Y29uc3QgZT1yW3NdLGE9cltzKzFdO3QuYWRkKGkuc3ViYXJyYXkoZSxhKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QucHVzaChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgZShpKTtmb3IoY29uc3RbZSxpXW9mIHQpYS5zZXRCeUtleShlLGkpO3JldHVybiBhfXBhcnNlQ2hhclN0cmluZyhlLHQsaSxhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjspe2NvbnN0IGc9dFtvKytdO2xldCBjPW51bGw7aWYoMTI9PT1nKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7cj0wfWVsc2UgYz1taVtlXX1lbHNlIGlmKDI4PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNik+PjE2O28rPTI7cisrfWVsc2UgaWYoMTQ9PT1nKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UocixyKzQpO3JldHVybiExfX1jPXBpW2ddfWVsc2UgaWYoZz49MzImJmc8PTI0Nil7c1tyXT1nLTEzOTtyKyt9ZWxzZSBpZihnPj0yNDcmJmc8PTI1NCl7c1tyXT1nPDI1MT8oZy0yNDc8PDgpK3Rbb10rMTA4Oi0oZy0yNTE8PDgpLXRbb10tMTA4O28rKztyKyt9ZWxzZSBpZigyNTU9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7cisrfWVsc2UgaWYoMTk9PT1nfHwyMD09PWcpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztyJT0yO2M9cGlbZ119ZWxzZXtpZigxMD09PWd8fDI5PT09Zyl7Y29uc3QgdD0xMD09PWc/aTphO2lmKCF0KXtjPXBpW2ddO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgbj0zMjc2ODt0LmNvdW50PDEyNDA/bj0xMDc6dC5jb3VudDwzMzkwMCYmKG49MTEzMSk7Y29uc3Qgbz1zWy0tcl0rbjtpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPXBpW2ddO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxpLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWcpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWcmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2M9cGlbMTRdfWVsc2V7aWYoOT09PWcpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfWM9cGlbZ119fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Z3x8MjM9PT1nKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Z3x8MTg9PT1nKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1nPzM6MjN9fWlmKCJtaW4iaW4gYyYmIWUudW5kZWZTdGFjayYmcjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1zW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihzLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlIGlmKGMuc3RhY2tDbGVhcmluZylyPTA7ZWxzZSBpZihjLnJlc2V0U3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihjLnVuZGVmU3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1uPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbik7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmksZmRTZWxlY3Q6YSxmZEFycmF5OnIscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG49W10sbz1bXSxnPWUuY291bnQ7Zm9yKGxldCBjPTA7YzxnO2MrKyl7Y29uc3QgZz1lLmdldChjKSxsPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsQz1udWxsLFE9cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoYyk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7UT1yW2VdLnByaXZhdGVEaWN0O0M9US5zdWJyc0luZGV4fX1lbHNlIHQmJihDPXQpO2gmJihoPXRoaXMucGFyc2VDaGFyU3RyaW5nKGwsZyxDLGkpKTtpZihudWxsIT09bC53aWR0aCl7Y29uc3QgZT1RLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bY109ZStsLndpZHRofWVsc2V7Y29uc3QgZT1RLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bY109ZX1udWxsIT09bC5zZWFjJiYobltjXT1sLnNlYWMpO2h8fGUuc2V0KGMsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm4sd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGk9dFswXSxhPXRbMV07aWYoMD09PWl8fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHI9YStpLHM9dGhpcy5ieXRlcy5zdWJhcnJheShhLHIpLG49dGhpcy5wYXJzZURpY3Qocyksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsbixlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgZz1vLmdldEJ5TmFtZSgiU3VicnMiKSxjPWErZztpZigwPT09Z3x8Yz49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgbD10aGlzLnBhcnNlSW5kZXgoYyk7by5zdWJyc0luZGV4PWwub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGksYSl7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLklTT19BRE9CRSxnaSk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVCxJaSk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVF9TVUJTRVQsY2kpO2NvbnN0IHI9dGhpcy5ieXRlcyxzPWUsbj1yW2UrK10sbz1bYT8wOiIubm90ZGVmIl07bGV0IGcsYyxsO3QtPTE7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobD0wO2w8dDtsKyspe2c9cltlKytdPDw4fHJbZSsrXTtvLnB1c2goYT9nOmkuZ2V0KGcpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTtmb3IobD0wO2w8PWM7bCsrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTw8OHxyW2UrK107Zm9yKGw9MDtsPD1jO2wrKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCBoPWUsQz1yLnN1YmFycmF5KHMsaCk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLG4sbyxDKX1wYXJzZUVuY29kaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPXRoaXMuYnl0ZXM7bGV0IG4sbyxnLGM9ITEsbD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7Yz0hMDtuPWU7Y29uc3QgdD1lP2xpOkJpO2ZvcihvPTAsZz1hLmxlbmd0aDtvPGc7bysrKXtjb25zdCBlPXQuaW5kZXhPZihhW29dKTstMSE9PWUmJihyW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtuPXNbZSsrXTtzd2l0Y2goMTI3Jm4pe2Nhc2UgMDpjb25zdCB0PXNbZSsrXTtmb3Iobz0xO288PXQ7bysrKXJbc1tlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBpPXNbZSsrXTtsZXQgYT0xO2ZvcihvPTA7bzxpO28rKyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCtpO2UrKylyW2VdPWErK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7bn0gaW4gQ0ZGYCl9Y29uc3QgZz1lO2lmKDEyOCZuKXtzW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1zW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PXNbZSsrXSxuPShzW2UrK108PDgpKygyNTUmc1tlKytdKTtyW3RdPWEuaW5kZXhPZihpLmdldChuKSl9fSgpfWw9cy5zdWJhcnJheSh0LGcpfW4mPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGMsbixyLGwpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBpPXRoaXMuYnl0ZXMsYT1pW2UrK10scj1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1pW2UrK107ci5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBuPWlbZSsrXTw8OHxpW2UrK107Zm9yKHM9MDtzPG47KytzKXtsZXQgdD1pW2UrK108PDh8aVtlKytdO2lmKDA9PT1zJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCBhPWlbZSsrXSxuPWlbZV08PDh8aVtlKzFdO2ZvcihsZXQgZT10O2U8bjsrK2Upci5wdXNoKGEpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2F9Ii5gKX1pZihyLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KGEscil9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWk7dGhpcy5vZmZTaXplPWF9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/ZGlbZV06ZS1maTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1maV06ZGlbMF19Z2V0U0lEKGUpe2xldCB0PWRpLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrZmk6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgaSBvZiB0KWlmKGlzTmFOKGkpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBpPXRoaXMudHlwZXNbZV07Im51bSIhPT1pJiYic2lkIiE9PWkmJiJvZmZzZXQiIT09aXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoaVswXSk/KGlbMF1bMF08PDgpK2lbMF1bMV06aVswXTt0LmtleVRvTmFtZU1hcFtlXT1pWzFdO3QubmFtZVRvS2V5TWFwW2lbMV1dPWU7dC50eXBlc1tlXT1pWzJdO3QuZGVmYXVsdHNbZV09aVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShpWzBdKT9pWzBdOltpWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IHlpPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoeWkpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IHdpPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHdpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBiaT17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsaSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGE9aS5kYXRhLHI9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7Y29uc3QgaT01KmUrcixzPWkrMSxuPWkrMixvPWkrMyxnPWkrNDtpZigyOSE9PWFbaV18fDAhPT1hW3NdfHwwIT09YVtuXXx8MCE9PWFbb118fDAhPT1hW2ddKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBjPXRbZV07YVtpXT0yOTthW3NdPWM+PjI0JjI1NTthW25dPWM+PjE2JjI1NTthW29dPWM+PjgmMjU1O2FbZ109MjU1JmN9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0saT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGkpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGkgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2kuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGkuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbj1zLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGcpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZCluLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgaT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtuLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGkpfWNvbnN0IGM9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO24uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO24uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobCk7aWYoZS5pc0NJREZvbnQpe24uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgaT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChpKTtzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBhPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxhLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbbl0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBpPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoaSl7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChpWzJdPytpWzJdOjApK2lbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgbj1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MiluLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIG59ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGkubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWlbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYoaSl7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixuPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQobik7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbj1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxuKTtsZXQgZz1pLmxlbmd0aDtuLm9mZnNldChnKTtvLmxlbmd0aHx8KGc9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsZ10saSk7aS5hZGQobyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtuLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGkpO2kuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUub3JkZXIpe2lmKCEoYSBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IHI9ZS52YWx1ZXNbYV0scz1lLnR5cGVzW2FdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtpZigwIT09ci5sZW5ndGgpe2ZvcihsZXQgbj0wLG89cy5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1zW25dLGc9cltuXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW2FdO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGkubGVuZ3RoKTtpLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHJbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1pLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIGl9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhpKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGk9MDtpPGUuY291bnQ7aSsrKXtjb25zdCBhPWUuZ2V0KGkpOzAhPT1hLmxlbmd0aD90LmFkZChhKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsaSxhKXtsZXQgcjtjb25zdCBzPXQtMTtpZihhKXI9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLHM+PjgmMjU1LDI1NSZzXSk7ZWxzZXtyPW5ldyBVaW50OEFycmF5KDErMipzKTtyWzBdPTA7bGV0IHQ9MDtjb25zdCBhPWUuY2hhcnNldC5sZW5ndGg7bGV0IG49ITE7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKz0yKXtsZXQgbz0wO2lmKHQ8YSl7Y29uc3QgYT1lLmNoYXJzZXRbdCsrXTtvPWkuZ2V0U0lEKGEpO2lmKC0xPT09byl7bz0wO2lmKCFuKXtuPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHthfSBpbiBDRkYgc3RyaW5nc2ApfX19cltzXT1vPj44JjI1NTtyW3MrMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGksYTtzd2l0Y2godCl7Y2FzZSAwOmk9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7aVswXT10O2ZvcihhPTA7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspaVthKzFdPWUuZmRTZWxlY3RbYV07YnJlYWs7Y2FzZSAzOmNvbnN0IHI9MDtsZXQgcz1lLmZkU2VsZWN0WzBdO2NvbnN0IG49W3QsMCwwLHI+PjgmMjU1LDI1NSZyLHNdO2ZvcihhPTE7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFthXTtpZih0IT09cyl7bi5wdXNoKGE+PjgmMjU1LDI1NSZhLHQpO3M9dH19Y29uc3Qgbz0obi5sZW5ndGgtMykvMztuWzFdPW8+PjgmMjU1O25bMl09MjU1Jm87bi5wdXNoKGE+PjgmMjU1LDI1NSZhKTtpPW5ldyBVaW50OEFycmF5KG4pfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGk9ZS5vYmplY3RzLGE9aS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuWzAsMF07Y29uc3Qgcj1bYT4+OCYyNTUsMjU1JmFdO2xldCBzLG4sbz0xO2ZvcihzPTA7czxhOysrcylvKz1pW3NdLmxlbmd0aDtuPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O3IucHVzaChuKTtsZXQgZz0xO2ZvcihzPTA7czxhKzE7cysrKXsxPT09bj9yLnB1c2goMjU1JmcpOjI9PT1uP3IucHVzaChnPj44JjI1NSwyNTUmZyk6Mz09PW4/ci5wdXNoKGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk6ci5wdXNoKGc+Pj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTtpW3NdJiYoZys9aVtzXS5sZW5ndGgpfWZvcihzPTA7czxhO3MrKyl7dFtzXSYmdFtzXS5vZmZzZXQoci5sZW5ndGgpO3IucHVzaCguLi5pW3NdKX1yZXR1cm4gcn19Y29uc3QgRGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksRmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSksU2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSkpO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBpPXRbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKWE9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO2E9ZS5zdWJzdHJpbmcoMSl9aWYoYT09PWEudG9VcHBlckNhc2UoKSl7aT1wYXJzZUludChhLDE2KTtpZihpPj0wKXJldHVybiBpfX1yZXR1cm4tMX1jb25zdCBraT1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBpPWtpW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGk9a2kubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9a2lbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgUmk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLE5pPW5ldyBNYXA7Y29uc3QgR2k9ITAsTWk9MSx4aT0yLEhpPTQsSmk9MzIsdmk9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGk9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1pKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWkpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixzLG47Y29uc3Qgbz0hIShlLmZsYWdzJkhpKTtpZihlLmlzSW50ZXJuYWxGb250KXtuPXQ7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe249Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKG8pZm9yKHMgaW4gdClhW3NdPXRbc107ZWxzZXtuPUJpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWNvbnN0IGc9ZS5kaWZmZXJlbmNlcztsZXQgYztpZihnKWZvcihzIGluIGcpe2NvbnN0IGU9Z1tzXTtyPWkuaW5kZXhPZihlKTtpZigtMT09PXIpe2N8fChjPURpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGMpO3QhPT1lJiYocj1pLmluZGV4T2YodCkpfWFbc109cj49MD9yOjB9cmV0dXJuIGF9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgWWk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pKSxLaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFRpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLHFpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5HaWxsU2Fuc01UPSJIZWx2ZXRpY2EiO2VbIkdpbGxTYW5zTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiR2lsbFNhbnNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiR2lsbFNhbnNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpLE9pPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSksUGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKSxXaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSksamk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pKSxYaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gS2koKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShLaSgpW3RdfHxxaSgpW3RdfHxPaSgpW3RdfHxQaSgpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY29kZVBvaW50QXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsaT10aGlzLmxhc3RDaGFyO3Q8PWk7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKGUsdCxHaSk7dGhpcy5jZmY9aS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBhPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPWEuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6aSxjTWFwOmF9PXQscj1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcyxuO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGk/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWlbZV07dm9pZCAwIT09YSYmKHRbYV09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBlPXJbbl07bz1hLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtzW29dPW59ZWxzZSBmb3Iobj0wO248ZS5jaGFyU3RyaW5ncy5jb3VudDtuKyspe289YS5jaGFyQ29kZU9mKG4pO3Nbb109bn1yZXR1cm4gc31sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cz10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHIpO3JldHVybiBzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGk9ZS5jaGFyc2V0LGE9dC5lbmNvZGluZyxyPVtdO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZih0Pj0wKXtjb25zdCBhPWlbdF07YSYmKHJbZV09YSl9fXIubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXIpfX1mdW5jdGlvbiBnZXRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gZ2V0VWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIGdldEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiBnZXRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBnZXRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MzI3Njg7dDwxMjQwP2k9MTA3OnQ8MzM5MDAmJihpPTExMzEpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsaSl7Y29uc3QgYT0xPT09Z2V0VWludDE2KGUsdCsyKT9nZXRVaW50MzIoZSx0KzgpOmdldFVpbnQzMihlLHQrMTYpLHI9Z2V0VWludDE2KGUsdCthKTtsZXQgcyxuLG87aWYoND09PXIpe2dldFVpbnQxNihlLHQrYSsyKTtjb25zdCBpPWdldFVpbnQxNihlLHQrYSs2KT4+MTtuPXQrYSsxNDtzPVtdO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb109e2VuZDpnZXRVaW50MTYoZSxuKX07bis9Mjtmb3Iobz0wO288aTtvKyssbis9MilzW29dLnN0YXJ0PWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uaWREZWx0YT1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9Mil7bGV0IHQ9Z2V0VWludDE2KGUsbik7aWYoMCE9PXQpe3Nbb10uaWRzPVtdO2ZvcihsZXQgaT0wLGE9c1tvXS5lbmQtc1tvXS5zdGFydCsxO2k8YTtpKyspe3Nbb10uaWRzW2ldPWdldFVpbnQxNihlLG4rdCk7dCs9Mn19fXJldHVybiBzfWlmKDEyPT09cil7Y29uc3QgaT1nZXRVaW50MzIoZSx0K2ErMTIpO249dCthKzE2O3M9W107Zm9yKG89MDtvPGk7bysrKXt0PWdldFVpbnQzMihlLG4pO3MucHVzaCh7c3RhcnQ6dCxlbmQ6Z2V0VWludDMyKGUsbis0KSxpZERlbHRhOmdldFVpbnQzMihlLG4rOCktdH0pO24rPTEyfXJldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxpLXQpLHt9LGEpLnBhcnNlKCk7cmV0dXJue2dseXBoczpyLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6ci50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpyLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6ci5pc0NJREZvbnQsZmRTZWxlY3Q6ci5mZFNlbGVjdCxmZEFycmF5OnIuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKTtsZXQgYT0wLHI9MCxzPWUubGVuZ3RoLTE7Zm9yKDtyPHM7KXtjb25zdCB0PXIrcysxPj4xO2k8ZVt0XS5zdGFydD9zPXQtMTpyPXR9ZVtyXS5zdGFydDw9aSYmaTw9ZVtyXS5lbmQmJihhPWVbcl0uaWREZWx0YSsoZVtyXS5pZHM/ZVtyXS5pZHNbaS1lW3JdLnN0YXJ0XTppKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmksZ2x5cGhJZDphfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxpLGEscil7dC5hZGQoIlEiLFtlLGksYSxyXSl9bGV0IGE9MDtjb25zdCByPWdldEludDE2KGUsYSk7bGV0IHMsbj0wLG89MDthKz0xMDtpZihyPDApZG97cz1nZXRVaW50MTYoZSxhKTtjb25zdCByPWdldFVpbnQxNihlLGErMik7YSs9NDtsZXQgZyxjO2lmKDEmcyl7aWYoMiZzKXtnPWdldEludDE2KGUsYSk7Yz1nZXRJbnQxNihlLGErMil9ZWxzZXtnPWdldFVpbnQxNihlLGEpO2M9Z2V0VWludDE2KGUsYSsyKX1hKz00fWVsc2UgaWYoMiZzKXtnPWdldEludDgoZSxhKyspO2M9Z2V0SW50OChlLGErKyl9ZWxzZXtnPWVbYSsrXTtjPWVbYSsrXX1pZigyJnMpe249ZztvPWN9ZWxzZXtuPTA7bz0wfWxldCBsPTEsaD0xLEM9MCxRPTA7aWYoOCZzKXtsPWg9Z2V0RmxvYXQyMTQoZSxhKTthKz0yfWVsc2UgaWYoNjQmcyl7bD1nZXRGbG9hdDIxNChlLGEpO2g9Z2V0RmxvYXQyMTQoZSxhKzIpO2ErPTR9ZWxzZSBpZigxMjgmcyl7bD1nZXRGbG9hdDIxNChlLGEpO0M9Z2V0RmxvYXQyMTQoZSxhKzIpO1E9Z2V0RmxvYXQyMTQoZSxhKzQpO2g9Z2V0RmxvYXQyMTQoZSxhKzYpO2ErPTh9Y29uc3QgRT1pLmdseXBoc1tyXTtpZihFKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbbCxDLFEsaCxuLG9dKTtjb21waWxlR2x5ZihFLHQsaSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJnMpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxyO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLGw9W107Zm9yKDtsLmxlbmd0aDxjOyl7cz1lW2ErK107bGV0IHQ9MTs4JnMmJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylsLnB1c2goe2ZsYWdzOnN9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZsW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119bFtpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmbFtpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfWxbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHI7YSsrKXtjb25zdCBlPXRbYV0scj1sLnNsaWNlKGgsZSsxKTtpZigxJnJbMF0uZmxhZ3Mpci5wdXNoKHJbMF0pO2Vsc2UgaWYoMSZyLmF0KC0xKS5mbGFncylyLnVuc2hpZnQoci5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihyWzBdLngrci5hdCgtMSkueCkvMix5OihyWzBdLnkrci5hdCgtMSkueSkvMn07ci51bnNoaWZ0KGUpO3IucHVzaChlKX1tb3ZlVG8oclswXS54LHJbMF0ueSk7Zm9yKGk9MSxnPXIubGVuZ3RoO2k8ZztpKyspaWYoMSZyW2ldLmZsYWdzKWxpbmVUbyhyW2ldLngscltpXS55KTtlbHNlIGlmKDEmcltpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnkscltpKzFdLngscltpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSwocltpXS54K3JbaSsxXS54KS8yLChyW2ldLnkrcltpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxpLGEscixzLG4pe3QuYWRkKCJDIixbZSxpLGEscixzLG5dKX1jb25zdCByPVtdO2xldCBzPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxsLGgsQyxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMTA6ZD1yLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixsLFEscyxRKTtjPXMrci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxsLG4scyxuKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtFPVErci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsbCxFLHMsRSk7Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO3U9RStyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxsLHUscyxuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PW47Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWw7bj1DO01hdGguYWJzKHMtZSk+TWF0aC5hYnMobi10KT9zKz1yLnNoaWZ0KCk6bis9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtuPXIucG9wKCk7cz1yLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHMsbik7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zys9bys3Pj4zO3A9ITA7YnJlYWs7Y2FzZSAyMTpuKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfXMrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bDtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKG4rPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW47bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2KT4+MTYpO2crPTI7YnJlYWs7Y2FzZSAyOTpkPXIucG9wKCkraS5nc3VicnNCaWFzO2Y9aS5nc3VicnNbZF07ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2RlZmF1bHQ6aWYobTwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7bX1gKTtpZihtPDI0NylyLnB1c2gobS0xMzkpO2Vsc2UgaWYobTwyNTEpci5wdXNoKDI1NioobS0yNDcpK2VbZysrXSsxMDgpO2Vsc2UgaWYobTwyNTUpci5wdXNoKDI1NiotKG0tMjUxKS1lW2crK10tMTA4KTtlbHNle3IucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNnxlW2crMl08PDh8ZVtnKzNdKS82NTUzNik7Zys9NH19cCYmKHIubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3RbaSxhLHIscyxuLG9dPXRoaXMuY3VycmVudFRyYW5zZm9ybTtmb3IobGV0IGU9MCxnPXQubGVuZ3RoO2U8ZztlKz0yKXtjb25zdCBnPXRbZV0sYz10W2UrMV07dFtlXT1pKmcrcipjK247dFtlKzFdPWEqZytzKmMrb310aGlzLmNtZHMucHVzaChgJHtlfSR7dC5qb2luKCIgIil9YCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0U1ZHKCl7cmV0dXJuIHRoaXMuY21kcy5qb2luKCIiKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCBhLHI9dGhpcy5jb21waWxlZEdseXBoc1tpXTtpZih2b2lkIDA9PT1yKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPSIiO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWU/Lmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiIiO2xldCBpPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtpPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8cn1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KGksNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBhPW5ldyBDb21tYW5kczthLnRyYW5zZm9ybShpLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCk7YS5hZGQoIloiKTtyZXR1cm4gYS5nZXRTVkcoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9RGkoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGkpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGkpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IGEscixzLG4sbyxnO2NvbnN0IGM9Z2V0VWludDE2KGksNCk7Zm9yKGxldCBlPTAsbD0xMjtlPGM7ZSsrLGwrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcoaS5zdWJhcnJheShsLGwrNCkpLGM9Z2V0VWludDMyKGksbCs4KSxoPWdldFVpbnQzMihpLGwrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOmE9cGFyc2VDbWFwKGksYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UibG9jYSI6cz1pLnN1YmFycmF5KGMsYytoKTticmVhaztjYXNlImhlYWQiOmc9Z2V0VWludDE2KGksYysxOCk7bz1nZXRVaW50MTYoaSxjKzUwKTticmVhaztjYXNlIkNGRiAiOm49cGFyc2VDZmYoaSxjLGMraCx0KX19aWYocil7Y29uc3QgdD1nP1sxL2csMCwwLDEvZywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGkpe2xldCBhLHI7aWYoaSl7YT00O3I9Z2V0VWludDMyfWVsc2V7YT0yO3I9KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3Qgcz1bXTtsZXQgbj1yKHQsMCk7Zm9yKGxldCBpPWE7aTx0Lmxlbmd0aDtpKz1hKXtjb25zdCBhPXIodCxpKTtzLnB1c2goZS5zdWJhcnJheShuLGEpKTtuPWF9cmV0dXJuIHN9KHIscyxvKSxhLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChuLGEsZS5mb250TWF0cml4KX19Y29uc3QgVmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pKTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KSl9KSksWmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTtjbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3Ioe2dseWZUYWJsZTplLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmksbnVtR2x5cGhzOmF9KXt0aGlzLmdseXBocz1bXTtjb25zdCByPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKSxzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxuPXQ/NDoyO2xldCBvPXQ/ci5nZXRVaW50MzIoMCk6MipyLmdldFVpbnQxNigwKSxnPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Zys9bjtjb25zdCBlPXQ/ci5nZXRVaW50MzIoZyk6MipyLmdldFVpbnQxNihnKTtpZihlPT09byl7dGhpcy5nbHlwaHMucHVzaChuZXcgR2x5cGgoe30pKTtjb250aW51ZX1jb25zdCBpPUdseXBoLnBhcnNlKG8scyk7dGhpcy5nbHlwaHMucHVzaChpKTtvPWV9fWdldFNpemUoKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKCgoZSx0KT0+ZSsodC5nZXRTaXplKCkrMyYtNCkpLDApfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGk9ZT4xMzEwNzAsYT1pPzQ6MixyPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSphKSk7aT9yLnNldFVpbnQzMigwLDApOnIuc2V0VWludDE2KDAsMCk7bGV0IHM9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3MrPWUud3JpdGUocyx0KTtzPXMrMyYtNDtuKz1hO2k/ci5zZXRVaW50MzIobixzKTpyLnNldFVpbnQxNihuLHM+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzppLGxvY2E6bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxpPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGk7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6aT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1pfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2ksYV09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1pO2lmKGEubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBpPVtdO2Zvcig7Oyl7Y29uc3RbYSxyXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPWE7aS5wdXNoKHIpO2lmKCEoMzImci5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsY29tcG9zaXRlczppfSl9Y29uc3Qgcj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsYS5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxzaW1wbGU6cn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBpPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWkud3JpdGUoZSx0KTtyZXR1cm4gZS1pfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBpIG9mIHRoaXMuY29tcG9zaXRlcylpLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46aSx4TWF4OmEseU1heDpyfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWk7dGhpcy54TWF4PWE7dGhpcy55TWF4PXJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOml9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWk7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7YS5wdXNoKGkpfWNvbnN0IHI9YVtpLTFdKzEscz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3MpO2UrPXM7Y29uc3Qgbz1bXTtmb3IobGV0IGk9MDtpPHI7ZSsrLGkrKyl7bGV0IGE9dC5nZXRVaW50OChlKTtvLnB1c2goYSk7aWYoOCZhKXtjb25zdCByPXQuZ2V0VWludDgoKytlKTthXj04O2ZvcihsZXQgZT0wO2U8cjtlKyspby5wdXNoKGEpO2krPXJ9fWNvbnN0IGc9W107bGV0IGM9W10sbD1bXSxoPVtdO2NvbnN0IEM9W107bGV0IFE9MCxFPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDImcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MTYmcj9pOi1pO2MucHVzaChFKX1lbHNlIGlmKDE2JnIpYy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChFKX1pZihhW1FdPT09aSl7USsrO2cucHVzaChjKTtjPVtdfX1FPTA7UT0wO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9b1tpXTtpZig0JnIpe2NvbnN0IGk9dC5nZXRVaW50OChlKyspO0UrPTMyJnI/aTotaTtsLnB1c2goRSl9ZWxzZSBpZigzMiZyKWwucHVzaChFKTtlbHNle0UrPXQuZ2V0SW50MTYoZSk7ZSs9MjtsLnB1c2goRSl9aC5wdXNoKDEmcnw2NCZyKTtpZihhW1FdPT09aSl7Yz1nW1FdO1ErKztDLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOmgseENvb3JkaW5hdGVzOmMseUNvb3JkaW5hdGVzOmx9KSk7bD1bXTtoPVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpDLGluc3RydWN0aW9uczpufSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGk9MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtlKz1hLmZsYWdzLmxlbmd0aDtmb3IobGV0IHI9MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWEueENvb3JkaW5hdGVzW3JdLG49YS55Q29vcmRpbmF0ZXNbcl07bGV0IG89TWF0aC5hYnMocy10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9cztvPU1hdGguYWJzKG4taSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTtpPW59fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lLGE9W10scj1bXSxzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdCBpIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWkuZmxhZ3NbZV07Y29uc3QgZz1pLnhDb29yZGluYXRlc1tlXTtsZXQgYz1nLW47aWYoMD09PWMpe3R8PTE2O2EucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzE4OjI7YS5wdXNoKGUpfWVsc2UgYS5wdXNoKGMpfW49Zztjb25zdCBsPWkueUNvb3JkaW5hdGVzW2VdO2M9bC1vO2lmKDA9PT1jKXt0fD0zMjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGMpO2lmKGU8PTI1NSl7dHw9Yz49MD8zNjo0O3IucHVzaChlKX1lbHNlIHIucHVzaChjKX1vPWw7cy5wdXNoKHQpfXQuc2V0VWludDE2KGUsYS5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgaSBvZiBzKXQuc2V0VWludDgoZSsrLGkpO2ZvcihsZXQgaT0wLHI9YS5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj1hW2ldLG49c1tpXTtpZigyJm4pdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDE2Jm4pKXt0LnNldEludDE2KGUscik7ZSs9Mn19Zm9yKGxldCBpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXJbaV0sbj1zW2ldO2lmKDQmbil0LnNldFVpbnQ4KGUrKyxhKTtlbHNlIGlmKCEoMzImbikpe3Quc2V0SW50MTYoZSxhKTtlKz0yfX1yZXR1cm4gZS1pfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3VycylpZigwIT09aS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgYT0wLHI9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2E8cjthKyspaS54Q29vcmRpbmF0ZXNbYV09TWF0aC5yb3VuZChlKyhpLnhDb29yZGluYXRlc1thXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTppLGFyZ3VtZW50MjphLHRyYW5zZjpyLGluc3RydWN0aW9uczpzfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWk7dGhpcy5hcmd1bWVudDI9YTt0aGlzLnRyYW5zZj1yO3RoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgaT1lLGE9W107bGV0IHI9dC5nZXRVaW50MTYoZSk7Y29uc3Qgcz10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IG4sbztpZigxJnIpe2lmKDImcil7bj10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7bj10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtyXj0xfWVsc2V7aWYoMiZyKXtuPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7bj10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGc9bnVsbDtpZigyNTYmcil7Y29uc3QgaT10LmdldFVpbnQxNihlKTtlKz0yO2c9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWl9cmV0dXJuW2UtaSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnIsZ2x5cGhJbmRleDpzLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjpvLHRyYW5zZjphLGluc3RydWN0aW9uczpnfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWl9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGkpe2VbdF09aT4+OCYyNTU7ZVt0KzFdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGkpe2VbdF09aT4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGkpe2lmKGkgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGksdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGkpZm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKWVbdCsrXT0yNTUmaS5jaGFyQ29kZUF0KGEpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgaSllW3QrK109MjU1JmF9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgaT0xLGE9MDtmb3IoOyhpXmUpPmk7KXtpPDw9MTthKyt9Y29uc3Qgcj1pKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsaT1PYmplY3Qua2V5cyh0KTtpLnNvcnQoKTtjb25zdCBhPWkubGVuZ3RoO2xldCByLHMsbixvLGcsYz0xMisxNiphO2NvbnN0IGw9W2NdO2ZvcihyPTA7cjxhO3IrKyl7bz10W2lbcl1dO2MrPShvLmxlbmd0aCszJi00KT4+PjA7bC5wdXNoKGMpfWNvbnN0IGg9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07d3JpdGVEYXRhKGgsbFtyXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO2hbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtoWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7aFsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2hbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGgsNCxhKTtjb25zdCBDPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGEsMTYpO3dyaXRlSW50MTYoaCw2LEMucmFuZ2UpO3dyaXRlSW50MTYoaCw4LEMuZW50cnkpO3dyaXRlSW50MTYoaCwxMCxDLnJhbmdlU2hpZnQpO2M9MTI7Zm9yKHI9MDtyPGE7cisrKXtnPWlbcl07aFtjXT0yNTUmZy5jaGFyQ29kZUF0KDApO2hbYysxXT0yNTUmZy5jaGFyQ29kZUF0KDEpO2hbYysyXT0yNTUmZy5jaGFyQ29kZUF0KDIpO2hbYyszXT0yNTUmZy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKHM9bFtyXSxuPWxbcisxXTtzPG47cys9NCl7ZT1lK3JlYWRVaW50MzIoaCxzKT4+PjB9d3JpdGVJbnQzMihoLGMrNCxlKTt3cml0ZUludDMyKGgsYys4LGxbcl0pO3dyaXRlSW50MzIoaCxjKzEyLHRbZ10ubGVuZ3RoKTtjKz0xNn1yZXR1cm4gaH1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IF9pPVs0XSx6aT1bNV0sJGk9WzZdLEFhPVs3XSxlYT1bOF0sdGE9WzEyLDM1XSxpYT1bMTRdLGFhPVsyMV0scmE9WzIyXSxzYT1bMzBdLG5hPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLG4sbz0hMTtmb3IobGV0IGc9MDtnPGE7ZysrKXtsZXQgYT1lW2ddO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytnXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLF9pKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsemkpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwkaSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLEFhKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsZWEpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbbl0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtuXSx0LGkpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscmEpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChpYVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYWEpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscmEpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsc2EpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbmEpO2JyZWFrO2Nhc2UgMzA3ODppZihpKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsaWEpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaWEpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxhYSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgZz10aGlzLnN0YWNrLnBvcCgpLGM9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goYy9nKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1uJiYzPT09bCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsdGEsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PW4mJjA9PT1sJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytnXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrZ10tMTA4OigyNTUmZVsrK2ddKTw8MjR8KDI1NSZlWysrZ10pPDwxNnwoMjU1JmVbKytnXSk8PDh8MjU1JmVbKytnXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCByPWEtZTtmb3IobGV0IGU9cjtlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtpP3RoaXMuc3RhY2suc3BsaWNlKHIsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsaSl7aWYoaT49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHIscz0wfHQ7Zm9yKGE9MDthPGk7YSsrKXM9NTI4NDUqKGVbYV0rcykrMjI3MTkmNjU1MzU7Y29uc3Qgbj1lLmxlbmd0aC1pLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGE9aSxyPTA7cjxuO2ErKyxyKyspe2NvbnN0IHQ9ZVthXTtvW3JdPXRecz4+ODtzPTUyODQ1Kih0K3MpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGk9ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKGk/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsaSl7bGV0IGE9MHx0O2NvbnN0IHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyPj4+MSk7bGV0IG4sbztmb3Iobj0wLG89MDtuPHI7bisrKXtjb25zdCB0PWVbbl07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7bisrO2xldCBpO2Zvcig7bjxyJiYhaXNIZXhEaWdpdChpPWVbbl0pOyluKys7aWYobjxyKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxpKSwxNik7c1tvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gcy5zbGljZShpLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFpO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgaT0iIjtkb3tpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBpfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGk9W10sYT1bXSxyPU9iamVjdC5jcmVhdGUobnVsbCk7ci5sZW5JVj00O2NvbnN0IHM9e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOnJ9fTtsZXQgbixvLGcsYztmb3IoO251bGwhPT0obj10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1uKXtuPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gobil7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7bj10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PW58fCJlbmQiPT09bilicmVhaztpZigiLyIhPT1uKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgaT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09bj90aGlzLmdldFRva2VuKCk6Ii8iPT09biYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOml9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjPXMucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGcsYyk7dGhpcy5uZXh0Q2hhcigpO249dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1uJiZ0aGlzLmdldFRva2VuKCk7aVtlXT1hfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6cn1vZiBhKXtjb25zdCBhPW5ldyBUeXBlMUNoYXJTdHJpbmcsbj1hLmNvbnZlcnQodCxpLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89YS5vdXRwdXQ7biYmKG89WzE0XSk7Y29uc3QgZz17Z2x5cGhOYW1lOnIsY2hhcnN0cmluZzpvLHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfTsiLm5vdGRlZiI9PT1yP3MuY2hhcnN0cmluZ3MudW5zaGlmdChnKTpzLmNoYXJzdHJpbmdzLnB1c2goZyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihyKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1hLndpZHRoKX19cmV0dXJuIHN9ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgaT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1pO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2xldCByO2lmKC9eXGQrJC8udGVzdChhKSl7cj1bXTtjb25zdCBlPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGk9dGhpcy5nZXRUb2tlbigpO3JbZV09aTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugcj1nZXRFbmNvZGluZyhhKTtlLmJ1aWx0SW5FbmNvZGluZz1yO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHM9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChzWzNdLHNbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihzWzFdLHNbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aCxyPXQubGVuZ3RoLHM9YS1yO2xldCBuPWksbz0hMTtmb3IoO248czspe2xldCBpPTA7Zm9yKDtpPHImJmVbbitpXT09PXRbaV07KWkrKztpZihpPj1yKXtuKz1pO2Zvcig7bjxhJiZpc1doaXRlU3BhY2UoZVtuXSk7KW4rKztvPSEwO2JyZWFrfW4rK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6bn19Y2xhc3MgVHlwZTFGb250e2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYT1pLmxlbmd0aDEscj1pLmxlbmd0aDIscz10LnBlZWtCeXRlcyg2KTtjb25zdCBuPTEyOD09PXNbMF0mJjE9PT1zWzFdO2lmKG4pe3Quc2tpcCg2KTthPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBvPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3QgaT1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCByLHMsbixvO3RyeXtyPWUuZ2V0Qnl0ZXModCk7cz1yLmxlbmd0aH1jYXRjaHt9aWYocz09PXQpe249ZmluZEJsb2NrKHIsaSx0LTIqaS5sZW5ndGgpO2lmKG4uZm91bmQmJm4ubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ociksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe249ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLGksMCk7aWYoMD09PW4ubGVuZ3RoKWJyZWFrO2UucG9zKz1uLmxlbmd0aDtpZihuLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KHQsYSk7bmV3IFR5cGUxUGFyc2VyKG8uc3RyZWFtLCExLEdpKS5leHRyYWN0Rm9udEhlYWRlcihpKTtpZihuKXtzPXQuZ2V0Qnl0ZXMoNik7cj1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3QgZz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7aWYoMD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oaSksbGVuZ3RoOmkubGVuZ3RofX0odCksYz1uZXcgVHlwZTFQYXJzZXIoZy5zdHJlYW0sITAsR2kpLmV4dHJhY3RGb250UHJvZ3JhbShpKTtmb3IoY29uc3QgZSBpbiBjLnByb3BlcnRpZXMpaVtlXT1jLnByb3BlcnRpZXNbZV07Y29uc3QgbD1jLmNoYXJzdHJpbmdzLGg9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKGwpLEM9dGhpcy5nZXRUeXBlMlN1YnJzKGMuc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9bDt0aGlzLmRhdGE9dGhpcy53cmFwKGUsaCx0aGlzLmNoYXJzdHJpbmdzLEMsaSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKGMuY2hhcnN0cmluZ3MpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7aVtlLmNNYXAuY2hhckNvZGVPZihhKV09YSsxfXJldHVybiBpfWNvbnN0IGk9WyIubm90ZGVmIl07bGV0IGEscjtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWkucHVzaCh0W3JdLmdseXBoTmFtZSk7Y29uc3Qgcz1lLmJ1aWx0SW5FbmNvZGluZztpZihzKXthPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gcyl7cj1pLmluZGV4T2Yoc1tlXSk7cj49MCYmKGFbZV09cil9fXJldHVybiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSxhLGkpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTthLnNlYWMmJih0W2krMV09YS5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl0LnB1c2goaS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgaT1lLmxlbmd0aDt0PWk8MTEzMz8xMDc6aTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPHQ7cisrKWEucHVzaChbMTFdKTtmb3Iocj0wO3I8aTtyKyspYS5wdXNoKGVbcl0pO3JldHVybiBhfXdyYXAoZSx0LGksYSxyKXtjb25zdCBzPW5ldyBDRkY7cy5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtzLm5hbWVzPVtlXTtjb25zdCBuPW5ldyBDRkZUb3BEaWN0O24uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO24uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7bi5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO24uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO24uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7bi5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsci5mb250TWF0cml4KTtuLnNldEJ5TmFtZSgiRm9udEJCb3giLHIuYmJveCk7bi5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO24uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7bi5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1uO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO3Muc3RyaW5ncz1vO3MuZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBnPXQubGVuZ3RoLGM9WyIubm90ZGVmIl07bGV0IGwsaDtmb3IobD0wO2w8ZztsKyspe2NvbnN0IGU9aVtsXS5nbHlwaE5hbWU7LTE9PT1kaS5pbmRleE9mKGUpJiZvLmFkZChlKTtjLnB1c2goZSl9cy5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsYyk7Y29uc3QgQz1uZXcgQ0ZGSW5kZXg7Qy5hZGQoWzEzOSwxNF0pO2ZvcihsPTA7bDxnO2wrKylDLmFkZCh0W2xdKTtzLmNoYXJTdHJpbmdzPUM7Y29uc3QgUT1uZXcgQ0ZGUHJpdmF0ZURpY3Q7US5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCBFPVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGw9MCxoPUUubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9RVtsXTtpZighKGUgaW4gci5wcml2YXRlRGF0YSkpY29udGludWU7Y29uc3QgdD1yLnByaXZhdGVEYXRhW2VdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07US5zZXRCeU5hbWUoZSx0KX1zLnRvcERpY3QucHJpdmF0ZURpY3Q9UTtjb25zdCB1PW5ldyBDRkZJbmRleDtmb3IobD0wLGg9YS5sZW5ndGg7bDxoO2wrKyl1LmFkZChhW2xdKTtRLnN1YnJzSW5kZXg9dTtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKHMpLmNvbXBpbGUoKX19Y29uc3Qgb2E9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLGdhPTFlMyxJYT1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNvbXBvc2l0ZSIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJmYWxsYmFja05hbWUiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwic3lzdGVtRm9udEluZm8iLCJ0eXBlIiwidmVydGljYWwiXSxjYT1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09clswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxpPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGkpaVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBpIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKGkpfHwodFtpXT1lLmZhbGxiYWNrVG9Vbmljb2RlW2ldKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsaSxhLHIscyxuLG8sZyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1pO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1yO3RoaXMudm1ldHJpYz1zO3RoaXMub3BlcmF0b3JMaXN0SWQ9bjt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWd9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PU5pLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9ZS5tYXRjaChSaSksYT17aXNXaGl0ZXNwYWNlOiEhaT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhaT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWk/LlszXX07Tmkuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGkpe2VbdCsxXT1pO2VbdF09aT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBpPShlPDw4KSt0O3JldHVybiAzMjc2OCZpP2ktNjU1MzY6aX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe3JldHVybiJ0dGNmIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTppLGNvbXBvc2l0ZTphfSl7bGV0IHIscztpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PXJlYWRVaW50MzIodCwwKXx8InRydWUiPT09Ynl0ZXNUb1N0cmluZyh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlyPWE/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlyPWE/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpcj1hPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYoYSl7cj0iQ0lERm9udFR5cGUwIjtzPSJDSURGb250VHlwZTBDIn1lbHNle3I9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtzPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtyPXQ7cz1pfXJldHVybltyLHNdfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgaSBpbiB0KWVbK2ldPXRbaV19ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxpKXtjb25zdCBhPVtdO2xldCByO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7cj1nZXRVbmljb2RlRm9yR2x5cGgoZVtpXSx0KTstMSE9PXImJihhW2ldPXIpfWZvcihjb25zdCBlIGluIGkpe3I9Z2V0VW5pY29kZUZvckdseXBoKGlbZV0sdCk7LTEhPT1yJiYoYVsrZV09cil9cmV0dXJuIGF9ZnVuY3Rpb24gaXNNYWNOYW1lUmVjb3JkKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGlzV2luTmFtZVJlY29yZChlKXtyZXR1cm4gMz09PWUucGxhdGZvcm0mJjE9PT1lLmVuY29kaW5nJiYxMDMzPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxpPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBhPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYSk7d2FybihhKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsbj1bXSxvPW5ldyBTZXQ7bGV0IGc9MDtsZXQgYz1vYVtnXVswXSxsPW9hW2ddWzFdO2Zvcihjb25zdCBDIGluIGUpe2xldCBRPWVbQ107aWYoIXQoUSkpY29udGludWU7aWYoYz5sKXtnKys7aWYoZz49b2EubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31jPW9hW2ddWzBdO2w9b2FbZ11bMV19Y29uc3QgRT1jKys7MD09PVEmJihRPWkpO2xldCB1PWEuZ2V0KEMpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9dS5jb2RlUG9pbnRBdCgwKSk7aWYodSYmIShoPXUsb2FbMF1bMF08PWgmJmg8PW9hWzBdWzFdfHxvYVsxXVswXTw9aCYmaDw9b2FbMV1bMV0pJiYhby5oYXMoUSkpe3Muc2V0KHUsUSk7by5hZGQoUSl9cltFXT1RO25bQ109RX12YXIgaDtyZXR1cm57dG9Gb250Q2hhcjpuLGNoYXJDb2RlVG9HbHlwaElkOnIsdG9Vbmljb2RlRXh0cmFNYXA6cyxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmN9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsaSl7Y29uc3QgYT1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1pfHxhLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxyXW9mIHQpcj49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOnJ9KTswPT09YS5sZW5ndGgmJmEucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7YS5zb3J0KChmdW5jdGlvbiBmb250R2V0UmFuZ2VzU29ydChlLHQpe3JldHVybiBlLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZX0pKTtjb25zdCByPVtdLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxpPVthW2VdLmdseXBoSWRdOysrZTtsZXQgbj10O2Zvcig7ZTxzJiZuKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe2kucHVzaChhW2VdLmdseXBoSWQpOysrbjsrK2U7aWYoNjU1MzU9PT1uKWJyZWFrfXIucHVzaChbdCxuLGldKX1yZXR1cm4gcn0oZSx0LGkpLHI9YS5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBzLG4sbyxnLGM9IlwwXDAiK3N0cmluZzE2KHIpKyJcMANcMAEiK3N0cmluZzMyKDQrOCpyKTtmb3Iocz1hLmxlbmd0aC0xO3M+PTAmJiEoYVtzXVswXTw9NjU1MzUpOy0tcyk7Y29uc3QgbD1zKzE7YVtzXVswXTw2NTUzNSYmNjU1MzU9PT1hW3NdWzFdJiYoYVtzXVsxXT02NTUzNCk7Y29uc3QgaD1hW3NdWzFdPDY1NTM1PzE6MCxDPWwraCxRPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKEMsMik7bGV0IEUsdSxkLGYscD0iIixtPSIiLHk9IiIsdz0iIixiPSIiLEQ9MDtmb3Iocz0wLG49bDtzPG47cysrKXtFPWFbc107dT1FWzBdO2Q9RVsxXTtwKz1zdHJpbmcxNih1KTttKz1zdHJpbmcxNihkKTtmPUVbMl07bGV0IGU9ITA7Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe3krPXN0cmluZzE2KGZbMF0tdSY2NTUzNSk7dys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKEMtcykrMipEO0QrPWQtdSsxO3krPXN0cmluZzE2KDApO3crPXN0cmluZzE2KGUpO2ZvcihvPTAsZz1mLmxlbmd0aDtvPGc7KytvKWIrPXN0cmluZzE2KGZbb10pfX1pZihoPjApe20rPSLDv8O/IjtwKz0iw7/DvyI7eSs9IlwwASI7dys9IlwwXDAifWNvbnN0IFM9IlwwXDAiK3N0cmluZzE2KDIqQykrc3RyaW5nMTYoUS5yYW5nZSkrc3RyaW5nMTYoUS5lbnRyeSkrc3RyaW5nMTYoUS5yYW5nZVNoaWZ0KSttKyJcMFwwIitwK3krdytiO2xldCBrPSIiLFI9IiI7aWYocj4xKXtjKz0iXDADXDBcbiIrc3RyaW5nMzIoNCs4KnIrNCtTLmxlbmd0aCk7az0iIjtmb3Iocz0wLG49YS5sZW5ndGg7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtmPUVbMl07bGV0IGU9ZlswXTtmb3Iobz0xLGc9Zi5sZW5ndGg7bzxnOysrbylpZihmW29dIT09ZltvLTFdKzEpe2Q9RVswXStvLTE7ays9c3RyaW5nMzIodSkrc3RyaW5nMzIoZCkrc3RyaW5nMzIoZSk7dT1kKzE7ZT1mW29dfWsrPXN0cmluZzMyKHUpK3N0cmluZzMyKEVbMV0pK3N0cmluZzMyKGUpfVI9IlwwXGZcMFwwIitzdHJpbmczMihrLmxlbmd0aCsxNikrIlwwXDBcMFwwIitzdHJpbmczMihrLmxlbmd0aC8xMil9cmV0dXJuIGMrIlwwBCIrc3RyaW5nMTYoUy5sZW5ndGgrNCkrUytSK2t9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGkpe2l8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgYT0wLHI9MCxzPTAsbj0wLG89bnVsbCxnPTAsYz0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobz5lfHwhbykmJihvPWUpO2c8ZSYmKGc9ZSk7Yz1nZXRVbmljb2RlUmFuZ2VGb3IoZSxjKTtpZihjPDMyKWF8PTE8PGM7ZWxzZSBpZihjPDY0KXJ8PTE8PGMtMzI7ZWxzZSBpZihjPDk2KXN8PTE8PGMtNjQ7ZWxzZXtpZighKGM8MTIzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO258PTE8PGMtOTZ9fWc+NjU1MzUmJihnPTY1NTM1KX1lbHNle289MDtnPTI1NX1jb25zdCBsPWUuYmJveHx8WzAsMCwwLDBdLGg9aS51bml0c1BlckVtfHwoZS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uZS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzKSxDPWUuYXNjZW50U2NhbGVkPzE6aC9nYSxRPWkuYXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuYXNjZW50fHxsWzNdKSk7bGV0IEU9aS5kZXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuZGVzY2VudHx8bFsxXSkpO0U+MCYmZS5kZXNjZW50PjAmJmxbMV08MCYmKEU9LUUpO2NvbnN0IHU9aS55TWF4fHxRLGQ9LWkueU1pbnx8LUU7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIoYSkrc3RyaW5nMzIocikrc3RyaW5nMzIocykrc3RyaW5nMzIobikrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoZ3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoUSkrc3RyaW5nMTYoRSkrIlwwZCIrc3RyaW5nMTYodSkrc3RyaW5nMTYoZCkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBpPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxhPVtdO2xldCByLHMsbixvLGc7Zm9yKHI9MCxzPWkubGVuZ3RoO3I8cztyKyspe2c9dFsxXVtyXXx8aVtyXTtjb25zdCBlPVtdO2ZvcihuPTAsbz1nLmxlbmd0aDtuPG87bisrKWUucHVzaChzdHJpbmcxNihnLmNoYXJDb2RlQXQobikpKTthLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgYz1baSxhXSxsPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxDPVsiXDBcMCIsIgRcdCJdLFE9aS5sZW5ndGgqbC5sZW5ndGg7bGV0IEU9IlwwXDAiK3N0cmluZzE2KFEpK3N0cmluZzE2KDEyKlErNiksdT0wO2ZvcihyPTAscz1sLmxlbmd0aDtyPHM7cisrKXtjb25zdCBlPWNbcl07Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspe2c9ZVtuXTtFKz1sW3JdK2hbcl0rQ1tyXStzdHJpbmcxNihuKStzdHJpbmcxNihnLmxlbmd0aCkrc3RyaW5nMTYodSk7dSs9Zy5sZW5ndGh9fUUrPWkuam9pbigiIikrYS5qb2luKCIiKTtyZXR1cm4gRX1jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT0hMTt0aGlzLmxvYWRlZE5hbWU9aS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9aS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89aS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSEhKGkuZmxhZ3MmeGkpO2lmKCFhJiYhaS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGk9T2koKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoaVtlXSl7YT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1hO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoaS5mbGFncyZIaSk7dGhpcy5pc01vbm9zcGFjZT0hIShpLmZsYWdzJk1pKTtsZXR7dHlwZTpyLHN1YnR5cGU6c309aTt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWkuc3lzdGVtRm9udEluZm87Y29uc3Qgbj1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW47dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9blsxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWkuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9aS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9aS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9aS5jb21wb3NpdGU7dGhpcy5jTWFwPWkuY01hcDt0aGlzLmNhcEhlaWdodD1pLmNhcEhlaWdodC9nYTt0aGlzLmFzY2VudD1pLmFzY2VudC9nYTt0aGlzLmRlc2NlbnQ9aS5kZXNjZW50L2dhO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLmJib3g9aS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWkuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09aS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGkuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWkuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFpLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9aS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1pLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGkpO3JldHVybn1bcixzXT1nZXRGb250RmlsZVR5cGUodCxpKTtyPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3J9LyR7c30uYCk7bGV0IG87dHJ5e3N3aXRjaChyKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsaSk6bmV3IFR5cGUxRm9udChlLHQsaSk7YWRqdXN0V2lkdGhzKGkpO289dGhpcy5jb252ZXJ0KGUsYSxpKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxpKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhpKTtyPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShpKTt0aGlzLmRhdGE9bzt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLmZvbnRNYXRyaXg9aS5mb250TWF0cml4O3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1pLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxHaSkpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5JYSwuLi5jYV06SWEsaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhLHI7Zm9yKGEgb2YgdCl7cj10aGlzW2FdO3ZvaWQgMCE9PXImJihpW2FdPXIpfXJldHVybiBpfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6aX09dGhpcztsZXQgYT1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCByPUtpKCkscz1xaSgpLG49ISFyW2FdLG89ISghc1thXXx8IXJbc1thXV0pO2E9clthXXx8c1thXXx8YTtjb25zdCBnPVppKClbYV07aWYoZyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Zy5hc2NlbnQvZ2EpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Zy5kZXNjZW50L2dhKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1nLmNhcEhlaWdodC9nYSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoYSk7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGM9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFufHxjKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChufHxvKSYmIkNJREZvbnRUeXBlMiI9PT1pJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBpPWUuY2lkVG9HaWRNYXAsYT1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsV2koKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLGppKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFhpKCkpO2lmKGkpe2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTt2b2lkIDAhPT1pW3RdJiYoYVsrZV09aVt0XSl9aS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1hW2VdO3ZvaWQgMD09PWlbcl0mJihhWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2FbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoRWksRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih1aSxGaSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYobnx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWl8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZVsrdF09aX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9RGkoKSxpPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWkmJihhPWkpfWlbK3RdPWF9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoaSxXaSgpKTt0aGlzLnRvRm9udENoYXI9aX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1hLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsaSl7Y29uc3QgYT1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpWyJPUy8yIl09bnVsbDtpLmNtYXA9bnVsbDtpLmhlYWQ9bnVsbDtpLmhoZWE9bnVsbDtpLmhtdHg9bnVsbDtpLm1heHA9bnVsbDtpLm5hbWU9bnVsbDtpLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO2EuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoaVt0LnRhZ109dCkpfXJldHVybiBpfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAscz1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChhKTtjb25zdCBuPWUuZ2V0Qnl0ZXMocik7ZS5wb3M9cztpZigiaGVhZCI9PT10KXtuWzhdPW5bOV09blsxMF09blsxMV09MDtuWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmksbGVuZ3RoOnIsb2Zmc2V0OmEsZGF0YTpufX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxpLGEscixzKXtjb25zdCBuPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8aT5lLmxlbmd0aHx8aS10PD0xMilyZXR1cm4gbjtjb25zdCBvPWUuc3ViYXJyYXkodCxpKSxnPXNpZ25lZEludDE2KG9bMl0sb1szXSksYz1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGw9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYoZz5sKXt3cml0ZVNpZ25lZEludDE2KG8sMixsKTt3cml0ZVNpZ25lZEludDE2KG8sNixnKX1pZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGMpfWNvbnN0IEM9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZihDPDApe2lmKEM8LTEpcmV0dXJuIG47YS5zZXQobyxyKTtuLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gbn1sZXQgUSxFPTEwLHU9MDtmb3IoUT0wO1E8QztRKyspe3U9KG9bRV08PDh8b1tFKzFdKSsxO0UrPTJ9Y29uc3QgZD1FLGY9b1tFXTw8OHxvW0UrMV07bi5zaXplT2ZJbnN0cnVjdGlvbnM9ZjtFKz0yK2Y7Y29uc3QgcD1FO2xldCBtPTA7Zm9yKFE9MDtRPHU7USsrKXtjb25zdCBlPW9bRSsrXTsxOTImZSYmKG9bRS0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IGk9Mjs0JmU/aT0xOjMyJmUmJihpPTApO2NvbnN0IGE9dCtpO20rPWE7aWYoOCZlKXtjb25zdCBlPW9bRSsrXTswPT09ZSYmKG9bRS0xXV49OCk7USs9ZTttKz1lKmF9fWlmKDA9PT1tKXJldHVybiBuO2xldCB5PUUrbTtpZih5Pm8ubGVuZ3RoKXJldHVybiBuO2lmKCFzJiZmPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxkKSxyKTthLnNldChbMCwwXSxyK2QpO2Euc2V0KG8uc3ViYXJyYXkocCx5KSxyK2QrMik7eS09ZjtvLmxlbmd0aC15PjMmJih5PXkrMyYtNCk7bi5sZW5ndGg9eTtyZXR1cm4gbn1pZihvLmxlbmd0aC15PjMpe3k9eSszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCx5KSxyKTtuLmxlbmd0aD15O3JldHVybiBufWEuc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IGE9W1tdLFtdXSxyPVtdLHM9ZS5sZW5ndGgsbj1pK3M7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHM8NilyZXR1cm5bYSxyXTtjb25zdCBvPXQuZ2V0VWludDE2KCksZz10LmdldFVpbnQxNigpO2xldCBjLGw7Zm9yKGM9MDtjPG8mJnQucG9zKzEyPD1uO2MrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZyLnB1c2goZSl9Zm9yKGM9MCxsPXIubGVuZ3RoO2M8bDtjKyspe2NvbnN0IGU9cltjXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBzPWkrZytlLm9mZnNldDtpZihzK2UubGVuZ3RoPm4pY29udGludWU7dC5wb3M9cztjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgaT0iIjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1pfWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Escl19Y29uc3Qgcj1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGksYSxzLG4sbyxnPWUuZGF0YSxjPTAsbD0wLGg9MDtjb25zdCBDPVtdLFE9W10sRT1bXTtsZXQgdT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxkPSExLGY9MCxwPTA7Zm9yKGxldCBlPWcubGVuZ3RoO2M8ZTspe2NvbnN0IGU9Z1tjKytdO2lmKDY0PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKUMucHVzaChnW2MrK10pfWVsc2UgaWYoNjU9PT1lKXthPWdbYysrXTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHM8PDh8Z1tjKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe2E9ZS0xNzYrMTtpZihkfHxwKWMrPWE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspQy5wdXNoKGdbYysrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe2E9ZS0xODQrMTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHNpZ25lZEludDE2KHMsZ1tjKytdKSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7bD1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPUMubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9Qy5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9YztuPUMucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1DLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPUMubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufUMubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpDLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1DLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmQy5sZW5ndGg+MDspe0MucG9wKCk7dCsrfWZvcig7dD4wOyl7Qy5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGg+bCl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgbD10LmdldEludDMyKCk7Y29uc3QgaD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09bCYmMjA0ODAhPT1sKXtpZig2PT09bi5tYXhwLmxlbmd0aClsPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtsPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLGwpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpofSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgQz1oKzEsUT0hMDtpZihDPjY1NTM1KXtRPSExO0M9aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1DPj44O24ubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLEMsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsaCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBsPXM/aSsxOmksaD1vKigxK2wpLEM9bmV3IFVpbnQ4QXJyYXkoaCk7Qy5zZXQoZS5kYXRhLnN1YmFycmF5KDAsaCkpO2UuZGF0YT1DO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcoQyxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhDLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MoQyxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8bDtkKyssZis9byljKEMsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcoQyxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLEMubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsaCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz12aTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgbD1bXSxoPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7aC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpaFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtsLnB1c2goaC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2godmlbZV0pOm8ucHVzaChsW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksaCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxoJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgbD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cylsPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtsPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtsPSEwO2l8fChnPSEwKX1lbHNlIGw9ITA7bCYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IGw9ITE7Y29uc3QgaD1bXTtsZXQgQyxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKEM9MDtDPDI1NjtDKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpDLGdseXBoSWQ6ZX0pfWw9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKEM9MDtDPHIuZW50cnlDb3VudDtDKyspe2NvbnN0IGU9KGk8PDgpK0Mrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqQztRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKEM9MDtDPG87QysrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihDPXM7Qzw9ZTtDKyspaWYoNjU1MzUhPT1DKXtRPW48MD9DOmdbbitDLXNdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6QyxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihDPTA7QzxpO0MrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStDO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihDPTA7QzxlO0MrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOmx9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT1EaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOkJpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1DaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PUMtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLEMpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksR2kpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1RaSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPVFpLHI9W10scz1EaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1EaSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKGE9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBsPXQuc2VhY3M7aWYobiYmbD8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8cixhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbCl7dHw9MDtjb25zdCBpPWxbdF0scj1CaVtpWzJdXSxnPUJpW2lbM11dLGM9YS5pbmRleE9mKHIpLGg9YS5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IEM9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpDfX19aS5zZWFjTWFwPW99Y29uc3QgaD1pLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5pLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsQz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO0MuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7Qy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoaSxvKSk7Qy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sZyxjKSk7Qy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNihoKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihpLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc3RyaW5nMTYoaS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtDLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGkuYXNjZW50KStzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihpLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGkuaXRhbGljQW5nbGUpKmkueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoYykpO0MuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGk9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IGE9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxyPWM7dDxyO3QrKyl7bGV0IHI9MDtpZihlKXtjb25zdCBpPWVbdC0xXTtyPSJ3aWR0aCJpbiBpP2kud2lkdGg6MH1lbHNlIGkmJihyPU1hdGguY2VpbChpW3RdfHwwKSk7YSs9c3RyaW5nMTYocikrc3RyaW5nMTYoMCl9cmV0dXJuIGF9KCkpO0MuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihjKSk7Qy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtDLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoaSkpO3JldHVybiBDLnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoaSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1tpXTticmVha31jb25zdCBlPURpKClbaV07bGV0IGE9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXthPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGUsYSkpfSFhJiZ0aGlzLnRvVW5pY29kZSYmKGE9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7YTw9MCYmKGE9ZSk7dD10aGlzLndpZHRoc1thXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgaSxhLHIscz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBuPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7bj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49Y29udmVydENpZFN0cmluZyhlLG4pKX1hPXRoaXMud2lkdGhzW25dOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW25dO2xldCBnPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGcmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUoZykpO2xldCBjPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXtpPTMyO2lmKCIiPT09dCl7YXx8PXRoaXMuX3NwYWNlV2lkdGg7Zz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfX1pPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/U2koKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGkpfXRoaXMuaXNUeXBlM0ZvbnQmJihyPWkpO2xldCBsPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2M9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07aT10LmJhc2VGb250Q2hhckNvZGU7bD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGg9IiI7Im51bWJlciI9PXR5cGVvZiBpJiYoaTw9MTExNDExMT9oPVN0cmluZy5mcm9tQ29kZVBvaW50KGkpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7aX1gKSk7aWYodGhpcy5taXNzaW5nRmlsZSYmdGhpcy52ZXJ0aWNhbCYmMT09PWgubGVuZ3RoKXtjb25zdCBlPVlpKClbaC5jaGFyQ29kZUF0KDApXTtlJiYoaD1nPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfXM9bmV3IGZvbnRzX0dseXBoKGUsaCxnLGwsYSxvLHIsdCxjKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1zfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxhOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsaSk7Y29uc3R7Y2hhcmNvZGU6YSxsZW5ndGg6c309aTtyKz1zO2NvbnN0IG49dGhpcy5fY2hhclRvR2x5cGgoYSwxPT09cyYmMzI9PT1lLmNoYXJDb2RlQXQoci0xKSk7dC5wdXNoKG4pfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSkscj10aGlzLl9jaGFyVG9HbHlwaChhLDMyPT09YSk7dC5wdXNoKHIpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPTA7Zm9yKDthPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGEsaSk7Y29uc3Qgcj1pLmxlbmd0aDt0LnB1c2goW2EsYStyXSk7YSs9cn19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpdC5wdXNoKFtpLGkrMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10saT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KHIpO3M+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmcisrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocyk7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9aS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHMpKX10LnB1c2goaS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YShlPSExKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IGxhPTIsaGE9MyxDYT00LEJhPTUsUWE9NixFYT03O2NsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxpLGEscil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxuPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobil7Y2FzZSBsYTpjYXNlIGhhOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxpLGEscik7Y2FzZSBDYTpjYXNlIEJhOmNhc2UgUWE6Y2FzZSBFYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxpLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK24pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2dldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09bGE/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1oYSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBvPTAsZz0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW28sZ109Yyk7bGV0IGw9ITEsaD0hMTtjb25zdCBDPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKEMsMikmJihbbCxoXT1DKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1oYXx8bCYmaCkpe2NvbnN0W2UsdCxpLGEscixzXT10aGlzLmNvb3Jkc0FycixuPU1hdGguaHlwb3QoZS1hLHQtcik7aTw9cytuJiZzPD1pK24mJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PWw7dGhpcy5leHRlbmRFbmQ9aDtjb25zdCBRPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLEU9YS5jcmVhdGVGcm9tQXJyYXkoUSksdT0oZy1vKS84NDAsZD10aGlzLmNvbG9yU3RvcHM9W107aWYobz49Z3x8dTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCBmPW5ldyBGbG9hdDMyQXJyYXkobi5udW1Db21wcykscD1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCBtLHk9MDtwWzBdPW87RShwLDAsZiwwKTtsZXQgdz1uLmdldFJnYihmLDApO2NvbnN0IGI9VXRpbC5tYWtlSGV4Q29sb3Iod1swXSx3WzFdLHdbMl0pO2QucHVzaChbMCxiXSk7bGV0IEQ9MTtwWzBdPW8rdTtFKHAsMCxmLDApO2xldCBTPW4uZ2V0UmdiKGYsMCksaz1TWzBdLXdbMF0rMSxSPVNbMV0td1sxXSsxLE49U1syXS13WzJdKzEsRz1TWzBdLXdbMF0tMSxNPVNbMV0td1sxXS0xLFU9U1syXS13WzJdLTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXtwWzBdPW8rZSp1O0UocCwwLGYsMCk7bT1uLmdldFJnYihmLDApO2NvbnN0IHQ9ZS15O2s9TWF0aC5taW4oaywobVswXS13WzBdKzEpL3QpO1I9TWF0aC5taW4oUiwobVsxXS13WzFdKzEpL3QpO049TWF0aC5taW4oTiwobVsyXS13WzJdKzEpL3QpO0c9TWF0aC5tYXgoRywobVswXS13WzBdLTEpL3QpO009TWF0aC5tYXgoTSwobVsxXS13WzFdLTEpL3QpO1U9TWF0aC5tYXgoVSwobVsyXS13WzJdLTEpL3QpO2lmKCEoRzw9ayYmTTw9UiYmVTw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoU1swXSxTWzFdLFNbMl0pO2QucHVzaChbRC84NDAsZV0pO2s9bVswXS1TWzBdKzE7Uj1tWzFdLVNbMV0rMTtOPW1bMl0tU1syXSsxO0c9bVswXS1TWzBdLTE7TT1tWzFdLVNbMV0tMTtVPW1bMl0tU1syXS0xO3k9RDt3PVN9RD1lO1M9bX1jb25zdCB4PVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goWzEseF0pO2xldCBMPSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7bT1uLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO0w9VXRpbC5tYWtlSGV4Q29sb3IobVswXSxtWzFdLG1bMl0pfWlmKCFsKXtkLnVuc2hpZnQoWzAsTF0pO2RbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighaCl7ZC5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtkLnB1c2goWzEsTF0pfXRoaXMuY29sb3JTdG9wcz1kfWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgaSxhLHIscyxuO2lmKHQ9PT1sYSl7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PWhhKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnIqKGFbMV0tYVswXSkrYVswXSxpKnIqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcz0wLG49NDtzPGU7cysrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtyW3NdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcz10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHIsMCxzLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IocywwKX19bGV0IHVhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4gdWFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscj0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3IqKjMsMyphKnIqKjIsMyphKioyKnIsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG49Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cy5nZXRSYXcoIkNTIil8fHMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczppLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJhY2tncm91bmQ9cy5oYXMoIkJhY2tncm91bmQiKT9uLmdldFJnYihzLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3Qgbz1zLmdldFJhdygiRnVuY3Rpb24iKSxnPW8/YS5jcmVhdGVGcm9tQXJyYXkobyk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYz17Yml0c1BlckNvb3JkaW5hdGU6cy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpzLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOnMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpzLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOmcsY29sb3JTcGFjZTpuLG51bUNvbXBzOmc/MTpuLm51bUNvbXBzfSxsPW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYyk7bGV0IGg9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgQ2E6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKGwpO2JyZWFrO2Nhc2UgQmE6Y29uc3QgZT0wfHMuZ2V0KCJWZXJ0aWNlc1BlclJvdyIpO2lmKGU8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcobCxlKTticmVhaztjYXNlIFFhOnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhsKTtoPSEwO2JyZWFrO2Nhc2UgRWE6dGhpcy5fZGVjb2RlVHlwZTdTaGFkaW5nKGwpO2g9ITA7YnJlYWs7ZGVmYXVsdDp1bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgbWVzaCB0eXBlLiIpfWlmKGgpe3RoaXMuX3VwZGF0ZUJvdW5kcygpO2ZvcihsZXQgZT0wLHQ9dGhpcy5maWd1cmVzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuX2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpfXRoaXMuX3VwZGF0ZUJvdW5kcygpO3RoaXMuX3BhY2tEYXRhKCl9X2RlY29kZVR5cGU0U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1bXSxyPVtdO2xldCBzPTA7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBuPWUucmVhZEZsYWcoKSxvPWUucmVhZENvb3JkaW5hdGUoKSxnPWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09cyl7aWYoISgwPD1uJiZuPD0yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChuKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTpyLnB1c2goci5hdCgtMiksci5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6ci5wdXNoKHIuYXQoLTMpLHIuYXQoLTEpKTtzPTF9YS5wdXNoKG4pfXIucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKG8pO2kucHVzaChnKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2goaS5sZW5ndGgpO2kucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkociksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzg6MTI7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVsxMV09bis3O2FbNF09bisxO2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO2w9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09bDthWzExXT1uKzM7YVs0XT1jO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzExXT1uKzM7YVs0XT1hWzJdO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX1hWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSk7YVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pO2FbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pO2FbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU3IGZsYWciKTtjb25zdCBuPXQubGVuZ3RoO2ZvcihsZXQgaT0wLGE9MCE9PXM/MTI6MTY7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVs5XT1uKzEzO2FbMTBdPW4rMTQ7YVsxMV09bis3O2FbNF09bisxO2FbNV09bisxMjthWzZdPW4rMTU7YVs3XT1uKzg7YVswXT1uO2FbMV09bisxMTthWzJdPW4rMTA7YVszXT1uKzk7clsyXT1vKzE7clszXT1vKzI7clswXT1vO3JbMV09byszO2JyZWFrO2Nhc2UgMTpnPWFbMTJdO2M9YVsxM107bD1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1sO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YzthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clsyXTtjPXJbM107clsyXT1jO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAyOmc9YVsxNV07Yz1hWzExXTthWzEyXT1hWzNdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVs3XTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbM107clsyXT1yWzFdO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzFdO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YVsyXTthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1hWzNdO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O3JbMl09clswXTtyWzNdPW87clswXT1yWzFdO3JbMV09bysxfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShyKX0pfX1fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl7Y29uc3QgdD10aGlzLmZpZ3VyZXNbZV07YXNzZXJ0KCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTtjb25zdCBpPXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj10LmNvb3JkcyxzPXQuY29sb3JzLG49TWF0aC5taW4oaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxvPU1hdGgubWluKGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSksZz1NYXRoLm1heChpW3JbMF1dWzBdLGlbclszXV1bMF0saVtyWzEyXV1bMF0saVtyWzE1XV1bMF0pLGM9TWF0aC5tYXgoaVtyWzBdXVsxXSxpW3JbM11dWzFdLGlbclsxMl1dWzFdLGlbclsxNV1dWzFdKTtsZXQgbD1NYXRoLmNlaWwoKGctbikqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbMl0tdGhpcy5ib3VuZHNbMF0pKTtsPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGwpKTtsZXQgaD1NYXRoLmNlaWwoKGMtbykqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0pKTtoPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTtjb25zdCBDPWwrMSxRPW5ldyBJbnQzMkFycmF5KChoKzEpKkMpLEU9bmV3IEludDMyQXJyYXkoKGgrMSkqQyk7bGV0IHU9MDtjb25zdCBkPW5ldyBVaW50OEFycmF5KDMpLGY9bmV3IFVpbnQ4QXJyYXkoMykscD1hW3NbMF1dLG09YVtzWzFdXSx5PWFbc1syXV0sdz1hW3NbM11dLGI9Z2V0QihoKSxEPWdldEIobCk7Zm9yKGxldCBlPTA7ZTw9aDtlKyspe2RbMF09KHBbMF0qKGgtZSkreVswXSplKS9ofDA7ZFsxXT0ocFsxXSooaC1lKSt5WzFdKmUpL2h8MDtkWzJdPShwWzJdKihoLWUpK3lbMl0qZSkvaHwwO2ZbMF09KG1bMF0qKGgtZSkrd1swXSplKS9ofDA7ZlsxXT0obVsxXSooaC1lKSt3WzFdKmUpL2h8MDtmWzJdPShtWzJdKihoLWUpK3dbMl0qZSkvaHwwO2ZvcihsZXQgdD0wO3Q8PWw7dCsrLHUrKyl7aWYoISgwIT09ZSYmZSE9PWh8fDAhPT10JiZ0IT09bCkpY29udGludWU7bGV0IHM9MCxuPTAsbz0wO2ZvcihsZXQgYT0wO2E8PTM7YSsrKWZvcihsZXQgZz0wO2c8PTM7ZysrLG8rKyl7Y29uc3QgYz1iW2VdW2FdKkRbdF1bZ107cys9aVtyW29dXVswXSpjO24rPWlbcltvXV1bMV0qY31RW3VdPWkubGVuZ3RoO2kucHVzaChbcyxuXSk7RVt1XT1hLmxlbmd0aDtjb25zdCBnPW5ldyBVaW50OEFycmF5KDMpO2dbMF09KGRbMF0qKGwtdCkrZlswXSp0KS9sfDA7Z1sxXT0oZFsxXSoobC10KStmWzFdKnQpL2x8MDtnWzJdPShkWzJdKihsLXQpK2ZbMl0qdCkvbHwwO2EucHVzaChnKX19UVswXT1yWzBdO0VbMF09c1swXTtRW2xdPXJbM107RVtsXT1zWzFdO1FbQypoXT1yWzEyXTtFW0MqaF09c1syXTtRW0MqaCtsXT1yWzE1XTtFW0MqaCtsXT1zWzNdO3RoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOlEsY29sb3JzOkUsdmVydGljZXNQZXJSb3c6Q319X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0saT1lLGE9dDtmb3IobGV0IHI9MSxzPXRoaXMuY29vcmRzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPXRoaXMuY29vcmRzW3JdWzBdLG49dGhpcy5jb29yZHNbcl1bMV07ZT1lPnM/czplO3Q9dD5uP246dDtpPWk8cz9zOmk7YT1hPG4/bjphfXRoaXMuYm91bmRzPVtlLHQsaSxhXX1fcGFja0RhdGEoKXtsZXQgZSx0LGksYTtjb25zdCByPXRoaXMuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXTtzW2krK109dFswXTtzW2krK109dFsxXX10aGlzLmNvb3Jkcz1zO2NvbnN0IG49dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKm4ubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtvW2krK109dFswXTtvW2krK109dFsxXTtvW2krK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGc9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV0scj10LmNvb3JkcyxzPXQuY29sb3JzO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtyW2ldKj0yO3NbaV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09MHx8ZVszXS1lWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBNZXNoU2hhZGluZyBib3VuZHM6IFske2V9XS5gKTtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLGUsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIER1bW15U2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2dldElSKCl7cmV0dXJuWyJEdW1teSJdfX1mdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIoZSx0LGkpe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHM9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIXN8fHNbMl0tc1swXT09MHx8c1szXS1zWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgZz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsaSxlLHIscyxuLG8sZyxjXX1jb25zdCBkYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxmYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30scGE9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbWE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHlhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx3YT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sYmE9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxGYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFNhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxrYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFJhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sTmE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sR2E9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxNYT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0seGE9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sTGE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEhhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxKYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdmE9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFlhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxLYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFRhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxxYT1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sT2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFBhPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGphPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxYYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sVmE9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFphPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxfYT1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6YT17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sJGE9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEFyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxlcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHRyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxpcj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHJyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6VmEsYmFzZVdpZHRoczpLYSxiYXNlTWFwcGluZzpUYSxtZXRyaWNzOlphfTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpxYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6T2F9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmphLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpYYX07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlBhLGJhc2VXaWR0aHM6SGEsYmFzZU1hcHBpbmc6SmEsbWV0cmljczpXYX07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGF9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpZYX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpiYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6RGF9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmRhLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczpmYX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOnlhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp3YX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6cGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOm1hfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczppcixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6YXJ9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOl9hLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczp6YX07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmVyLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp0cn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6JGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOkFyfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk1hLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6VGEsbWV0cmljczpVYX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpGYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6U2F9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOk5hLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpHYX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczprYSxiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphLG1ldHJpY3M6UmF9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczppLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9pLm1hcCgoKGUsdCk9PmUqclt0XSkpOmk7bGV0IG4sbz0tMjtjb25zdCBnPVtdO2Zvcihjb25zdFtlLHRdb2YgYS5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe24ucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO249W3NbdF1dO2cucHVzaChlLG4pfXJldHVybiBnfShlKSxpPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2kuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtpLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtpLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2kuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2kuc2V0KCJXIix0KTtpLnNldCgiRmlyc3RDaGFyIix0WzBdKTtpLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2kuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gaX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChzci5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHNyLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoc3IuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChzci5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHNyLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTtpZih0aGlzLmFjY2VwdChzci5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoc3IuTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgaT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTt0aGlzLmV4cGVjdChzci5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1pO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBzcj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihzci5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihzci5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7aVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCBhPWkuam9pbigiIik7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKGEpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBpPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHtpfWApO3JldHVybiBpfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNGPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I1MoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjaygpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jUzxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGk9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFpKXtpPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsaSl9aS5hZGQodCk7cmV0dXJuIShpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2spfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNGLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI0YuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNrP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI0YuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1nZXRDYWNoZWQoZSl7bGV0IHQ7ZSBpbnN0YW5jZW9mIFJlZj90PWU6ZSBpbnN0YW5jZW9mIERpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodD1lLmRpY3Q/Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGk7ZSBpbnN0YW5jZW9mIFJlZj9pPWU6ZSBpbnN0YW5jZW9mIERpY3Q/aT1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaT1lLmRpY3Q/Lm9iaklkKTtpJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsaSx0KX1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGksYSl7bGV0IHIscyxuPTE7Zm9yKHI9MCxzPWUubGVuZ3RoO3I8cztyKyspbio9ZVtyXTtuKj10O2NvbnN0IG89bmV3IEFycmF5KG4pO2xldCBnPTAsYz0wO2NvbnN0IGw9MS8oMioqaS0xKSxoPWEuZ2V0Qnl0ZXMoKG4qaSs3KS84KTtsZXQgQz0wO2ZvcihyPTA7cjxuO3IrKyl7Zm9yKDtnPGk7KXtjPDw9ODtjfD1oW0MrK107Zys9OH1nLT1pO29bcl09KGM+PmcpKmw7YyY9KDE8PGcpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pe2NvbnN0IGE9aS5kaWN0fHxpO3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbk9iajppfSl7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBpKWEucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsaSxyKXtmb3IobGV0IHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspYVtzXShlLHQsaSxyK3MpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7ZnVuY3Rpb24gdG9NdWx0aUFycmF5KGUpe2NvbnN0IHQ9ZS5sZW5ndGgsaT1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKz0yKWlbYSsrXT1bZVtyXSxlW3IrMV1dO3JldHVybiBpfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxpLGEscil7cmV0dXJuIGErKHItYSkvKGktdCkqKGUtdCl9bGV0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG49ci5sZW5ndGgvMixvPXMubGVuZ3RoLzI7cj10b011bHRpQXJyYXkocik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgZz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlNpemUiKSksYz1hLmdldCgiQml0c1BlclNhbXBsZSIpLGw9YS5nZXQoIk9yZGVyIil8fDE7MSE9PWwmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2wpO2xldCBoPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGgpaD10b011bHRpQXJyYXkoaCk7ZWxzZXtoPVtdO2ZvcihsZXQgZT0wO2U8bjsrK2UpaC5wdXNoKFswLGdbZV0tMV0pfWxldCBDPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRGVjb2RlIikpO0M9Qz90b011bHRpQXJyYXkoQyk6cztjb25zdCBRPXRoaXMuZ2V0U2FtcGxlQXJyYXkoZyxvLGMsaSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsaSxhKXtjb25zdCBjPTE8PG4sbD1uZXcgRmxvYXQ2NEFycmF5KGMpLEU9bmV3IFVpbnQzMkFycmF5KGMpO2xldCB1LGQ7Zm9yKGQ9MDtkPGM7ZCsrKWxbZF09MTtsZXQgZj1vLHA9MTtmb3IodT0wO3U8bjsrK3Upe2NvbnN0IGk9clt1XVswXSxhPXJbdV1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3VdLGkpLGEpLGksYSxoW3VdWzBdLGhbdV1bMV0pO2NvbnN0IG49Z1t1XTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksbi0xKTtjb25zdCBvPXM8bi0xP01hdGguZmxvb3Iocyk6cy0xLEM9bysxLXMsUT1zLW8sbT1vKmYseT1tK2Y7Zm9yKGQ9MDtkPGM7ZCsrKWlmKGQmcCl7bFtkXSo9UTtFW2RdKz15fWVsc2V7bFtkXSo9QztFW2RdKz1tfWYqPW47cDw8PTF9Zm9yKGQ9MDtkPG87KytkKXtsZXQgZT0wO2Zvcih1PTA7dTxjO3UrKyllKz1RW0VbdV0rZF0qbFt1XTtlPWludGVycG9sYXRlKGUsMCwxLENbZF1bMF0sQ1tkXVsxXSk7aVthK2RdPU1hdGgubWluKE1hdGgubWF4KGUsc1tkXVswXSksc1tkXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMxIikpfHxbMV0scz1pLmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IG89bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxpLHIpe2NvbnN0IGc9MT09PXM/ZVt0XTplW3RdKipzO2ZvcihsZXQgZT0wO2U8bzsrK2UpaVtyK2VdPWFbZV0rZypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCByPVtdO2Zvcihjb25zdCBhIG9mIGkuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihhKX0pKTtjb25zdCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQm91bmRzIikpLG49dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGksZyl7Y29uc3QgYz1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsaSl7ZT5pP2U9aTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGFbMF0sYVsxXSksbD1zLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8bCYmIShjPHNbaF0pOysraCk7bGV0IEM9YVswXTtoPjAmJihDPXNbaC0xXSk7bGV0IFE9YVsxXTtoPHMubGVuZ3RoJiYoUT1zW2hdKTtjb25zdCBFPW5bMipoXSx1PW5bMipoKzFdO29bMF09Qz09PVE/RTpFKyhjLUMpKih1LUUpLyhRLUMpO3JbaF0obywwLGksZyl9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtjb25zdCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IG49bmV3IFBvc3RTY3JpcHRMZXhlcihpKSxvPW5ldyBQb3N0U2NyaXB0UGFyc2VyKG4pLnBhcnNlKCk7aWYodCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKG8scixzKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IGc9cy5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKG8pLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgQz04MTkyO2NvbnN0IFE9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxpLGEpe2xldCByLG4sbz0iIjtjb25zdCBFPVE7Zm9yKHI9MDtyPGM7cisrKXtuPWVbdCtyXTtFW3JdPW47bys9bisiXyJ9Y29uc3QgdT1oW29dO2lmKHZvaWQgMCE9PXUpe2kuc2V0KHUsYSk7cmV0dXJufWNvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShnKSxmPWwuZXhlY3V0ZShFKSxwPWYubGVuZ3RoLWc7Zm9yKHI9MDtyPGc7cisrKXtuPWZbcCtyXTtsZXQgZT1zWzIqcl07aWYobjxlKW49ZTtlbHNle2U9c1syKnIrMV07bj5lJiYobj1lKX1kW3JdPW59aWYoQz4wKXtDLS07aFtvXT1kfWkuc2V0KGQsYSl9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgaT10Lmxlbmd0aC1lLGE9ZS0xO2E+PTA7YS0tLGkrKyl0LnB1c2godFtpXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGk9dGhpcy5zdGFjayxhPWkubGVuZ3RoLWUscj1pLmxlbmd0aC0xLHM9YSsodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPWEsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9YSx0PXMtMTtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPXMsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgaT0wO2NvbnN0IGE9dGhpcy5vcGVyYXRvcnMscj1hLmxlbmd0aDtsZXQgcyxuLG87Zm9yKDtpPHI7KXtzPWFbaSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpc3dpdGNoKHMpe2Nhc2UianoiOm89dC5wb3AoKTtuPXQucG9wKCk7bnx8KGk9byk7YnJlYWs7Y2FzZSJqIjpuPXQucG9wKCk7aT1uO2JyZWFrO2Nhc2UiYWJzIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKG4pKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobitvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuJiZvKTp0LnB1c2gobiZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtuPXQucG9wKCk7bj1NYXRoLmF0YW4yKG4sbykvTWF0aC5QSSoxODA7bjwwJiYobis9MzYwKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO249dC5wb3AoKTtuPjA/dC5wdXNoKG48PG8pOnQucHVzaChuPj5vKTticmVhaztjYXNlImNlaWxpbmciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG4pKTticmVhaztjYXNlImNvcHkiOm49dC5wb3AoKTt0LmNvcHkobik7YnJlYWs7Y2FzZSJjb3MiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6bj0wfHQucG9wKCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG49PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihuKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vb3wwKTticmVhaztjYXNlImluZGV4IjpuPXQucG9wKCk7dC5pbmRleChuKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPD1vKTticmVhaztjYXNlImxuIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG4pKTticmVhaztjYXNlImxvZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKG4pKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4hPT1vKTticmVhaztjYXNlIm5lZyI6bj10LnBvcCgpO3QucHVzaCgtbik7YnJlYWs7Y2FzZSJub3QiOm49dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuP3QucHVzaCghbik6dC5wdXNoKH5uKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG58fG8pOnQucHVzaChufG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnJvbGwobixvKTticmVhaztjYXNlInJvdW5kIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobikpO2JyZWFrO2Nhc2Uic2luIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChuKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4tbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm49dC5wb3AoKTtuPW48MD9NYXRoLmNlaWwobik6TWF0aC5mbG9vcihuKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiE9PW8pOnQucHVzaChuXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSxhLHIpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWk7dGhpcy5taW49YTt0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBpPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxhPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGksYSl9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsaSl7Y29uc3QgYT1bXSxyPVtdLHM9dC5sZW5ndGg+PjEsbj1pLmxlbmd0aD4+MTtsZXQgbyxnLGMsbCxoLEMsUSxFLHU9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKWEucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe0U9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIEUpc3dpdGNoKEUpe2Nhc2UiYWRkIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2Uic3ViIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Qz1hLnBvcCgpO2EucHVzaChoLEMpO2JyZWFrO2Nhc2UicG9wIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2EucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO289Yy5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtoPWFbYS5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLW8tMV09UTthLnB1c2goUSk7ci5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJkdXAiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7Yz1hLnBvcCgpO2EucHVzaChidWlsZE1pbk9wZXJhdGlvbihjLGVbdCsxXSkpO3QrPTY7YnJlYWt9aD1hLmF0KC0xKTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtsPWEucG9wKCk7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWwudHlwZXx8ImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO2c9bC5udW1iZXI7bz1jLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7Zz0oZyVvK28pJW87aWYoMD09PWcpYnJlYWs7YS5wdXNoKC4uLmEuc3BsaWNlKGEubGVuZ3RoLW8sby1nKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIGEucHVzaChuZXcgQXN0TGl0ZXJhbChFKSl9aWYoYS5sZW5ndGghPT1uKXJldHVybiBudWxsO2NvbnN0IGQ9W107Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7ZC5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWFbZV0scj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQocik7Y29uc3Qgcz1pWzIqZV0sbj1pWzIqZSsxXSxvPVtyLnRvU3RyaW5nKCldO2lmKHM+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixzLCIsICIpO28ucHVzaCgiKSIpfWlmKG48dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixuLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7ZC5wdXNoKG8uam9pbigiIikpfXJldHVybiBkLmpvaW4oIlxuIil9fWNvbnN0IG5yPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvcj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBncj1bXSxJcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7Z3IubGVuZ3RoPXI7SXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtncltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9bnJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1vclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7SXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixsPWMsaD1sO2xldCBDLFE9bDtmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1JcltzXT9JcltzXT1ROlE9SXJbc107UT1sO2ZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiRU4iPT09Qz9JcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09QyYmIkwiIT09QyYmIkFMIiE9PUN8fChRPUMpfWZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiQUwiPT09QyYmKElyW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1JcltzXSYmIkVOIj09PUlyW3MtMV0mJiJFTiI9PT1JcltzKzFdJiYoSXJbc109IkVOIik7IkNTIiE9PUlyW3NdfHwiRU4iIT09SXJbcy0xXSYmIkFOIiE9PUlyW3MtMV18fElyW3MrMV0hPT1JcltzLTFdfHwoSXJbc109SXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1JcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09SXJbZV07LS1lKUlyW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1JcltlXTsrK2UpSXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe0M9SXJbc107IldTIiE9PUMmJiJFUyIhPT1DJiYiRVQiIT09QyYmIkNTIiE9PUN8fChJcltzXT0iT04iKX1RPWw7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdOyJFTiI9PT1DP0lyW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09QyYmIkwiIT09Q3x8KFE9Qyl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1JcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChJcixzKzEsIk9OIik7bGV0IHQ9bDtzPjAmJih0PUlyW3MtMV0pO2xldCBpPWg7ZSsxPHImJihpPUlyW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKElyLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PUlyW3NdJiYoSXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1DP2dbc10rPTE6IkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9Mik6IkwiIT09QyYmIkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoZ3IsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhncixlLGcubGVuZ3RoKX1mb3Iocz0wLG49Z3IubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9Z3Jbc107IjwiIT09ZSYmIj4iIT09ZXx8KGdyW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoZ3Iuam9pbigiIiksYSl9Y29uc3QgY3I9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sbHI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGhyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LENyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxRcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmNyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOmxyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6aHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Q3IsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOmNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6bHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmhyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpjcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOmxyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6aHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Q3IsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6bHIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpocixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmxyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmhyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpjcn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksRXI9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxsPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9bD9gICR7bH1gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PVFyLmdldChlKSxzPWx8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgbHI6cmV0dXJuIkJvbGQiO2Nhc2UgaHI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBDcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYoaC5zdHlsZT1yKTtzJiYoaC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPVFyLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksbCk7aC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9UXIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgRXIpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPVFyLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1Rci5nZXQocik7Yz0hMH1jb25zdCBsPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZDcnx8dCYmbHJ8fGkmJmhyfHxjcjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke2x9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6bCxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGg9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmaC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOkMsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsaCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7bH0ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpsLGJhc2VGb250TmFtZTphLHNyYzpoLmpvaW4oIiwiKSxzdHlsZTpDfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjUj0yMDQ4O3N0YXRpYyN5PUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNSJiZ0PD10aGlzLiNSKXJldHVybiExO2NvbnN0e01BWF9ESU06aX09dGhpcztpZihlPml8fHQ+aSlyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLiNSKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI1I9TWF0aC5tYXgodGhpcy4jUixNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jUj10aGlzLl9ndWVzc01heCh0aGlzLiNSLGksMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuI1IqKjIpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNSLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jeT10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksYT1pLmdldENvbnRleHQoIjJkIik7YS5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCByPWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107aS53aWR0aD1pLmhlaWdodD0xO3JldHVybiAwIT09cn1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsaSxhKXtmb3IoO2UraSsxPHQ7KXtjb25zdCBpPU1hdGguZmxvb3IoKGUrdCkvMikscj1hfHxpO3RoaXMuX2FyZUdvb2REaW1zKGkscik/ZT1pOnQ9aX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9PWU7aWYodCppKjQ+eXQpe2NvbnN0IGU9dGhpcy4jTigpO2lmKGUpcmV0dXJuIGV9Y29uc3QgYT10aGlzLl9lbmNvZGVCTVAoKTtsZXQgcixzO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe3I9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOlthLmJ1ZmZlcl19KTtzPXIuZGVjb2RlKCkuY2F0Y2goKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkpLmZpbmFsbHkoKCgpPT57ci5jbG9zZSgpfSkpfWVsc2Ugcz1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOm4sTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsZz1NYXRoLm1heCh0L28saS9vLE1hdGguc3FydCh0KmkvbikpLGM9TWF0aC5tYXgoZywyKSxsPU1hdGgucm91bmQoMTAqKGcrMS4yNSkpLzEwL2MsaD1NYXRoLmZsb29yKE1hdGgubG9nMihsKSksQz1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO0NbMF09YztDLnNwbGljZSgtMSwxLGwvKDE8PGgpKTtsZXQgUT10LEU9aTtjb25zdCB1PWF3YWl0IHM7bGV0IGQ9dS5pbWFnZXx8dTtmb3IoY29uc3QgZSBvZiBDKXtjb25zdCB0PVEsaT1FO1E9TWF0aC5mbG9vcihRL2UpLTE7RT1NYXRoLmZsb29yKEUvZSktMTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoUSxFKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGQsMCwwLHQsaSwwLDAsUSxFKTtkLmNsb3NlKCk7ZD1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfWUuZGF0YT1udWxsO2UuYml0bWFwPWQ7ZS53aWR0aD1RO2UuaGVpZ2h0PUU7cmV0dXJuIGV9I04oKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHtkYXRhOnQsd2lkdGg6aSxoZWlnaHQ6YSxraW5kOnJ9PWUscz1pKmEqNCxuPU1hdGguY2VpbChNYXRoLmxvZzIocy95dCkpLG89aT4+bixnPWE+Pm47bGV0IGMsbD1hO3RyeXtjPW5ldyBVaW50OEFycmF5KHMpfWNhdGNoe2xldCBlPU1hdGguZmxvb3IoTWF0aC5sb2cyKHMrMSkpO2Zvcig7Oyl0cnl7Yz1uZXcgVWludDhBcnJheSgyKiplLTEpO2JyZWFrfWNhdGNoe2UtPTF9bD1NYXRoLmZsb29yKCgyKiplLTEpLyg0KmkpKTtjb25zdCB0PWkqbCo0O3Q8Yy5sZW5ndGgmJihjPW5ldyBVaW50OEFycmF5KHQpKX1jb25zdCBoPW5ldyBVaW50MzJBcnJheShjLmJ1ZmZlciksQz1uZXcgVWludDMyQXJyYXkobypnKTtsZXQgUT0wLEU9MDtjb25zdCB1PU1hdGguY2VpbChhL2wpLGQ9YSVsPT0wP2E6YSVsO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0IGE9ZTx1LTE/bDpkOyh7c3JjUG9zOlF9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cixzcmM6dCxkZXN0Omgsd2lkdGg6aSxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6UX0pKTtmb3IobGV0IGU9MCx0PWE+Pm47ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxuKSppKTtmb3IobGV0IGU9MDtlPG87ZSsrKUNbRSsrXT10W2U8PG5dfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGcpKXtlLmRhdGE9QztlLndpZHRoPW87ZS5oZWlnaHQ9ZztlLmtpbmQ9UjtyZXR1cm4gbnVsbH1jb25zdCBmPW5ldyBPZmZzY3JlZW5DYW52YXMobyxnKTtmLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KEMuYnVmZmVyKSxvLGcpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Zi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9ZztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOml9PXRoaXMuX2ltZ0RhdGE7bGV0IGEscj10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxuPXMsbz0wO3N3aXRjaChpKXtjYXNlIFM6e2E9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGk9ZSs3Pj4zLG49aSszJi00O2lmKGkhPT1uKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IGE9MDtmb3IobGV0IHM9MCxvPXQqaTtzPG87cys9aSxhKz1uKWUuc2V0KHIuc3ViYXJyYXkocyxzK2kpLGEpO3I9ZX1icmVha31jYXNlIGs6YT0yNDtpZigzJmUpe2NvbnN0IGk9MyplLGE9aSszJi00LHM9YS1pLG49bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCppO2U8YTtlKz1pKXtjb25zdCB0PXIuc3ViYXJyYXkoZSxlK2kpO2ZvcihsZXQgZT0wO2U8aTtlKz0zKXtuW28rK109dFtlKzJdO25bbysrXT10W2UrMV07bltvKytdPXRbZV19bys9c31yPW59ZWxzZSBmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXJbZV07cltlXT1yW2UrMl07cltlKzJdPXR9YnJlYWs7Y2FzZSBSOmE9MzI7bz0zO249bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGk9bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7aS5zZXRVaW50MzIoMCwyNTUsITApO2kuc2V0VWludDMyKDQsNjUyODAsITApO2kuc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7aS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtpLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMig4LDY1MjgwLCEwKTtpLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBnPTA7Y29uc3QgYz00MCtuLmxlbmd0aCxsPTE0K2Mrcy5sZW5ndGgrci5sZW5ndGgsaD1uZXcgVWludDhBcnJheShsKSxDPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7Qy5zZXRVaW50MTYoZywxOTc3OCwhMCk7Zys9MjtDLnNldFVpbnQzMihnLGwsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMTQrYytzLmxlbmd0aCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLGMsITApO2crPTQ7Qy5zZXRJbnQzMihnLGUsITApO2crPTQ7Qy5zZXRJbnQzMihnLC10LCEwKTtnKz00O0Muc2V0VWludDE2KGcsMSwhMCk7Zys9MjtDLnNldFVpbnQxNihnLGEsITApO2crPTI7Qy5zZXRVaW50MzIoZyxvLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLHMubGVuZ3RoLzQsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O2guc2V0KG4sZyk7Zys9bi5sZW5ndGg7aC5zZXQocyxnKTtnKz1zLmxlbmd0aDtoLnNldChyLGcpO3JldHVybiBofX1jb25zdCB1cj0zMjg1Mzc3NTIwLGRyPTQyOTQ5MDE3NjAsZnI9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTp1cjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOnVyfXVwZGF0ZShlKXtsZXQgdCxpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTtpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPD0yNTUpdFtpKytdPXI7ZWxzZXt0W2krK109cj4+Pjg7dFtpKytdPTI1NSZyfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2k9dC5ieXRlTGVuZ3RofWNvbnN0IGE9aT4+MixyPWktNCphLHM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsYSk7bGV0IG49MCxvPTAsZz10aGlzLmgxLGM9dGhpcy5oMjtjb25zdCBsPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsQz0xMTYwMSxRPTEzNzE1O2ZvcihsZXQgZT0wO2U8YTtlKyspaWYoMSZlKXtuPXNbZV07bj1uKmwmZHJ8bipDJmZyO249bjw8MTV8bj4+PjE3O249bipoJmRyfG4qUSZmcjtnXj1uO2c9Zzw8MTN8Zz4+PjE5O2c9NSpnKzM4NjQyOTIxOTZ9ZWxzZXtvPXNbZV07bz1vKmwmZHJ8bypDJmZyO289bzw8MTV8bz4+PjE3O289bypoJmRyfG8qUSZmcjtjXj1vO2M9Yzw8MTN8Yz4+PjE5O2M9NSpjKzM4NjQyOTIxOTZ9bj0wO3N3aXRjaChyKXtjYXNlIDM6bl49dFs0KmErMl08PDE2O2Nhc2UgMjpuXj10WzQqYSsxXTw8ODtjYXNlIDE6bl49dFs0KmFdO249bipsJmRyfG4qQyZmcjtuPW48PDE1fG4+Pj4xNztuPW4qaCZkcnxuKlEmZnI7MSZhP2dePW46Y149bn10aGlzLmgxPWc7dGhpcy5oMj1jfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJmRyfDM2MDQ1KmUmZnI7dD00MjgzNTQzNTExKnQmZHJ8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmZHIpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZkcnw2MDQ5OSplJmZyO3Q9MzMwMTg4MjM2Nip0JmRyfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJmRyKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxpLGEscil7bGV0IHM9ZTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoLTE7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO3M9c1tpXXx8PVtdfXNbdC5hdCgtMSldPXtjaGVja0ZuOmksaXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnJ9fWNvbnN0IHByPVtdO2FkZFN0YXRlKHByLFt4QSxIQSxBdCxMQV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1BdDtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPXItMSxnPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGM9MDtjb25zdCBsPVtdO2xldCBoPTAsQz0xLFE9MTtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbisoZTw8MildLGk9YVtvKyhlPDwyKV1bMF07aWYoQytpLndpZHRoPjFlMyl7Yz1NYXRoLm1heChjLEMpO1ErPWgrMjtDPTA7aD0wfWwucHVzaCh7dHJhbnNmb3JtOnQseDpDLHk6USx3Omkud2lkdGgsaDppLmhlaWdodH0pO0MrPWkud2lkdGgrMjtoPU1hdGgubWF4KGgsaS5oZWlnaHQpfWNvbnN0IEU9TWF0aC5tYXgoYyxDKSsxLHU9UStoKzEsZD1uZXcgVWludDhBcnJheShFKnUqNCksZj1FPDwyO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxpPWxbZV0udzw8MjtsZXQgcj0wLHM9bFtlXS54K2xbZV0ueSpFPDwyO2Quc2V0KHQuc3ViYXJyYXkoMCxpKSxzLWYpO2ZvcihsZXQgYT0wLG49bFtlXS5oO2E8bjthKyspe2Quc2V0KHQuc3ViYXJyYXkocixyK2kpLHMpO3IrPWk7cys9Zn1kLnNldCh0LnN1YmFycmF5KHItaSxyKSxzKTtmb3IoO3M+PTA7KXt0W3MtNF09dFtzXTt0W3MtM109dFtzKzFdO3Rbcy0yXT10W3MrMl07dFtzLTFdPXRbcyszXTt0W3MraV09dFtzK2ktNF07dFtzK2krMV09dFtzK2ktM107dFtzK2krMl09dFtzK2ktMl07dFtzK2krM109dFtzK2ktMV07cy09Zn19Y29uc3QgcD17d2lkdGg6RSxoZWlnaHQ6dX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShkLmJ1ZmZlciksRSx1KSwwLDApO3AuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7cC5kYXRhPW51bGx9ZWxzZXtwLmtpbmQ9UjtwLmRhdGE9ZH1pLnNwbGljZShzLDQqZyxldCk7YS5zcGxpY2Uocyw0KmcsW3AsbF0pO3JldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLF9lLExBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1fZTtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xO2xldCBnPU1hdGguZmxvb3IoKHQtcykvNCk7aWYoZzwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBjLGwsaD0hMTtjb25zdCBDPWFbb11bMF0sUT1hW25dWzBdLEU9YVtuXVsxXSx1PWFbbl1bMl0sZD1hW25dWzNdO2lmKEU9PT11KXtoPSEwO2M9bis0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGc7dCsrLGMrPTQsZSs9NCl7bD1hW2NdO2lmKGFbZV1bMF0hPT1DfHxsWzBdIT09UXx8bFsxXSE9PUV8fGxbMl0hPT11fHxsWzNdIT09ZCl7dDwxMD9oPSExOmc9dDticmVha319fWlmKGgpe2c9TWF0aC5taW4oZywxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmcpO2M9bjtmb3IobGV0IHQ9MDt0PGc7dCsrLGMrPTQpe2w9YVtjXTtlW3Q8PDFdPWxbNF07ZVsxKyh0PDwxKV09bFs1XX1pLnNwbGljZShzLDQqZyxpdCk7YS5zcGxpY2Uocyw0KmcsW0MsUSxFLHUsZCxlXSl9ZWxzZXtnPU1hdGgubWluKGcsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8Zzt0Kyspe2w9YVtuKyh0PDwyKV07Y29uc3QgaT1hW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6aS5kYXRhLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGludGVycG9sYXRlOmkuaW50ZXJwb2xhdGUsY291bnQ6aS5jb3VudCx0cmFuc2Zvcm06bH0pfWkuc3BsaWNlKHMsNCpnLHplKTthLnNwbGljZShzLDQqZyxbZV0pfXJldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLCRlLExBXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxpPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbaV1bMV0mJjA9PT10W2ldWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6aWYoaVt0XSE9PUhBKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0yLHM9YVtyXVswXSxuPWFbcl1bM107cmV0dXJuIGFbdF1bMF09PT1zJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1uO2Nhc2UgMjppZihpW3RdIT09JGUpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1hW3ItMV1bMF0sZz1hW25dWzBdLGM9YVtuXVszXSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMWUzKTtpZihsPDMpcmV0dXJuIHQtKHQtcyklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtsZXQgQz1uO2ZvcihsZXQgZT0wO2U8bDtlKyssQys9NCl7Y29uc3QgdD1hW0NdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IFE9W28sZyxjLGhdO2kuc3BsaWNlKHMsNCpsLHR0KTthLnNwbGljZShzLDQqbCxRKTtyZXR1cm4gcysxfSkpO2FkZFN0YXRlKHByLFt0ZSxvZSxoZSxCZSxpZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PXRlO2Nhc2UgMTpyZXR1cm4gaVt0XT09PW9lO2Nhc2UgMjpyZXR1cm4gaVt0XT09PWhlO2Nhc2UgMzppZihpW3RdIT09QmUpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTMscz1hW3JdWzBdLG49YVtyXVsxXTtyZXR1cm4gYVt0XVswXT09PXMmJmFbdF1bMV09PT1uO2Nhc2UgNDpyZXR1cm4gaVt0XT09PWllfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTQsbj1yLTMsbz1yLTIsZz1yLTEsYz1yLGw9YVtuXVswXSxoPWFbbl1bMV07bGV0IEM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS81KSwxZTMpO2lmKEM8MylyZXR1cm4gdC0odC1zKSU1O2xldCBRPXM7aWYocz49NCYmaVtzLTRdPT09aVtuXSYmaVtzLTNdPT09aVtvXSYmaVtzLTJdPT09aVtnXSYmaVtzLTFdPT09aVtjXSYmYVtzLTRdWzBdPT09bCYmYVtzLTRdWzFdPT09aCl7QysrO1EtPTV9bGV0IEU9USs0O2ZvcihsZXQgZT0xO2U8QztlKyspe2kuc3BsaWNlKEUsMyk7YS5zcGxpY2UoRSwzKTtFKz0yfXJldHVybiBFKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsaT1lLmxlbmd0aCxhPXRoaXMuc3RhdGUscj10aGlzLm1hdGNoO2lmKCFhJiYhciYmdCsxPT09aSYmIXByW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9aTtyZXR1cm59Y29uc3Qgcz10aGlzLmNvbnRleHQ7Zm9yKDt0PGk7KXtpZihyKXtpZigoMCxyLml0ZXJhdGVGbikocyx0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsci5wcm9jZXNzRm4pKHMsdCsxKTtpPWUubGVuZ3RoO3I9bnVsbDthPW51bGw7aWYodD49aSlicmVha31hPShhfHxwcilbZVt0XV07aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe3MuaUN1cnI9dDt0Kys7aWYoIWEuY2hlY2tGbnx8KDAsYS5jaGVja0ZuKShzKSl7cj1hO2E9bnVsbH1lbHNlIGE9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPWE7dGhpcy5tYXRjaD1yO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJnU/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5vcHRpbWl6ZXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PUxBfHxlPT09aWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxpLGE9ITEpe2lmKGEpe3RoaXMuYWRkT3AoeEEpO3RoaXMuYWRkT3AoVUEsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09aSYmdGhpcy5hZGRPcChLZSxbIk9DIixpXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsW10pO2EmJnRoaXMuYWRkT3AoTEEpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoREEsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTppLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcj0wO3I8YTtyKyspc3dpdGNoKHRbcl0pe2Nhc2UgQXQ6Y2FzZSBldDpjYXNlIF9lOmNvbnN0IHQ9aVtyXVswXTshdC5jYWNoZWQmJnQuZGF0YT8uYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJmUucHVzaCh0LmRhdGEuYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBpPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1pO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOml9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWZ1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxpLGEpeyhlPXQrZSppKTwwP2U9MDplPmEmJihlPWEpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1yKnM7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgZz1pL3IsYz1hL3M7bGV0IGwsaCxDLFEsRT0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KHIpLGQ9aTtmb3IobD0wO2w8cjtsKyspdVtsXT1NYXRoLmZsb29yKGwqZyk7Zm9yKGw9MDtsPHM7bCsrKXtDPU1hdGguZmxvb3IobCpjKSpkO2ZvcihoPTA7aDxyO2grKyl7UT1DK3VbaF07b1tFKytdPWVbUV19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHNtYXNrOnI9bnVsbCxtYXNrOnM9bnVsbCxpc01hc2s6bj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSl7dGhpcy5pbWFnZT1pO2NvbnN0IGM9aS5kaWN0LGw9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaDtpZihsIGluc3RhbmNlb2YgTmFtZSloPWwubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGxbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYoaD10Lm5hbWUpfXN3aXRjaChoKXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxjb21wb25lbnRzQ291bnQ6aS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmkuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoaS5zdHJlYW0pKTtpLnN0cmVhbS5yZXNldCgpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmhhcygiU01hc2tJbkRhdGEiKX07YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6aS5iaXRzUGVyQ29tcG9uZW50PTE7aS5udW1Db21wcz0xfWxldCBDPWMuZ2V0KCJXIiwiV2lkdGgiKSxRPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihpLndpZHRoKSYmaS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGkuaGVpZ2h0KSYmaS5oZWlnaHQ+MCYmKGkud2lkdGghPT1DfHxpLmhlaWdodCE9PVEpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO0M9aS53aWR0aDtRPWkuaGVpZ2h0fWlmKEM8MXx8UTwxKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtDfSBvciBoZWlnaHQ6ICR7UX1gKTt0aGlzLndpZHRoPUM7dGhpcy5oZWlnaHQ9UTt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IEU9aS5iaXRzUGVyQ29tcG9uZW50O2lmKCFFKXtFPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIUUpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO0U9MX19dGhpcy5icGM9RTtpZighdGhpcy5pbWFnZU1hc2spe2xldCByPWMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpO2NvbnN0IHM9ISFyO2lmKHMpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnI9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cj1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnI9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLEUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PEUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcj10aGlzLmRlY29kZVtpXSxzPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8ocy1yKS9lOnMtcjt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9yOmUqcn19aWYocil0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtzLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9c31zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxsPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmwmJihsIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShsKT9nPWw6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnN9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8ciYmIShuPT09bykpaWYocil7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihyKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6cyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnI9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpSLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cyxiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cixpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnN9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sclt0XSxzKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1pKmEqcjtsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgZz1pKnIsYz0oMTw8dCktMTtsZXQgbCxoLEM9MDtpZigxPT09dCl7bGV0IHQsaSxyO2ZvcihsZXQgcz0wO3M8YTtzKyspe2k9QysoLTgmZyk7cj1DK2c7Zm9yKDtDPGk7KXtoPWVbbysrXTtuW0NdPWg+PjcmMTtuW0MrMV09aD4+NiYxO25bQysyXT1oPj41JjE7bltDKzNdPWg+PjQmMTtuW0MrNF09aD4+MyYxO25bQys1XT1oPj4yJjE7bltDKzZdPWg+PjEmMTtuW0MrN109MSZoO0MrPTh9aWYoQzxyKXtoPWVbbysrXTt0PTEyODtmb3IoO0M8cjspe25bQysrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihDPTAsbD1zO0M8bDsrK0Mpe2lmKEMlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcj1oPj5hO3I8MD9yPTA6cj5jJiYocj1jKTtuW0NdPXI7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1hc3luYyBmaWxsT3BhY2l0eShlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsbCxoLEM7aWYocyl7Zz1zLndpZHRoO2M9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKGw9MCxoPWcqYztsPGg7KytsKW9bbF09MjU1LW9bbF07Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihsPTAsaD10Kmk7bDxoOysrbCl7bGV0IHQ9MDtjb25zdCBpPWwqZTtmb3IoQz0wO0M8ZTsrK0Mpe2NvbnN0IGU9cltpK0NdLGE9MipDO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW2xdPXR9fX1pZihvKWZvcihsPTAsQz0zLGg9dCphO2w8aDsrK2wsQys9NCllW0NdPW9bbF07ZWxzZSBmb3IobD0wLEM9MyxoPXQqYTtsPGg7KytsLEMrPTQpZVtDXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxzPXJbMF0sbj1yWzFdLG89clsyXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1zKSphK3M7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnMqZys3Pj4zLGw9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1SO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKm4qNCx7fSk7cmV0dXJuIHQ/bD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UociwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoUixpLGEsZSk6cn1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9UzoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9ayk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcz1hd2FpdCB0aGlzLiNHKG4sbyk7aWYocylyZXR1cm4gcztjb25zdCBnPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmcsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8sZyk7ci5raW5kPWU7ci5kYXRhPWc7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1TLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhbCl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuI0coaSxhKTtpZih0KXJldHVybiB0O2NvbnN0IHI9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoUixpLGEscil9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6ci5raW5kPWs7ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6ITB9KTtyZXR1cm4gbD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn19fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qYyx7aW50ZXJuYWw6ITB9KSxDPTB8aC5sZW5ndGgvYyphL28sUT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IEUsdSxkLGYscCxtO2lmKHQmJiFsKXtkPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKTtmPWQuZ2V0Q29udGV4dCgiMmQiKTtwPWYuY3JlYXRlSW1hZ2VEYXRhKGksYSk7bT1wLmRhdGF9ci5raW5kPVI7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhbHx8KG09bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSo0KSk7RT0xO3U9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShtLGksYSxDLFEpfWVsc2V7aWYoIXR8fGwpe3Iua2luZD1rO209bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSozKTtFPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkobS5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO0U9MX11PSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKFEpO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKG0sbixvLGksYSxDLGcsUSxFKTt1JiZ0aGlzLnVuZG9QcmVibGVuZChtLGksQyk7aWYodCYmIWwpe2YucHV0SW1hZ2VEYXRhKHAsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmksaGVpZ2h0OmEsYml0bWFwOmQudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19ci5kYXRhPW07cmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGk9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5icGMscz1pKnQqcis3Pj4zLG49YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGEqcyx7aW50ZXJuYWw6ITB9KSxvPXRoaXMuZ2V0Q29tcG9uZW50cyhuKTtsZXQgZyxjO2lmKDE9PT1yKXtjPWkqYTtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihnPTA7ZzxjOysrZyllW2ddPW9bZ10tMSYyNTU7ZWxzZSBmb3IoZz0wO2c8YzsrK2cpZVtnXT0yNTUmLW9bZ107cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG8pO2M9aSphO2NvbnN0IGw9MjU1LygoMTw8ciktMSk7Zm9yKGc9MDtnPGM7KytnKWVbZ109bCpvW2ddfWNyZWF0ZUJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxzPXIuZ2V0Q29udGV4dCgiMmQiKTtsZXQgbjtpZihlPT09UiluPW5ldyBJbWFnZURhdGEoYSx0LGkpO2Vsc2V7bj1zLmNyZWF0ZUltYWdlRGF0YSh0LGkpO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShuLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXMucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksYml0bWFwOnIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjRyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRUcmFuc2ZlcmFibGVJbWFnZSgpO3JldHVybiBpP3tkYXRhOm51bGwsd2lkdGg6ZSxoZWlnaHQ6dCxiaXRtYXA6aSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfTpudWxsfWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKHN8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIG47YXNzZXJ0KG4gaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobil9fWNvbnN0IG1yPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSx5cj0xLHdyPTIsYnI9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGUsdCl7dC5vYmpJZCYmZS5hZGREZXBlbmRlbmN5KHQub2JqSWQpO2UuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQsdC5oYXNNYXNrKTt0LmZuPT09X2UmJnQuYXJnc1swXT8uY291bnQ+MCYmdC5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnIsYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1zO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8bXI7dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyk7SnBlZ1N0cmVhbS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGk9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCBhPVtlXSxyPXRoaXMueHJlZjtmb3IoO2EubGVuZ3RoOyl7Y29uc3QgZT1hLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcz1lLmdldCgiWE9iamVjdCIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBzLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihpLmhhcyhlKSljb250aW51ZTt0cnl7ZT1yLmZldGNoKGUpfWNhdGNoKHQpe2kucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmaS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFpLmhhcyh0Lm9iaklkKSkpe2EucHVzaCh0KTt0Lm9iaklkJiZpLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGkpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMjTShlKXtjb25zdCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHQuYXJyYXlCdWZmZXIoKSl9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2k9e2NNYXBEYXRhOmF3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH19ZWxzZSBpPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsaSk7cmV0dXJuIGl9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBpPVRpKClbZV07bGV0IGE7dHJ5e2E9bnVsbCE9PXRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsP2F3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHtpfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoU3RhbmRhcmRGb250RGF0YSIse2ZpbGVuYW1lOml9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLGEpO3JldHVybiBuZXcgU3RyZWFtKGEpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10LmRpY3QsZz1sb29rdXBNYXRyaXgoby5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbCxoO28uaGFzKCJPQyIpJiYobD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKG8uZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1sJiZhLmFkZE9wKEtlLFsiT0MiLGxdKTtjb25zdCBDPW8uZ2V0KCJHcm91cCIpO2lmKEMpe2g9e21hdHJpeDpnLGJib3g6YyxzbWFzazppLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShDLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7aC5pc29sYXRlZD1DLmdldCgiSSIpfHwhMTtoLmtub2Nrb3V0PUMuZ2V0KCJLIil8fCExO2lmKEMuaGFzKCJDUyIpKXtjb25zdCBpPUMuZ2V0UmF3KCJDUyIpLGE9Q29sb3JTcGFjZS5nZXRDYWNoZWQoaSx0aGlzLnhyZWYsbik7dD1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6aSxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl9fWlmKGk/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtpLmJhY2tkcm9wPXQuZ2V0UmdiKGkuYmFja2Ryb3AsMCl9YS5hZGRPcChqZSxbaF0pfWNvbnN0IFE9Qz9bZyxudWxsXTpbZyxjXTthLmFkZE9wKFBlLFEpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOm8uZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6c30pO2EuYWRkT3AoV2UsW10pO0MmJmEuYWRkT3AoWGUsW2hdKTt2b2lkIDAhPT1sJiZhLmFkZE9wKFRlLFtdKX1fc2VuZEltZ0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8aT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLGEpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sYSl9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTppPSExLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OnIsbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IG89dC5kaWN0LGc9by5vYmpJZCxjPW8uZ2V0KCJXIiwiV2lkdGgiKSxsPW8uZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWN8fCJudW1iZXIiIT10eXBlb2YgY3x8IWx8fCJudW1iZXIiIT10eXBlb2YgbCl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGg9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWgmJmMqbD5oKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IEM7by5oYXMoIk9DIikmJihDPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO2xldCBRLEU7aWYoby5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPW8uZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxpPWMrNz4+MyxuPXQuZ2V0Qnl0ZXMoaSpsKSxoPW8uZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe1E9UERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6bix3aWR0aDpjLGhlaWdodDpsLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpoPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7US5jYWNoZWQ9ISFyO0U9W1FdO2EuYWRkSW1hZ2VPcHMoX2UsRSxDKTtpZihyKXtjb25zdCBlPXtmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59UT1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OmwsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoUS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXthLmFkZEltYWdlT3BzKGF0LFtdLEMpO2lmKHIpe2NvbnN0IGU9e2ZuOmF0LGFyZ3M6W10sb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDthLmFkZERlcGVuZGVuY3kodSk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKHUsUSk7RT1be2RhdGE6dSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodCxpbnRlcnBvbGF0ZTpRLmludGVycG9sYXRlLGNvdW50OjF9XTthLmFkZEltYWdlT3BzKF9lLEUsQyk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1vLmhhcygiU01hc2siKXx8by5oYXMoIk1hc2siKTtpZihpJiZjK2w8MjAwJiYhdSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhBdCxbUV0sQyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgZD1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGY9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KWQ9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtkfWA7ZWxzZSBpZihyJiZnKXtmPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihmKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7ZD1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2R9YH19YS5hZGREZXBlbmRlbmN5KGQpO0U9W2QsYyxsXTthLmFkZEltYWdlT3BzKCRlLEUsQyx1KTtpZihmKXtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKGcpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDpkLGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6QyxoYXNNYXNrOnUsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKGQsbnVsbCxmKTtyZXR1cm59aWYoYypsPjI1ZTR8fHUpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbZCwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOmQsZm46JGUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpDLGhhc01hc2s6dSxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoZCxRLGYpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHtkfSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShkLG51bGwsZil9KSk7aWYocil7Y29uc3QgZT17b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1fTtzLnNldChyLGcsZSk7aWYoZyl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGcsZSk7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1LGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxpLGEscixzKXtjb25zdCBuPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGc9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihnKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGcpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtpWzBdPWEvMjU1O2UoaSwwLGksMCk7dFthXT0yNTUqaVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbixvLGksYSxyLnN0YXRlLmNsb25lKCkscyl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGk9W107bGV0IGE9MCxyPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTthKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2kucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbj1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cyhvLDAsbywwKTtuW2VdPTI1NSpvWzBdfDB9aS5wdXNoKG4pO3IrK31yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09cj9udWxsOml9aGFuZGxlVGlsaW5nVHlwZShlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9bmV3IE9wZXJhdG9yTGlzdCxjPURpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbci5nZXQoIlJlc291cmNlcyIpLGldfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06YSx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0Omd9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGk9Zy5nZXRJUigpLGE9Z2V0VGlsaW5nUGF0dGVybklSKGkscix0KTtzLmFkZERlcGVuZGVuY2llcyhnLmRlcGVuZGVuY2llcyk7cy5hZGRPcChlLGEpO3Iub2JqSWQmJm8uc2V0KG51bGwsci5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6aSxkaWN0OnJ9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIiR7ZX0iLmApfX0pKX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxpLGEscixzLG49bnVsbCxvPW51bGwpe2NvbnN0IGc9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsO2xldCBjPWF3YWl0IHRoaXMubG9hZEZvbnQoZyxpLGUsbixvKTtpZihjLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGMubG9hZFR5cGUzRGF0YSh0aGlzLGUscik7YS5hZGREZXBlbmRlbmNpZXMoYy50eXBlM0RlcGVuZGVuY2llcyl9Y2F0Y2goZSl7Yz1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKSxkaWN0OmMuZm9udCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pfXMuZm9udD1jLmZvbnQ7Yy5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGMubG9hZGVkTmFtZX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgaT10LmZvbnQsYT1pLmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZEKXx8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxpLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoaSxhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBhfWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OmEsdGFzazpyLHN0YXRlTWFuYWdlcjpzLGxvY2FsR1N0YXRlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSl7Y29uc3QgZz10Lm9iaklkO2xldCBjPSEwO2NvbnN0IGw9W107bGV0IGg9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IG49dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpsLnB1c2goW2Esbl0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsblswXSxpLHIscy5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO2wucHVzaChbYSxbZSxuWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6bC5wdXNoKFthLG5vcm1hbGl6ZUJsZW5kTW9kZShuKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShuLCJOb25lIikpe2wucHVzaChbYSwhMV0pO2JyZWFrfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjPSExO2g9aC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhuLGUsaSxyLHMsbykpKTtsLnB1c2goW2EsITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihuKTtsLnB1c2goW2EsdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSk7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKX19YXdhaXQgaDtsLmxlbmd0aD4wJiZpLmFkZE9wKFVBLFtsXSk7YyYmbi5zZXQoYSxnLGwpfWxvYWRGb250KGUsdCxpLGE9bnVsbCxyPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWkuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpsfT1nLGg9cyBpbnN0YW5jZW9mIFJlZjtsZXQgQztpZihsJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW2xdKXtjb25zdCB0PWVbbF0uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVtsXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtsXS5hbGlhc1JlZj1zKTtDPWVbbF0uZm9udElEfWVsc2UgQz10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoQz8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHMsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke0N9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtDfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCByPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHI8MHx8ZS5mbkFycmF5W3JdIT09cnQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoeEEsbnVsbCl9bGV0IHI7c3dpdGNoKHQpe2Nhc2UgT0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cj1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBKQTpjYXNlIHZBOnI9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cj1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AocnQsW1t0XSxpLHJdKTthJiZlLmFkZE9wKExBLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtyXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHM9YVsyXTtzd2l0Y2godCl7Y2FzZSBPQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtzWzBdPU1hdGgubWluKHNbMF0saVswXSxlKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSx0KTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSxlKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSx0KTticmVhaztjYXNlIEpBOmNhc2UgdkE6c1swXT1NYXRoLm1pbihzWzBdLGlbMF0pO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdKTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtzLCJQYXR0ZXJuIixyXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3MsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHJdKTtyZXR1cm4gc31oYW5kbGVDb2xvck4oZSx0LGksYSxyLHMsbixvLGcsYyl7Y29uc3QgbD1pLnBvcCgpO2lmKGwgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXIuZ2V0UmF3KGwubmFtZSksQz1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKEMpdHJ5e2NvbnN0IHI9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHM9Z2V0VGlsaW5nUGF0dGVybklSKEMub3BlcmF0b3JMaXN0SVIsQy5kaWN0LHIpO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcj1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxsPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGw9PT15cil7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxRLHIsZSxuLGcpfWlmKGw9PT13cil7Y29uc3QgaT1yLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1sb29rdXBNYXRyaXgoci5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsYSxpXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtsfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7bH1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsaSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoYTwyKSYmciBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChyLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6aS5wdXNoKHIubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7ci5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCByPTE7cjxhO3IrKyl7Y29uc3QgYT1lW3JdLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT1bXTtpLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihzLHQsZSl9ZWxzZSBhIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGk7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2k9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtpPWV9Y29uc3QgYT1pLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOmkub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9aS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9aS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBpIG9mIHQpZS5wdXNoKGkudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6YSxpZHM6ZSxwb2xpY3k6aS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDpzPW51bGx9KXtpfHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBuPXRoaXMsbz10aGlzLnhyZWY7bGV0IGc9ITE7Y29uc3QgYz1uZXcgTG9jYWxJbWFnZUNhY2hlLGw9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGg9bmV3IExvY2FsR1N0YXRlQ2FjaGUsQz1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsUT1uZXcgTWFwLEU9aS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx1PWkuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksZD1uZXcgU3RhdGVNYW5hZ2VyKHIpLGY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG8sZCkscD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1mLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylhLmFkZE9wKExBLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxhLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxyKX1jYXRjaChlKXtyKGUpfX0pLHIpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtwLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgeSx3LGIsRCxTLGs7Zm9yKDshKHk9cC5jaGVjaygpKTspe20uYXJncz1udWxsO2lmKCFmLnJlYWQobSkpYnJlYWs7bGV0IGU9bS5hcmdzLHI9bS5mbjtzd2l0Y2goMHxyKXtjYXNlIEhlOms9ZVswXWluc3RhbmNlb2YgTmFtZTtTPWVbMF0ubmFtZTtpZihrKXtjb25zdCB0PWMuZ2V0QnlOYW1lKFMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBzPUUuZ2V0UmF3KFMpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9Yy5nZXRCeVJlZihzKXx8bi5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2UoKTtyZXR1cm59Y29uc3QgaT1uLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShzLG4ucGFnZUluZGV4KTtpZihpKXthLmFkZERlcGVuZGVuY3koaS5vYmpJZCk7YS5hZGRJbWFnZU9wcyhpLmZuLGkuYXJncyxpLm9wdGlvbmFsQ29udGVudCxpLmhhc01hc2spO2UoKTtyZXR1cm59cz1vLmZldGNoKHMpfWlmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPXMuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpaWYoIkltYWdlIiE9PWcubmFtZSl7aWYoIlBTIiE9PWcubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtnLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOnMsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbihlLHIpO2Vsc2V7ZC5zYXZlKCk7bi5idWlsZEZvcm1YT2JqZWN0KGkscyxudWxsLGEsdCxkLnN0YXRlLmNsb25lKCksbCkudGhlbigoZnVuY3Rpb24oKXtkLnJlc3RvcmUoKTtlKCl9KSxyKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBvZTpjb25zdCBmPWVbMV07bmV4dChuLmhhbmRsZVNldEZvbnQoaSxlLG51bGwsYSx0LGQuc3RhdGUscykudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2EuYWRkT3Aob2UsW2UsZl0pfSkpKTtyZXR1cm47Y2FzZSB0ZTpnPSEwO2JyZWFrO2Nhc2UgaWU6Zz0hMTticmVhaztjYXNlIExlOmNvbnN0IHA9ZVswXS5jYWNoZUtleTtpZihwKXtjb25zdCB0PWMuZ2V0QnlOYW1lKHApO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cCxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkpO3JldHVybjtjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBRZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPVtdLHk9ZC5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9tLnB1c2goLi4ubi5oYW5kbGVUZXh0KHQseSkpOiJudW1iZXIiPT10eXBlb2YgdCYmbS5wdXNoKHQpO2VbMF09bTtyPUJlO2JyZWFrO2Nhc2UgRWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgdWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7YS5hZGRPcChyZSxbZS5zaGlmdCgpXSk7YS5hZGRPcChhZSxbZS5zaGlmdCgpXSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgZ2U6ZC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbWU6e2NvbnN0IHQ9Q29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxvLGwpO2lmKHQpe2Quc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKChmdW5jdGlvbihlKXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sbCk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbigoZnVuY3Rpb24oZSl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBiZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9UmU7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFNlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgRmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIEdlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgTmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpEPWQuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1SZTticmVha31lPVtdO3I9bnQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsRGUsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2Ugd2U6RD1kLnN0YXRlLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVha31lPVtdO3I9c3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsd2UsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgTWU6bGV0IFI7dHJ5e2NvbnN0IHQ9aS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtSPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBOPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlIscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFOKWNvbnRpbnVlO2U9W05dO3I9TWU7YnJlYWs7Y2FzZSBVQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1oLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFVBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIEpBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIEtBOmNhc2UgVEE6Y2FzZSBxQTpjYXNlIE9BOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgSmU6Y2FzZSB2ZTpjYXNlIHFlOmNhc2UgT2U6Y29udGludWU7Y2FzZSBLZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChLZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChicik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpsPW51bGwsbWFya2VkQ29udGVudERhdGE6aD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOkM9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihofHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmx9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgscikpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO0N8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIUN0KXtDdD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7QnQ9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoQ3QsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpCdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGEpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLGEsaSk7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxpLHQpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxyfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxsPU1hdGguc2lnbih1LndpZHRoKTtpZihvPGwqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1sKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWwqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLGwpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBsPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1sK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9bCtrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGwpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChsKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBoPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihsPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpO2w9TWF0aC5hYnMobCk7aC5oZWlnaHQrPWx9ZWxzZXtsKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KGwsMCk7aC53aWR0aCs9bH1sJiYoaC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IEM9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihDKSYmaC5zdHIucHVzaCgiICIpO2guc3RyLnB1c2goQyk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZixOLEc9W107Zm9yKDshKGQ9Ui5jaGVjaygpKTspe0cubGVuZ3RoPTA7dS5hcmdzPUc7aWYoIVMucmVhZCh1KSlicmVhaztjb25zdCBlPWs7az1zLnN0YXRlO2NvbnN0IHI9dS5mbjtHPXUuYXJncztzd2l0Y2goMHxyKXtjYXNlIG9lOmNvbnN0IHI9R1swXS5uYW1lLHU9R1sxXTtpZihrLmZvbnQmJnI9PT1rLmZvbnROYW1lJiZ1PT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9cjtrLmZvbnRTaXplPXU7bmV4dChoYW5kbGVTZXRGb250KHIsbnVsbCkpO3JldHVybjtjYXNlIEllOmsudGV4dFJpc2U9R1swXTticmVhaztjYXNlIHNlOmsudGV4dEhTY2FsZT1HWzBdLzEwMDticmVhaztjYXNlIG5lOmsubGVhZGluZz1HWzBdO2JyZWFrO2Nhc2UgY2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBsZTprLmxlYWRpbmc9LUdbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBDZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBoZTprLnNldFRleHRNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgYWU6ay5jaGFyU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgcmU6ay53b3JkU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgdGU6ay50ZXh0TWF0cml4PWEuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PWEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGQ9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyxTPUdbMF07Zm9yKGxldCBlPTAsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KmR9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOkdbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHVlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9R1swXTtrLmNoYXJTcGFjaW5nPUdbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3c/Pz1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O049R1swXWluc3RhbmNlb2YgTmFtZTtmPUdbMF0ubmFtZTtpZihOJiZiLmdldEJ5TmFtZShmKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGEpe2lmKCFOKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9dy5nZXRSYXcoZik7aWYociBpbnN0YW5jZW9mIFJlZil7aWYoYi5nZXRCeVJlZihyKSl7ZSgpO3JldHVybn1pZihwLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLHAucGFnZUluZGV4KSl7ZSgpO3JldHVybn1yPW0uZmV0Y2gocil9aWYoIShyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IEU9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoRSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PUUubmFtZSl7Yi5zZXQoZixyLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgdT1zLnN0YXRlLmNsb25lKCksZD1uZXcgU3RhdGVNYW5hZ2VyKHUpLHk9bG9va3VwTWF0cml4KHIuZGljdC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7eSYmZC50cmFuc2Zvcm0oeSk7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgRD17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7by5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBvLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gby5yZWFkeX19O3AuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpyLHRhc2s6dCxyZXNvdXJjZXM6ci5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGksc3RhdGVNYW5hZ2VyOmQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOkQsc2VlblN0eWxlczpnLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjpDLGtlZXBXaGl0ZVNwYWNlOlF9KS50aGVuKChmdW5jdGlvbigpe0QuZW5xdWV1ZUludm9rZWR8fGIuc2V0KGYsci5kaWN0Lm9iaklkLCEwKTtlKCl9KSxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgVUE6Tj1HWzBdaW5zdGFuY2VvZiBOYW1lO2Y9R1swXS5uYW1lO2lmKE4mJkQuZ2V0QnlOYW1lKGYpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIU4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1hLmdldChmKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9ci5nZXQoIkZvbnQiKTtpZihzKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9bnVsbDtrLmZvbnRTaXplPXNbMV07aGFuZGxlU2V0Rm9udChudWxsLHNbMF0pLnRoZW4oZSx0KX1lbHNle0Quc2V0KGYsci5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBZZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztFLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOkdbMF1pbnN0YW5jZW9mIE5hbWU/R1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEtlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7R1sxXWluc3RhbmNlb2YgRGljdCYmKGU9R1sxXS5nZXQoIk1DSUQiKSk7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtwLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzpHWzBdaW5zdGFuY2VvZiBOYW1lP0dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBUZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtFLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBMQTohZXx8ZS5mb250PT09ay5mb250JiZlLmZvbnRTaXplPT09ay5mb250U2l6ZSYmZS5mb250TmFtZT09PWsuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoRS5pdGVtcy5sZW5ndGg+PW8uZGVzaXJlZFNpemUpe2Q9ITA7YnJlYWt9fWlmKGQpbmV4dChicik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBpPXRoaXMueHJlZjtsZXQgYTtjb25zdCByPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGk9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTtpIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmkuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgcz1bXTtsZXQgbixvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe249ZS5nZXQoIkVuY29kaW5nIik7aWYobiBpbnN0YW5jZW9mIERpY3Qpe289bi5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYobi5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9bi5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtzW3QrK109ZS5uYW1lfX19fWVsc2UgaWYobiBpbnN0YW5jZW9mIE5hbWUpbz1uLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGc9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxjPVBpKClbdC5uYW1lXTtvJiZnJiZjJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJkhpKSxpPSEhKHQuZmxhZ3MmSmkpO249Qmk7IlRydWVUeXBlIiE9PXQudHlwZXx8aXx8KG49UWkpO2lmKGV8fGMpe249Q2k7ZyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/bj1FaTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/bj11aTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYobj1RaSkpfXQuZGVmYXVsdEVuY29kaW5nPW59dC5kaWZmZXJlbmNlcz1zO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxzLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHI7Y29uc3QgbD1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWw7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxsKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgaT1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscj1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBuPURpKCk7Zm9yKGNvbnN0IHMgaW4gYSl7bGV0IG89YVtzXTtpZigiIj09PW8pY29udGludWU7bGV0IGc9bltvXTtpZih2b2lkIDAhPT1nKXtpW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk7Y29udGludWV9bGV0IGM9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgaT1vLnN1YnN0cmluZygxKTtpZih0KXtjPXBhcnNlSW50KGksMTYpO2JyZWFrfWM9K2k7aWYoTnVtYmVyLmlzTmFOKGMpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGksMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmc9Z2V0VW5pY29kZUZvckdseXBoKG8sbik7LTEhPT1nJiYoYz1nKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjppW3NdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihjPjAmJmM8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoYykpe2lmKHImJmM9PT0rcyl7Y29uc3QgZT1nZXRFbmNvZGluZyhyKTtpZihlJiYobz1lW3NdKSl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10pO2NvbnRpbnVlfX1pW3NdPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpfX1yZXR1cm4gaX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzppfT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke2l9LVVDUzJgKSxyPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxzPVtdLG49W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBpPXIubG9va3VwKHQpO2lmKGkpe24ubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9MiluLnB1c2goKGkuY2hhckNvZGVBdChlKTw8OCkraS5jaGFyQ29kZUF0KGUrMSkpO3NbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5uKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAocyl9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmkpKXthLnB1c2goaSk7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmcikrNjU1MzYpfWlbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthKytdPDw4fGVbYV0scz1hPj4xOygwIT09cnx8dC5oYXMocykpJiYoaVtzXT1yKX1yZXR1cm4gaX1leHRyYWN0V2lkdGhzKGUsdCxpKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj1bXSxzPTA7Y29uc3Qgbj1bXTtsZXQgbztpZihpLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtzPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihyW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCBzPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygcyljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylyW2VdPXN9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpzLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHI9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpYnJlYWs7e2NvbnN0IHM9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXI7ZSsrKW5bZV09c319fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihyW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtzPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9TWk6aS5mbGFncyY9fk1pO2kuZGVmYXVsdFdpZHRoPXM7aS53aWR0aHM9cjtpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIE9pKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCByPUtpKClbZV18fGU7Y29uc3Qgcz1WaSgpO3IgaW4gc3x8KHI9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXNbcl07aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoaVt0XT1lW3JbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnIsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnMsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTphLHR5cGU6cyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBsPSJUeXBlMyI9PT1zO2lmKCFlKXtpZighbCl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHIpP3hpOjApfChhLm1vbm9zcGFjZT9NaTowKXwoUGkoKVtyXT9IaTpKaSksaD17dHlwZTpzLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6bH0sQz10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxzKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKEFycmF5LmlzQXJyYXkoQykpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBDKXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaElmUmVmKGkpOyJudW1iZXIiPT10eXBlb2YgYSYmKGVbdF09YSk7dCsrfXUud2lkdGhzPWV9ZWxzZSB1LndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGEud2lkdGhzLHUpO3JldHVybiBuZXcgRm9udChlLEUsdSl9e2NvbnN0IGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJGb250QkJveCIpLFswLDAsMCwwXSk7KGU9bmV3IERpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLE5hbWUuZ2V0KHMpKTtlLnNldCgiRm9udEJCb3giLGkpfX1sZXQgaD1lLmdldCgiRm9udE5hbWUiKSxDPXQuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9TmFtZS5nZXQoaCkpOyJzdHJpbmciPT10eXBlb2YgQyYmKEM9TmFtZS5nZXQoQykpO2NvbnN0IFE9aD8ubmFtZSxFPUM/Lm5hbWU7aWYoIWwmJlEhPT1FKXtpbmZvKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtRfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke0V9Ii5gKTtRJiZFJiYoRS5zdGFydHNXaXRoKFEpfHwhaXNLbm93bkZvbnROYW1lKFEpJiZpc0tub3duRm9udE5hbWUoRSkpJiYoaD1udWxsKX1ofHw9QztpZighKGggaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IHUsZCxmLHAsbTt0cnl7dT1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKTtpZih1KXtpZighKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIHNob3VsZCBiZSBhIHN0cmVhbSIpO2lmKHUuaXNFbXB0eSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIGlzIGVtcHR5Iil9fWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3U9bnVsbH1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7aT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7YT0hMH19ZWxzZSBpZighbCl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksciksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgTT1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKE0pfHwoTT0wKTtsZXQgVT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFUmJihVPTApO2NvbnN0IHg9e3R5cGU6cyxuYW1lOmgubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsY29tcG9zaXRlOmEsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczpNLGl0YWxpY0FuZ2xlOlUsaXNUeXBlM0ZvbnQ6bCxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKGEpe2NvbnN0IGU9aS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJih4LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7eC5jTWFwPXQ7eC52ZXJ0aWNhbD14LmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LHgpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fG1yO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxsPU9iamVjdC5jcmVhdGUobnVsbCksaD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLEM9aFsyXS1oWzBdLFE9aFszXS1oWzFdLEU9TWF0aC5oeXBvdChDLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1mZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO2xbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtsW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWw7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgZmU6YnJlYWs7Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIE5lOmNhc2UgR2U6Y2FzZSBNZTpjYXNlIEdBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBVQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9cjt0aGlzLnRleHRNYXRyaXg9YS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9YS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWI7dGhpcy5fZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbH1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6UkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6TkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOk1BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpVQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDp4QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpMQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6dkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6S0EsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6cUEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOk9BLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOmVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDp0ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6aWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpyZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6c2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6Z2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpjZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6bGUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOmhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOkNlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpCZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpFZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpkZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6eWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp3ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmJlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6RGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOlNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDprZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6UmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6R2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOk1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6eGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOkxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpIZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOnZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpLZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpxZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1KQSYmczw9JEE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09RXQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgeEE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgSEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG9lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgeEE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBMQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBoZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBvZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGJlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIEJlOmNhc2UgUWU6Y2FzZSBFZTpjYXNlIHVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxsPWctcjt0JTE4MCE9MCYmKFtjLGxdPVtsLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLGwrbippLWhdLGJib3g6WzAsMCxjLGxdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGwsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBsPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtsPU1hdGgubWF4KGwsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWwqPWEvMWUzO2NvbnN0W2gsQyxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1DO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7bD51JiYoZj11L2wpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWl9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsaT1uZXcgUmVmU2V0O2kucHV0KHRoaXMucm9vdCk7Y29uc3QgYT1bdGhpcy5yb290XTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCByPXQuZmV0Y2hJZlJlZihhLnNoaWZ0KCkpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe2NvbnN0IGU9ci5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihpLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1c2godCk7aS5wdXQodCl9Y29udGludWV9Y29uc3Qgcz1yLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krPTIpZS5zZXQodC5mZXRjaElmUmVmKHNbaV0pLHQuZmV0Y2hJZlJlZihzW2krMV0pKX1yZXR1cm4gZX1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgaT10LmZldGNoSWZSZWYodGhpcy5yb290KSxhPTA7Zm9yKDtpLmhhcygiS2lkcyIpOyl7aWYoKythPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2xldCBzPTAsbj1yLmxlbmd0aC0xO2Zvcig7czw9bjspe2NvbnN0IGE9cytuPj4xLG89dC5mZXRjaElmUmVmKHJbYV0pLGc9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGdbMF0pKW49YS0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihnWzFdKSkpe2k9bzticmVha31zPWErMX19aWYocz5uKXJldHVybiBudWxsfWNvbnN0IHI9aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7bGV0IGk9MCxhPXIubGVuZ3RoLTI7Zm9yKDtpPD1hOyl7Y29uc3Qgcz1pK2E+PjEsbj1zKygxJnMpLG89dC5mZXRjaElmUmVmKHJbbl0pO2lmKGU8bylhPW4tMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gcltuKzFdO2k9bisyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7dWE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXt1dD1PYmplY3QuY3JlYXRlKG51bGwpO2R0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnQ9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7TmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNVPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1U9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1UpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IERyPTAsRnI9LTIsU3I9LTMsa3I9LTQsUnI9LTUsTnI9LTYsR3I9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR3IpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKFNyKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFJyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEZyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKE5yKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKGtyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihrcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoTnIpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihHcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1Ecjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09RHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jb25zdCBNcj0xLFVyPTIseHI9MyxMcj00LEhyPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I3goZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jeChlLHQsTHIpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsaV1vZiBlKWkgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KHQsaS5uYW1lKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHI9ITA7Zm9yKGNvbnN0W2Usc11vZiBpKXtjb25zdHtyZWY6aX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoaSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cj0hMDticmVha31mb3IoY29uc3QgZSBvZiBzKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztyPSExfX1pZihyKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmkscGRmTWFuYWdlcjphLGNoYW5nZXM6cn0pe2NvbnN0IHM9YS5jYXRhbG9nLmNsb25lRGljdCgpLG49bmV3IFJlZlNldENhY2hlO24ucHV0KGkscyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgZz1uZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGM9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtnLnNldCgiUGFyZW50VHJlZSIsYyk7Y29uc3QgbD1bXTtnLnNldCgiSyIsbCk7bi5wdXQobyxnKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9W107aC5zZXQoIk51bXMiLEMpO2NvbnN0IFE9YXdhaXQgdGhpcy4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpsLG51bXM6Qyx4cmVmOnQscGRmTWFuYWdlcjphLGNoYW5nZXM6cixjYWNoZTpufSk7Zy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixRKTtuLnB1dChjLGgpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKXIucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCBzPXIuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocykpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocix0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qscl1vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI0goe2VsZW1lbnRzOnIseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixyPXRoaXMuZGljdC5jbG9uZSgpLHM9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocyxyKTtsZXQgbyxnPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksbD1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe2w9YztjPWEuZmV0Y2gobCl9Yz1jLnNsaWNlKCk7bHx8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cyxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmksY2FjaGU6bn0pO2lmKC0xIT09aCl7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtsJiZuLnB1dChsLGMpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKWkucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LHN0cnVjdFRyZWVSb290Omksa2lkczphLG51bXM6cix4cmVmOnMscGRmTWFuYWdlcjpuLGNoYW5nZXM6byxjYWNoZTpnfSl7Y29uc3QgYz1OYW1lLmdldCgiT0JKUiIpO2xldCBsLGg9LTE7Zm9yKGNvbnN0W0MsUV1vZiBlKXtjb25zdCBlPWF3YWl0IG4uZ2V0UGFnZShDKSx7cmVmOkV9PWUsdT1FIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpuLHJlZjpkLHBhcmVudFRyZWVJZDpmLHN0cnVjdFRyZWVQYXJlbnQ6cH1vZiBRKXtpZighbj8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6UX09bjtpZihpJiZOdW1iZXIuaXNJbnRlZ2VyKFEpJiZRPj0wKXtsZXQgdD0obHx8PW5ldyBNYXApLmdldChDKTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShpLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKEUpO2wuc2V0KEMsdCl9Y29uc3QgYT10Py5nZXQoUSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI0ooZSxuKTtvLnB1dChhLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGYpO2NvbnN0IG09cy5nZXROZXdUZW1wb3JhcnlSZWYoKSx5PW5ldyBEaWN0KHMpO1N0cnVjdFRyZWVSb290LiNKKHksbik7YXdhaXQgdGhpcy4jdih7c3RydWN0VHJlZVBhcmVudDpwLHRhZ0RpY3Q6eSxuZXdUYWdSZWY6bSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczphLHhyZWY6cyxjYWNoZTpnfSk7Y29uc3Qgdz1uZXcgRGljdChzKTt5LnNldCgiSyIsdyk7dy5zZXQoIlR5cGUiLGMpO3UmJncuc2V0KCJQZyIsRSk7dy5zZXQoIk9iaiIsZCk7Zy5wdXQobSx5KTtyLnB1c2goZixtKX19cmV0dXJuIGgrMX1zdGF0aWMjSihlLHt0eXBlOnQsdGl0bGU6aSxsYW5nOmEsYWx0OnIsZXhwYW5kZWQ6cyxhY3R1YWxUZXh0Om59KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2kmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKTthJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7ciYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7cyYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocykpO24mJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG4pKX1zdGF0aWMjSCh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6aSxudW1iZXJUcmVlOmF9KXtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBpPXIuZ2V0KGUpO2lmKCFpKXtpPVtdO3Iuc2V0KGUsaSl9aS5wdXNoKHQpfWNvbnN0IHM9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlyZXR1cm47Y29uc3Qgbj1hLmdldChzKSx1cGRhdGVFbGVtZW50PShlLGksYSk9Pntjb25zdCBzPXIuZ2V0KGUpO2lmKHMpe2NvbnN0IGU9aS5nZXRSYXcoIlAiKSxyPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOmEsZGljdDppfTtmb3IoY29uc3QgdCBvZiBzKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBuKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGk9dC5mZXRjaChlKSxhPWkuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSl1cGRhdGVFbGVtZW50KGEsaSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByIG9mIGEpe3I9dC5mZXRjaElmUmVmKHIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixpLGUpKWJyZWFrO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoci5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3QgYT1yLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJnVwZGF0ZUVsZW1lbnQoYSxpLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3Yoe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOmksc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cix4cmVmOnMsY2FjaGU6bn0pe2xldCBvLGc9bnVsbDtpZihlKXsoe3JlZjpnfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgYz1zLmZldGNoSWZSZWYobyk7aWYoIWMpe3IucHVzaChpKTtyZXR1cm59bGV0IGw9bi5nZXQobyk7aWYoIWwpe2w9Yy5jbG9uZSgpO24ucHV0KG8sbCl9Y29uc3QgaD1sLmdldFJhdygiSyIpO2xldCBDPWggaW5zdGFuY2VvZiBSZWY/bi5nZXQoaCk6bnVsbDtpZighQyl7Qz1zLmZldGNoSWZSZWYoaCk7Qz1BcnJheS5pc0FycmF5KEMpP0Muc2xpY2UoKTpbaF07Y29uc3QgZT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2wuc2V0KCJLIixlKTtuLnB1dChlLEMpfWNvbnN0IFE9Qy5pbmRleE9mKGcpO0Muc3BsaWNlKFE+PTA/USsxOkMubGVuZ3RoLDAsaSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDppfT10aGlzLnRyZWU7cmV0dXJuIGkucm9sZU1hcC5oYXModCk/aS5yb2xlTWFwLmdldCh0KTp0fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMucGFyc2VLaWQoZSx0KTtpJiZ0aGlzLmtpZHMucHVzaChpKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGkpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpNcixtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgaT1udWxsO3QgaW5zdGFuY2VvZiBSZWY/aT10aGlzLmRpY3QueHJlZi5mZXRjaCh0KTp0IGluc3RhbmNlb2YgRGljdCYmKGk9dCk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9aS5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlVyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDppLmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6eHIscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpIcixkaWN0Oml9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6aT1udWxsLHBhZ2VPYmpJZDphPW51bGwscmVmT2JqSWQ6cj1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWk7dGhpcy5wYWdlT2JqSWQ9YTt0aGlzLnJlZk9iaklkPXI7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfWNvbGxlY3RPYmplY3RzKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2Zvcihjb25zdFtlXW9mIGkpe2NvbnN0IHQ9ci5nZXRSYXcoZSk7dCBpbnN0YW5jZW9mIFJlZiYmYS5zZXQoZSx0KX1yZXR1cm4gYX1wYXJzZShlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwLHM9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoaSkpe2NvbnN0IGU9cy5nZXQoaSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSx0XW9mIGEpe2NvbnN0IGk9cy5nZXQoZSk7aWYoaSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoSWZSZWYoaSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT14ciYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7Y29uc3Qgcj1lLmdldCgiUCIpO2lmKCFyfHxpc05hbWUoci5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxhKXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9Y29uc3Qgcz10aGlzLmFkZE5vZGUocix0LGkrMSk7aWYoIXMpcmV0dXJuIGE7bGV0IG49ITE7Zm9yKGNvbnN0IHQgb2Ygcy5raWRzKWlmKHQudHlwZT09PUhyJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9YTtuPSEwfW58fHQuZGVsZXRlKGUpO3JldHVybiBhfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGk9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighaSlyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgRGljdCl7aWYoaS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKXtjb25zdCBzPWlbcl07aWYocz8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDthPSEwfX1yZXR1cm4gYX1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7bGV0IHI9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiByJiYocj1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgciYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHIpKTtjb25zdCBzPWUuZGljdC5nZXQoIkEiKTtpZihzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKWEuYmJveD1lO2Vsc2V7Y29uc3QgZT1zLmdldCgiV2lkdGgiKSx0PXMuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihhLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgbj1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09SHI/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLGkrMSk6dC50eXBlPT09TXJ8fHQudHlwZT09PVVyP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT14cj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PUxyJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIGlzVmFsaWRFeHBsaWNpdERlc3QoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbdCxpLC4uLmFdPWU7aWYoISh0IGluc3RhbmNlb2YgUmVmfHxOdW1iZXIuaXNJbnRlZ2VyKHQpKSlyZXR1cm4hMTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4hMTtjb25zdCByPWEubGVuZ3RoO2xldCBzPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZihyPDJ8fHI+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PXI7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKHI+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1yKXJldHVybiExO3M9ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBhKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxzJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gaXNWYWxpZEV4cGxpY2l0RGVzdChlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0KTtpZihpc1ZhbGlkRXhwbGljaXREZXN0KHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlRGljdENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWNsb25lRGljdCgpe3JldHVybiB0aGlzLl9jYXREaWN0LmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKG10LnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGk9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpLmRpY3QgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZGljdC5nZXQoIlR5cGUiKSxhPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZihpc05hbWUoZSwiTWV0YWRhdGEiKSYmaXNOYW1lKGEsIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhpLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IGE9ZS5nZXQoaSk7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbaV09YSl9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkU3RydWN0VHJlZVJvb3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgU3RydWN0VHJlZVJvb3QodCxlKTtpLmluaXQoKTtyZXR1cm4gaX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGk9W3tvYmo6ZSxwYXJlbnQ6dH1dLGE9bmV3IFJlZlNldDthLnB1dChlKTtjb25zdCByPXRoaXMueHJlZixzPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCB0PWkuc2hpZnQoKSxuPXIuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PW4pY29udGludWU7bi5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBnPW4uZ2V0KCJUaXRsZSIpLGM9bi5nZXQoIkYiKXx8MCxsPW4uZ2V0QXJyYXkoIkMiKSxoPW4uZ2V0KCJDb3VudCIpO2xldCBDPXM7IWlzTnVtYmVyQXJyYXkobCwzKXx8MD09PWxbMF0mJjA9PT1sWzFdJiYwPT09bFsyXXx8KEM9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IobCwwKSk7Y29uc3QgUT17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBnP3N0cmluZ1RvUERGU3RyaW5nKGcpOiIiLGNvbG9yOkMsY291bnQ6TnVtYmVyLmlzSW50ZWdlcihoKT9oOnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goUSk7ZT1uLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OlF9KTthLnB1dChlKX1lPW4uZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO2EucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBpPVtdO2Zvcihjb25zdCBlIGluIHcpe2NvbnN0IGE9d1tlXTt0JmEmJmkucHVzaChhKX1yZXR1cm4gaX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9dC5nZXQoIkQiKTtpZighaSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSYmci5wdXQoZSx0aGlzLiNZKGUpKTtlPXRoaXMuI0soaSxyKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jWShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxpPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihpLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCByPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7ci5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGkuaW50ZW50PXIubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgcz10LmdldCgiVXNhZ2UiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gaTtjb25zdCBuPWkudXNhZ2Usbz1zLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGc9cy5nZXQoIlZpZXciKTtpZihnIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1nLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4udmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBpfSNLKGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmaS5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGk9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhzKSl7YS5wdXQocyk7ci5wdXNoKHMudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHMsaSk7ZSYmci5wdXNoKGUpfWlmKGk+MClyZXR1cm4gcjtjb25zdCBzPVtdO2Zvcihjb25zdFtlXW9mIHQuaXRlbXMoKSlhLmhhcyhlKXx8cy5wdXNoKGUudG9TdHJpbmcoKSk7cy5sZW5ndGgmJnIucHVzaCh7bmFtZTpudWxsLG9yZGVyOnN9KTtyZXR1cm4gcn1mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnIpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbj8ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHMpLG9yZGVyOm59Om51bGx9Y29uc3QgaT10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHI9MTA7IWZ1bmN0aW9uIHBhcnNlUkJHcm91cHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHI9bmV3IFNldDtmb3IoY29uc3QgaSBvZiBlKWlmKGkgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGkpJiYhci5oYXMoaS50b1N0cmluZygpKSl7ci5hZGQoaS50b1N0cmluZygpKTt0LmdldChpKS5yYkdyb3Vwcy5wdXNoKHIpfX19KGUuZ2V0KCJSQkdyb3VwcyIpKTtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpbLi4udF19fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy5fYWN0dWFsTnVtUGFnZXM9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FjdHVhbE51bVBhZ2VzfWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbaSxhXW9mIGUuZ2V0QWxsKCkpe2NvbnN0IGU9ZmV0Y2hEZXN0KGEpO2UmJih0W3N0cmluZ1RvUERGU3RyaW5nKGkpXT1lKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgZSl7Y29uc3QgZT1mZXRjaERlc3QoYSk7ZSYmKHRbaV09ZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLHQpfWdldERlc3RpbmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKGEpe3dhcm4oYEZvdW5kICIke2V9IiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLmApO3JldHVybiBhfX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fcmVhZERlc3RzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtyZXR1cm4gZT8uaGFzKCJEZXN0cyIpP25ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgaT1udWxsLGE9IiI7Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IHM9IiIsbj0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2k9ZS5uYW1lfWVsc2UgaT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGkpe2Nhc2UiRCI6cz1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpzPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWkpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09aT85Nzo2NSxhPW4tMTtzPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtpfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2VdPWErcztuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLmdldEtleXMoKSl7Y29uc3QgYT1lLmdldChpKTtsZXQgcjtzd2l0Y2goaSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihyPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wKXthLmV2ZXJ5KCgoZSx0LGkpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49aVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocj1hKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYocj1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7aX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cil7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtpXT1yfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPW5ldyBEaWN0KHRoaXMueHJlZik7aS5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDppLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3QuZGVzdD1hLmRlc3Q6YS5hY3Rpb24mJih0LmFjdGlvbj1hLmFjdGlvbil9ZWxzZSBBcnJheS5pc0FycmF5KGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXtjb25zdCBpPW5ldyBGaWxlU3BlYyhhLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtzdHJpbmdUb1BERlN0cmluZyhlKV09aS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXt0fHwodD1uZXcgRGljdCh0aGlzLnhyZWYpKTt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlKSxhKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfV9jb2xsZWN0SmF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsaSl7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoaS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgYT1pLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodHx8PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsaV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSksaSl9Y29uc3QgaT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2kmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGkpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuX2NvbGxlY3RKYXZhU2NyaXB0KCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuX2NhdERpY3QsbUEpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgZSlpIGluIHQ/dFtpXS5wdXNoKGEpOnRbaV09W2FdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBpPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEubG9hZGVkTmFtZT09PWUpe2EuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMucGFnZURpY3RDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxpPW5ldyBSZWZTZXQsYT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTthIGluc3RhbmNlb2YgUmVmJiZpLnB1dChhKTtjb25zdCByPXRoaXMueHJlZixzPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLG49dGhpcy5wYWdlSW5kZXhDYWNoZSxvPXRoaXMucGFnZURpY3RDYWNoZTtsZXQgZz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCBhPXQucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYz1zLmdldChhKTtpZihjPj0wJiZnK2M8PWUpe2crPWM7Y29udGludWV9aWYoaS5oYXMoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtpLnB1dChhKTtjb25zdCBsPWF3YWl0KG8uZ2V0KGEpfHxyLmZldGNoQXN5bmMoYSkpO2lmKGwgaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1sLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIikpe3MuaGFzKGEpfHxzLnB1dChhLDEpO24uaGFzKGEpfHxuLnB1dChhLGcpO2lmKGc9PT1lKXJldHVybltsLGFdO2crKztjb250aW51ZX19dC5wdXNoKGwpO2NvbnRpbnVlfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmN9PWE7bGV0IGw9YS5nZXRSYXcoIkNvdW50Iik7bCBpbnN0YW5jZW9mIFJlZiYmKGw9YXdhaXQgci5mZXRjaEFzeW5jKGwpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGwpJiZsPj0wKXtjJiYhcy5oYXMoYykmJnMucHV0KGMsbCk7aWYoZytsPD1lKXtnKz1sO2NvbnRpbnVlfX1sZXQgaD1hLmdldFJhdygiS2lkcyIpO2ggaW5zdGFuY2VvZiBSZWYmJihoPWF3YWl0IHIuZmV0Y2hBc3luYyhoKSk7aWYoIUFycmF5LmlzQXJyYXkoaCkpe2xldCB0PWEuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgci5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYS5oYXMoIktpZHMiKSl7aWYoZz09PWUpcmV0dXJuW2EsbnVsbF07ZysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9aC5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3QgaT1oW2VdO3QucHVzaChpKTthPT09dGhpcy50b3BsZXZlbFBhZ2VzRGljdCYmaSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGkpJiZvLnB1dChpLHIuZmV0Y2hBc3luYyhpKSl9fXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGk9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3Qgcz1uZXcgTWFwLG49dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgZz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGcpO3Muc2V0KGcrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGk7aWYoZSYmdCYmMD09PWcpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7aX0iLmApO2k9RGljdC5lbXB0eX1zLnNldChnKyssW2ksbnVsbF0pfWZvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IHM9dC5nZXRSYXcoIktpZHMiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtzPWF3YWl0IG4uZmV0Y2hBc3luYyhzKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHI+PXMubGVuZ3RoKXtpLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89c1tyXTtsZXQgZztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtnPWF3YWl0IG4uZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgZz1vO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBjPWcuZ2V0UmF3KCJUeXBlIik7aWYoYyBpbnN0YW5jZW9mIFJlZil0cnl7Yz1hd2FpdCBuLmZldGNoQXN5bmMoYyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShjLCJQYWdlIil8fCFnLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGcsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmkucHVzaCh7Y3VycmVudE5vZGU6Zyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHN9Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGk9dGhpcy54cmVmO2xldCBhPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgYSxyPTA7cmV0dXJuIGkuZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihpKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGksIlBhZ2UiKSYmIShpIGluc3RhbmNlb2YgRGljdCYmIWkuaGFzKCJUeXBlIikmJmkuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFpKXJldHVybiBudWxsO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTthPWkuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gaS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2xldCBuPSExO2Zvcihjb25zdCBhIG9mIGUpe2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChhLHQpKXtuPSEwO2JyZWFrfXMucHVzaChpLmZldGNoQXN5bmMoYSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9yKz1lLmdldCgiQ291bnQiKTpyKyt9KSkpfWlmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcixhXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLGEpO3JldHVybiBhfWNvbnN0W2kscl09dDthKz1pO3JldHVybiBuZXh0KHIpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmk9bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHIscyxuPWUuZ2V0KCJBIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSluPWUuZ2V0KCJEZXN0Iik7ZWxzZXtuPWUuZ2V0KCJBQSIpO24gaW5zdGFuY2VvZiBEaWN0JiYobi5oYXMoIkQiKT9uPW4uZ2V0KCJEIik6bi5oYXMoIlUiKSYmKG49bi5nZXQoIlUiKSkpfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW4uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgaT1lLm5hbWU7c3dpdGNoKGkpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPW4uZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpyPW4uZ2V0KCJVUkkiKTtyIGluc3RhbmNlb2YgTmFtZSYmKHI9Ii8iK3IubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpzPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGw9bi5nZXQoIkYiKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMobCxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cj10fWVsc2Uic3RyaW5nIj09dHlwZW9mIGwmJihyPWwpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgciYmKHI9ci5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IEM9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIEMmJih0Lm5ld1dpbmRvdz1DKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3I9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocz1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChyLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1yfWlmKHMpe3MgaW5zdGFuY2VvZiBOYW1lJiYocz1zLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcz90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocyk6aXNWYWxpZEV4cGxpY2l0RGVzdChzKSYmKHQuZGVzdD1zKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IEpyPVN5bWJvbCgpLHZyPVN5bWJvbCgpLFlyPVN5bWJvbCgpLEtyPVN5bWJvbCgpLFRyPVN5bWJvbCgpLHFyPVN5bWJvbCgpLE9yPVN5bWJvbCgpLFByPVN5bWJvbCgpLFdyPVN5bWJvbCgpLGpyPVN5bWJvbCgiY29udGVudCIpLFhyPVN5bWJvbCgiZGF0YSIpLFZyPVN5bWJvbCgpLFpyPVN5bWJvbCgiZXh0cmEiKSxfcj1TeW1ib2woKSx6cj1TeW1ib2woKSwkcj1TeW1ib2woKSxBcz1TeW1ib2woKSxlcz1TeW1ib2woKSx0cz1TeW1ib2woKSxpcz1TeW1ib2woKSxhcz1TeW1ib2woKSxycz1TeW1ib2woKSxzcz1TeW1ib2woKSxucz1TeW1ib2woKSxvcz1TeW1ib2woKSxncz1TeW1ib2woKSxJcz1TeW1ib2woKSxjcz1TeW1ib2woKSxscz1TeW1ib2woKSxocz1TeW1ib2woKSxDcz1TeW1ib2woKSxCcz1TeW1ib2woKSxRcz1TeW1ib2woKSxFcz1TeW1ib2woKSx1cz1TeW1ib2woKSxkcz1TeW1ib2woKSxmcz1TeW1ib2woKSxwcz1TeW1ib2woKSxtcz1TeW1ib2woKSx5cz1TeW1ib2woKSx3cz1TeW1ib2woKSxicz1TeW1ib2woKSxEcz1TeW1ib2woKSxGcz1TeW1ib2woKSxTcz1TeW1ib2woKSxrcz1TeW1ib2woIm5hbWVzcGFjZUlkIiksUnM9U3ltYm9sKCJub2RlTmFtZSIpLE5zPVN5bWJvbCgpLEdzPVN5bWJvbCgpLE1zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLExzPVN5bWJvbCgpLEhzPVN5bWJvbCgpLEpzPVN5bWJvbCgpLHZzPVN5bWJvbCgicm9vdCIpLFlzPVN5bWJvbCgpLEtzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLHFzPVN5bWJvbCgpLE9zPVN5bWJvbCgpLFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLHpzPVN5bWJvbCgidWlkIiksJHM9U3ltYm9sKCksQW49e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sZW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LHRuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2godG4pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxyXT1pLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXMpcmV0dXJuIDA7Y29uc3Qgbj1lbltyXTtyZXR1cm4gbj9uKHMpOnN9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8KHI9InJlZ3VsYXIiKTthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChyKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCByPWEuZmluZChlLnR5cGVmYWNlKTtpZihyKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHIpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCByPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7ci5wZGZGb250fHwoci5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqaSxvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsbD1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8bDt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHI9MCxzPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxsPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPGw7YysrKXtjb25zdFtsLGgsQyxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/QzpoO2lmKEUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocytsPmUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cztzKz1sO3Q9Y31lbHNlIGlmKHMrbD5lKXtyKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cz0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHMpO3M9bH1vPSEwO2c9ITF9ZWxzZXtzKz1sO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHMpO3IrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpyLGlzQnJva2VuOm99fX1jb25zdCBhbj0vXlteLltdKy8scm49L15bXlxdXSsvLHNuPTAsbm49MSxvbj0yLGduPTMsSW49NCxjbj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW29zXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxsbj1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGk9ITApe2xldCBhPWUubWF0Y2goYW4pO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOnNufV07bGV0IG49ci5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChybik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1ubjticmVhaztjYXNlIiMiOm4rKztjPW9uO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWduO2JyZWFrO2Nhc2UiKCI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9SW47YnJlYWs7ZGVmYXVsdDpjPXNufWE9ZS5zbGljZShuKS5tYXRjaChhbik7aWYoIWEpYnJlYWs7W3JdPWE7bis9ci5sZW5ndGg7cy5wdXNoKHtuYW1lOnIsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHN9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHI9ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbj1jbi5nZXQoc1swXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXMubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXNbZ10sbD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxzO2lmKHIpe3M9bG4uZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bG4uc2V0KHQscyl9ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2Ugc246ZT10W2lzXShpLCExKTticmVhaztjYXNlIG5uOmU9dFtpc10oaSwhMCk7YnJlYWs7Y2FzZSBvbjplPXRbdHNdKGkpO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmbC5wdXNoKGUpfWlmKDAhPT1sLmxlbmd0aHx8b3x8MCE9PWcpZT1pc0Zpbml0ZShjKT9sLmZpbHRlcigoZT0+YzxlLmxlbmd0aCkpLm1hcCgoZT0+ZVtjXSkpOmwuZmxhdCgpO2Vsc2V7Y29uc3QgaT10W2xzXSgpO2lmKCEodD1pKSlyZXR1cm4gbnVsbDtnPS0xO2U9W3RdfX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsaSl7Y29uc3QgYT1wYXJzZUV4cHJlc3Npb24oaSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zb21lKChlPT5lLm9wZXJhdG9yPT09bm4pKSlyZXR1cm4gbnVsbDtjb25zdCByPWNuLmdldChhWzBdLm5hbWUpO2xldCBzPTA7aWYocil7ZT1yKGUsdCk7cz0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1hLmxlbmd0aDtzPHQ7cysrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6aSxpbmRleDpyfT1hW3NdO2lmKCFpc0Zpbml0ZShyKSl7YVtzXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfWxldCBuO3N3aXRjaChpKXtjYXNlIHNuOm49ZVtpc10odCwhMSk7YnJlYWs7Y2FzZSBubjpuPWVbaXNdKHQsITApO2JyZWFrO2Nhc2Ugb246bj1lW3RzXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSk7aWYoIShyPG4ubGVuZ3RoKSl7YVtzXS5pbmRleD1yLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfXtjb25zdCB0PW5bcl07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgaG49U3ltYm9sKCksQ249U3ltYm9sKCksQm49U3ltYm9sKCksUW49U3ltYm9sKCJfY2hpbGRyZW4iKSxFbj1TeW1ib2woKSx1bj1TeW1ib2woKSxkbj1TeW1ib2woKSxmbj1TeW1ib2woKSxwbj1TeW1ib2woKSxtbj1TeW1ib2woKSx5bj1TeW1ib2woKSx3bj1TeW1ib2woKSxibj1TeW1ib2woKSxEbj1TeW1ib2woInBhcmVudCIpLEZuPVN5bWJvbCgpLFNuPVN5bWJvbCgpLGtuPVN5bWJvbCgpO2xldCBSbj0wO2NvbnN0IE5uPUFuLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1trc109ZTt0aGlzW1JzXT10O3RoaXNbeW5dPWk7dGhpc1tEbl09bnVsbDt0aGlzW1FuXT1bXTt0aGlzW3pzXT1gJHt0fSR7Um4rK31gO3RoaXNbQ3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnJ9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShyKT9yOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtrc109PT1Obj8tMTp0W2tzXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W1lyXShpKX10PWl9cmV0dXJuIGl9W0dzXShlKXtpZighdGhpc1t5bl18fCF0aGlzW01zXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbUnNdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzW0pzXShpKTt0aGlzW3RdPWU7dGhpc1tZcl0oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW1lyXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1JzXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtNc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtSc10pJiZlW2tzXT09PXRoaXNba3NdfVt5c10oKXtyZXR1cm4hMX1bSnJdKCl7cmV0dXJuITF9W2RzXSgpe3JldHVybiExfVtmc10oKXtyZXR1cm4hMX1bTHNdKCl7dGhpcy5wYXJhJiZ0aGlzW2hzXSgpW1pyXS5wYXJhU3RhY2sucG9wKCl9W0hzXSgpe3RoaXNbaHNdKClbWnJdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W1RzXShlKXt0aGlzLmlkJiZ0aGlzW2tzXT09PUFuLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtoc10oKXtyZXR1cm4gdGhpc1tDc10udGVtcGxhdGV9W3dzXSgpe3JldHVybiExfVtic10oKXtyZXR1cm4hMX1bWXJdKGUpe2VbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChlKTshZVtDc10mJnRoaXNbQ3NdJiYoZVtDc109dGhpc1tDc10pfVtKc10oZSl7Y29uc3QgdD10aGlzW1FuXS5pbmRleE9mKGUpO3RoaXNbUW5dLnNwbGljZSh0LDEpfVtCc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bT3NdKGUpe31bVXNdKGUpe31bX3JdKCl7fVtUcl0oZSl7ZGVsZXRlIHRoaXNbeW5dO2lmKHRoaXNbT3JdKXtlLmNsZWFuKHRoaXNbT3JdKTtkZWxldGUgdGhpc1tPcl19fVtFc10oZSl7cmV0dXJuIHRoaXNbUW5dLmluZGV4T2YoZSl9W3VzXShlLHQpe3RbRG5dPXRoaXM7dGhpc1tRbl0uc3BsaWNlKGUsMCx0KTshdFtDc10mJnRoaXNbQ3NdJiYodFtDc109dGhpc1tDc10pfVtEc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtTc10oKXtyZXR1cm4iIn1banNdKCl7cmV0dXJuIDA9PT10aGlzW1FuXS5sZW5ndGg/dGhpc1tqcl06dGhpc1tRbl0ubWFwKChlPT5lW2pzXSgpKSkuam9pbigiIil9Z2V0W0JuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxCbixlLl9hdHRyaWJ1dGVzKX1bbXNdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W2xzXSgpfXJldHVybiExfVtsc10oKXtyZXR1cm4gdGhpc1tEbl19W2NzXSgpe3JldHVybiB0aGlzW2xzXSgpfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbUW5dfVtWcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tqcl0mJihlLiRjb250ZW50PXRoaXNbanJdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbVnJdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bX3NdKCl7cmV0dXJuIG51bGx9W1ZzXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbZ3NdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tvc10oKSl5aWVsZCBlfSpbZm5dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tnc10oKSlpZighZXx8dD09PWUuaGFzKGlbUnNdKSl7Y29uc3QgZT10aGlzW2VzXSgpLHQ9aVtWc10oZSk7dC5zdWNjZXNzfHwodGhpc1tacl0uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W3pyXSgpe3JldHVybiBudWxsfVt2cl0oZSx0KXt0aGlzW1pyXS5jaGlsZHJlbi5wdXNoKGUpfVtlc10oKXt9W0tyXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW1pyXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tlc10oKSx0PXRoaXNbWnJdLmZhaWxpbmdOb2RlW1ZzXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbWnJdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tacl0uZ2VuZXJhdG9yPXRoaXNbZm5dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbWnJdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCl9dGhpc1tacl0uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W3FzXShlKXt0aGlzW1NuXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bbW5dKGUpe2NvbnN0IHQ9dGhpc1tCbl0saT10aGlzW1NuXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W1lzXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0paVtGbl0oZSx0KX1bRm5dKGUsdCl7Y29uc3QgaT10aGlzW3BuXShlLHQpO2k/dGhpc1tobl0oaSxlLHQpOnRoaXNbWXNdKGUsdCl9W3BuXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cz1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXI9ZS5nZXQobik7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQodnMpLHRoaXMscywhMCwhMSk7ciYmKHI9clswXSl9aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW1JzXSE9PXRoaXNbUnNdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbUnNdfSAhPT0gJHt0aGlzW1JzXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGc9cltwbl0oZSx0KTtnJiZyW2huXShnLGUsdCk7cltZc10oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1baG5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2pyXSYmZVtqcl0mJih0aGlzW2pyXT1lW2pyXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1ttbl0oZVtTbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tTbl0mJnRoaXNbU25dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tCbl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW1FuXSllW0ZuXSh0LGkpO2ZvcihsZXQgYT1yW1FuXS5sZW5ndGgsbj1zW1FuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcz1lW1FuXVthXVtQcl0oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChzKTtzW0ZuXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW1ByXSgpO2VbRG5dPXRoaXM7dGhpc1thXT1lO3RoaXNbUW5dLnB1c2goZSk7ZVtGbl0odCxpKX19ZWxzZXtyW1lzXSh0LGkpO3MmJnJbaG5dKHMsdCxpKX19fXN0YXRpY1tFbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtFbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bUHJdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVt6c109YCR7ZVtSc119JHtSbisrfWA7ZVtRbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbQm5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbRW5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVt3bl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pe2NvbnN0IGk9dFtSc10sYT10W1ByXSgpO2VbUW5dLnB1c2goYSk7YVtEbl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtRbl0ucHVzaChhKX1yZXR1cm4gZX1bb3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tRbl0uZmlsdGVyKCh0PT50W1JzXT09PWUpKTp0aGlzW1FuXX1bdHNdKGUpe3JldHVybiB0aGlzW2VdfVtpc10oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbYXNdKGUsdCxpKSl9Klthc10oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0pe2lbUnNdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtEc10oKSkmJih5aWVsZCppW2FzXShlLHQsITEpKX1pJiZ0aGlzW0JuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW0RuXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbd25dPWU7dGhpc1tRbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbUW5dLmxlbmd0aDw9dGhpc1t3bl0pe3RoaXNbUW5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW1JzXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1t3bl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tRbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbUW5dLmxlbmd0aD90aGlzW1FuXVswXVtWcl0oKTp0aGlzW1FuXS5tYXAoKGU9PmVbVnJdKCkpKX1bUHJdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1t3bl0pO2VbUW5dPXRoaXNbUW5dLm1hcCgoZT0+ZVtQcl0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW1FuXX1jbGVhcigpe3RoaXNbUW5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbRG5dPWU7dGhpc1tSc109dDt0aGlzW2pyXT1pO3RoaXNbV3JdPSExO3RoaXNbenNdPSJhdHRyaWJ1dGUiK1JuKyt9W2xzXSgpe3JldHVybiB0aGlzW0RuXX1bcHNdKCl7cmV0dXJuITB9W3JzXSgpe3JldHVybiB0aGlzW2pyXS50cmltKCl9W09zXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbanJdPWUudG9TdHJpbmcoKX1banNdKCl7cmV0dXJuIHRoaXNbanJdfVttc10oZSl7cmV0dXJuIHRoaXNbRG5dPT09ZXx8dGhpc1tEbl1bbXNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tqcl09IiI7dGhpc1t1bl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbQ25dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1pW05zXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3VuXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3VuXT0hMCkpfX10aGlzW1dyXT0hMX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1tSc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2pyXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNba3NdPT09Tm4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW0NuXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtqcl0pfSJgKX1udWxsIT09dGhpc1t1bl0mJih0aGlzW3VuXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tqcl18fDAhPT10aGlzW1FuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbanJdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbanJdKSk6dGhpc1tqcl1bWnNdKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pdFtac10oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtHc10oZSl7aWYodGhpc1tqcl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTt0aGlzW2pyXT0iIn10aGlzW1lyXShlKTtyZXR1cm4hMH1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXtpZih0aGlzW2pyXSYmdGhpc1tRbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTtkZWxldGUgdGhpc1tqcl19fVtWc10oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tSc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tqcl19KTpIVE1MUmVzdWx0LkVNUFRZfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW1FuXS5maWx0ZXIoKHQ9PnRbUnNdPT09ZSkpOnRoaXNbUW5dfVtBc10oKXtyZXR1cm4gdGhpc1tDbl19W3RzXShlKXtjb25zdCB0PXRoaXNbQ25dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbb3NdKGUpfSpbYXNdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbUW5dKXtpW1JzXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVthc10oZSx0KSl9fSpbJHJdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7IWl8fHQmJmlbV3JdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0peWllbGQqaVskcl0oZSx0KX0qW25zXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tRbl0pe2FbUnNdIT09ZXx8aSYmYVtXcl18fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtuc10oZSx0LGkpKX19W3BzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aHx8dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ6dGhpc1t1bl19W3JzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aD90aGlzW2pyXS50cmltKCk6dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ/dGhpc1tRbl1bMF1banNdKCkudHJpbSgpOm51bGw6dGhpc1tqcl0udHJpbSgpfVtPc10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2pyXT1lLnRvU3RyaW5nKCl9W1ZyXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNba3NdKTt0aGlzW2pyXSYmKHQuJGNvbnRlbnQ9dGhpc1tqcl0pO3QuJG5hbWU9dGhpc1tSc107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW1FuXSl0LmNoaWxkcmVuLnB1c2goaVtWcl0oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1tDbl0pdC5hdHRyaWJ1dGVzW2VdPWlbanJdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2pyXT0iIn1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1tibl09aX1bX3JdKCl7dGhpc1tqcl09Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2pyXSxkZWZhdWx0VmFsdWU6dGhpc1tibl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tibl0uaW5jbHVkZXMoZSl9KX1bVHJdKGUpe3N1cGVyW1RyXShlKTtkZWxldGUgdGhpc1tibl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW2RuXT1pO3RoaXNba25dPWF9W19yXSgpe3RoaXNbanJdPWdldEludGVnZXIoe2RhdGE6dGhpc1tqcl0sZGVmYXVsdFZhbHVlOnRoaXNbZG5dLHZhbGlkYXRlOnRoaXNba25dfSl9W1RyXShlKXtzdXBlcltUcl0oZSk7ZGVsZXRlIHRoaXNbZG5dO2RlbGV0ZSB0aGlzW2tuXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBHbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtjc10oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2xldCBhPWUudztjb25zdCByPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbWnJdLHI9ZS5jb2xTcGFuO2xldCBzO2lmKC0xPT09cil7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihzKXx8KGE9ZS53PXMpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW1JzXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bX3NdKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtjc10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHIscyl7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscik7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbeHNdKG4pO3JldHVybiBuLmNvbXB1dGUocyl9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHI9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG49MDtpZihlLm1hcmdpbil7cz1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW2hzXSgpO2xldCBpPWVbbHNdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW2xzXSgpfX1jb25zdCBsPShlLnd8fHQud2lkdGgpLXMsaD1lW0NzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtqcl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtqcl0sYyxnLG8saCxsKTthPXQud2lkdGg7aT10LmhlaWdodDtyPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbanNdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxsKTthPWUud2lkdGg7aT1lLmhlaWdodDtyPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46cn19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9ZS53O2lmKCIiPT09cil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2NzXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHI9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocil9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2NzXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHM9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhzKX1hPVtlLngsZS55LHIsc119cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbY3NdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W1pyXSxhPWUuY29sU3BhbjtsZXQgcjtyPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHIpfHwoZS53PXIpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoR24uaGFzT3duUHJvcGVydHkoYSkpR25bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtfc10oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6c309ZS5ib3JkZXJbWnJdO2xldCBuLG8sZz1zWzBdLGM9c1szXTtjb25zdCBsPXNbMF0rc1syXSxoPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLWx9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tbH1weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289bD9gY2FsYygxMDAlIC0gJHtsfXB4KWA6IjEwMCUifWNvbnN0IEM9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJkMucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpDLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHIuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtyLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtyLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gcn1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbaHNdKClbWnJdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbX3NdKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcj1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3J9ImA7Y29uc3Qgcz1pLmZpbmQocik7aWYocyl7Y29uc3R7Zm9udEZhbWlseTppfT1zLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXImJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscyk7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW1pyXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtacl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW1pyXS5jaGlsZHJlbn07aWYoZVtacl0uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVtacl0uZmFpbGluZ05vZGVbenJdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW1pyXSxyPWEuYXZhaWxhYmxlU3BhY2UsW3MsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscytvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4oci53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtacl0uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtacl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbWnJdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW1pyXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtacl0uY29sdW1uV2lkdGhzLnNsaWNlKGVbWnJdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbaHNdKClbWnJdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2NzXSgpLGE9aVtacl0/LmF0dGVtcHR8fDAsWyxyLHMsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLG5dPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxuXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxuXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Msbl09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Msbl09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxuXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstcywtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4sc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtzLG5dO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PWlbWnJdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW2JzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW2hzXSgpW1pyXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVt3c10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbYnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3I+ZVtoc10oKVtacl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBNbj1Bbi50ZW1wbGF0ZS5pZCxVbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhuPS9eSChcZCspJC8sTG49bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxIbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3NzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtZcl0odCk7ZS52YWx1ZT10fWUudmFsdWVbT3NdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbb3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtnc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWlmKGVbV3NdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW29zXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWNvbnN0IGk9ZVtoc10oKTtlW1dzXT0rK2lbV3NdO2NvbnN0IGE9aVtLc10odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVtWc10oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaCh4bik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtsc10oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tqcl0/dC5zcGVha1tqcl06dC50b29sVGlwP3QudG9vbFRpcFtqcl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO2lmKG51bGw9PT10W1pyXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtacl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W1pyXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO3RbWnJdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtacl0pcmV0dXJuITE7ZVtacl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW2hzXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFtLc10oZS50YXJnZXQsZVtsc10oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpyfT10W1pyXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbWnJdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW1pyXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHM9aSYmaVtsc10oKTtsZXQgbixvPXM7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YociksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocik7ZWxzZXtpZighaXx8aT09PXIpcmV0dXJuITE7bj1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXM9PT1hP251bGw6c31lW1pyXS50YXJnZXQ9bztlW1pyXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbaHNdKCkscj1hW1pyXS5ub0xheW91dEZhaWx1cmUscz10W2NzXTt0W2NzXT0oKT0+ZTthW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W1ZzXShpKTtlW3ZyXShuLmh0bWwsbi5iYm94KTthW1pyXS5ub0xheW91dEZhaWx1cmU9cjt0W2NzXT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtfc10oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW19zXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcj17eG1sbnM6VW4sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpVbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxzPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6VW4sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7c30gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihyLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnJ9O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3NdfSk7cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltnc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRHNdKCl7cmV0dXJuITB9W2ZzXSgpe3JldHVybiEwfVt2cl0oZSx0KXtjb25zdFtpLGEscixzXT10O3RoaXNbWnJdLndpZHRoPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoLGkrcik7dGhpc1tacl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCxhK3MpO3RoaXNbWnJdLmNoaWxkcmVuLnB1c2goZSl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5hdmFpbGFibGVTcGFjZX1bVnNdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1t6c10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1tacl09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCByPXRoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXIuc3VjY2Vzcyl7aWYoci5pc0JyZWFrKCkpcmV0dXJuIHI7ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tacl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW1pyXS5oZWlnaHQpO2NvbnN0IHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1tacl0ud2lkdGgsdGhpc1tacl0uaGVpZ2h0XTtkZWxldGUgdGhpc1tacl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bVnNdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2pyXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tqcl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc3NdKCl7aWYoIXRoaXNbWnJdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW1pyXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbWnJdfVtfc10oKXtjb25zdHtlZGdlczplfT10aGlzW3NzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbX3NdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltfc10oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW19zXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bVnNdKGUpe3RoaXNbWnJdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tsc10oKVtsc10oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbenNdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2pyXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbenNdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtPc10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NzXShlKXtpZighdGhpc1tacl0pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW1pyXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1tacl19W1ZzXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtWc10oZSkuaHRtbDtpZighdCl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbc3NdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbTHNdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHIscztjb25zdCBuPXRoaXNbbHNdKClbbHNdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVtWc10oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltqc10oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLGw9bltjc10oKSxoPW5benNdO2xldCBDO2lmKGwgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3M9bFt6c107YT0icmFkaW8iO3I9InhmYVJhZGlvIjtDPWxbWHJdPy5benNdfHxsW3pzXX1lbHNle2E9ImNoZWNrYm94IjtyPSJ4ZmFDaGVja2JveCI7Qz1uW1hyXT8uW3pzXXx8blt6c119Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6Qyx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07cyYmKFEuYXR0cmlidXRlcy5uYW1lPXMpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHI9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW1ZzXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3NdW1ZzXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5banNdKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3IucHVzaCh0KX1nfHxyLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBzPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVt6c10sZGF0YUlkOmlbWHJdPy5benNdfHxpW3pzXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtzWyJhcmlhLXJlcXVpcmVkIl09ITA7cy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYocy5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnIsYXR0cmlidXRlczpzfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEscl09dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnJ9O2NvbnN0IHM9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihzLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6cn07W2ksYSxyXT1zO3JldHVybntyOmksZzphLGI6cn19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W0JzXSgpe3JldHVybiExfVtfc10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1ZzXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbenNdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKTt0aGlzW2pyXT1lP25ldyBEYXRlKGUpOm51bGx9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2pyXS50cmltKCkpO3RoaXNbanJdPWlzTmFOKGUpP251bGw6ZX1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpyLGlzQnJva2VuOnN9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYocyYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXImJiIiPT09dGhpcy5oJiYodGhpcy5oPXIpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1t6c10sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgbD1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbVnNdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW19zXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtkc10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W0dzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVba3NdPT09QW4ueGh0bWwuaWQpe3RoaXNbanJdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbanJdPWU7cmV0dXJuITB9cmV0dXJuITF9W1ZzXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbanJdP3RoaXNbanJdW1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2ZzXSgpe3JldHVybiEwfVtCc10oKXtyZXR1cm4hMH1bT3NdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtZcl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbT3NdKGUpfX1bYnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJnRoaXNbWnJdLm51bWJlckluTGluZT4wfHx0aGlzW2xzXSgpW2JzXSgpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtacl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3pyXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W3ZyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtlc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1ZzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1t3c10oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCByPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tjc10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tacl0uY29sdW1uV2lkdGhzPWU7dGhpc1tacl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBzPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cztpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tIc10oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW1pyXS5hdHRlbXB0PGM7dGhpc1tacl0uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1tacl0uYXR0ZW1wdCYmKHRoaXNbWnJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbS3JdKHtmaWx0ZXI6cixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiYwPT09dGhpc1tacl0ubnVtYmVySW5MaW5lJiYhdGhpc1toc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW1pyXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbTHNdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW1pyXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGw9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2w9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBDPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK2wsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxDLFFdOyIiPT09dGhpcy53JiYocy53aWR0aD1tZWFzdXJlVG9TdHJpbmcoQykpOyIiPT09dGhpcy5oJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bZnNdKCl7cmV0dXJuITB9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtDc109dGhpc1tDc107dGhpc1tZcl0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtZcl0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW1pyXTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltWc10oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCByPTAscz0wO2lmKHRoaXMubWFyZ2luKXtyPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3M9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVtDc10uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxyPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHM9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpyKmEsbGluZUdhcDpzKmEsbGluZU5vR2FwOk1hdGgubWF4KDEsci1zKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbc3NdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnIsaDpzLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltzc10oZSk7aWYobiYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cjtpPXM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXI7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1zO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tMc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbenNdLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGw9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46bH07YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBDPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW19zXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW1ZzXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxDKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW1dzXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tXc106RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbV3NdKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLEMpfWVsc2UgT2JqZWN0LmFzc2lnbihvLEMpO2wucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW1ZzXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW2pzXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3NzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW1ZzXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3NzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bc3NdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtcy1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W19zXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PWVbbHNdKClbbHNdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscj1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3I9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cj0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcz10W19zXSh0aGlzLmNvbG9yKTtzJiYoaVtzLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPXMpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3JbX3NdKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tqcl0udHJpbSgpKTt0aGlzW2pyXT1pc05hTihlKT9udWxsOmV9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbanJdP3RoaXNbanJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzW0NzXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bX3NdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbQ3NdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtWc10oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhTG4uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tDc10uaW1hZ2VzJiZ0aGlzW0NzXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW2pyXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbanJdKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGldb2YgSG4paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGkpPT50PT09ZVtpXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWk7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBpO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6aT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmk9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmk9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbbHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6aSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtsc10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bVnNdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbanJdLnRyaW0oKSwxMCk7dGhpc1tqcl09aXNOYU4oZSk/bnVsbDplfVtWc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtWc10oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbb3NdKCkpZS5wdXNoKHRbanNdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtWc10oKXtjb25zdCBlPXRoaXNbbHNdKClbbHNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxpPXRbX3NdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPWkuY29sb3I7bGV0IHMsbixvLGcsYz0iMTAwJSIsbD0iMTAwJSI7aWYoZS53PD1yKXtbcyxuLG8sZ109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLG4sbyxnXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2w9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsbixvLGddPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsbixvLGddPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHgxOnMseTE6bix4MjpvLHkyOmcsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbix3aWR0aDpjLGhlaWdodDpsLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltfc10oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bX3JdKCl7dGhpc1tqcl09Z2V0U3RyaW5nT3B0aW9uKHRoaXNbanJdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoaS5sZW5ndGg8NHx8aVsyXTwwfHxpWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbYSxyLHMsbl09aTtyZXR1cm57eDphLHk6cix3aWR0aDpzLGhlaWdodDpufX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1RyXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NzXSgpe2lmKCF0aGlzW1pyXSl7Y29uc3QgZT10aGlzW2xzXSgpLHQ9dGhpc1toc10oKSxpPXRbS3NdKHRoaXMudGFyZ2V0LGUpLGE9dFtLc10odGhpcy5sZWFkZXIsZSkscj10W0tzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tacl09e3RhcmdldDppPy5bMF18fG51bGwsbGVhZGVyOmE/LlswXXx8bnVsbCx0cmFpbGVyOnI/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbWnJdfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtGc10oKXtpZighdGhpc1tacl0pe3RoaXNbWnJdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tacl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3FyXSgpe2RlbGV0ZSB0aGlzW1pyXX1bSXNdKCl7dGhpc1tacl18fCh0aGlzW1pyXT17bnVtYmVyT2ZVc2U6MH0pO2NvbnN0IGU9dGhpc1tsc10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbSXNdKCl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtWc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW1pyXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tacl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbWnJdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tLcl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t6c10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3FyXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtxcl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtxcl0oKX1bRnNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbWnJdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtJc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9KTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tacl0ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW1pyXS5wYWdlSW5kZXhdW0lzXSgpfWlmKHRoaXNbWnJdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbWnJdLnBhZ2VTZXRJbmRleF1bSXNdKCl9aWYodGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7dGhpc1tacl0ucGFnZUluZGV4PS0xO3RoaXNbWnJdLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbbHNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbSXNdKCk7dGhpc1txcl0oKTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbaHNdKClbWnJdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGk9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pKTtyZXR1cm4gYXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW19zXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiLGk9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2l9KHRvIHRvcCwke2F9KSAke2l9KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pICR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2l9KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7aX0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbX3NdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbX3NdKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6YS5yYWRpdXMscnk6YS5yYWRpdXMsc3R5bGU6aX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbixzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtyZXR1cm4gZT9lW19zXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtjc10oKXtjb25zdCBlPXRoaXNbbHNdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbY3NdKCk6ZX1bZnNdKCl7cmV0dXJuITB9W2JzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiZ0aGlzW1pyXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tsc10oKVtic10oKX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt6cl0oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVt2cl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bZXNdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbWnJdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW1pyXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtWc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtDc109dGhpc1tDc107dGhpc1tZcl0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0NzXT10aGlzW0NzXTt0aGlzW1lyXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbQ3NdPXRoaXNbQ3NdO3RoaXNbWXJdKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW0pzXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW1pyXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1toc10oKSxyPWFbWnJdLm5vTGF5b3V0RmFpbHVyZSxzPXRoaXNbd3NdKCk7c3x8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbj1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2NzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW1pyXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW1pyXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLGM9bGF5b3V0Q2xhc3ModGhpcyk7YyYmZy5wdXNoKGMpO2kuc3R5bGU9bztpLmNsYXNzPWc7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW0hzXSgpO2NvbnN0IGw9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsaD1sPzI6MTtmb3IoO3RoaXNbWnJdLmF0dGVtcHQ8aDt0aGlzW1pyXS5hdHRlbXB0Kyspe2wmJjE9PT10aGlzW1pyXS5hdHRlbXB0JiYodGhpc1tacl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tLcl0oe2ZpbHRlcjpuLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYobCYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJjA9PT10aGlzW1pyXS5udW1iZXJJbkxpbmUmJiFhW1pyXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbWnJdLmF0dGVtcHQ9aDticmVha319dGhpc1tMc10oKTtzfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2FbWnJdLm5vTGF5b3V0RmFpbHVyZT1yO2lmKHRoaXNbWnJdLmF0dGVtcHQ9PT1oKXt0aGlzLm92ZXJmbG93JiYodGhpc1toc10oKVtacl0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO3N8fGRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IEM9MCxRPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7UT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBFPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK0MsdGhpcy53fHwwKSx1PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtRLHRoaXMuaHx8MCksZD1bdGhpcy54LHRoaXMueSxFLHVdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoRSkpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHUpKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7Y29uc3QgcD1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGQpO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW1pyXS5hZnRlckJyZWFrQWZ0ZXI9cDtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gcH19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtjc10oKXtsZXQgZT10aGlzW2xzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtsc10oKTtyZXR1cm4gZX1bZnNdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe3RoaXNbanJdPW5ldyBNYXAodGhpc1tqcl0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bX3JdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1dzXT01ZTN9W3dzXSgpe3JldHVybiEwfVtLc10oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbUXNdLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltYc10oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tacl09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbcXJdKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4saT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IGE9bnVsbCxyPW51bGwscz1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9aWYocil7Y29uc3QgZT10aGlzW0tzXShzLHJbbHNdKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7YT1lO3JbWnJdPXt9fX1hfHwoYT10WzBdKTthW1pyXT17bnVtYmVyT2ZVc2U6MX07Y29uc3Qgbj1hW2xzXSgpO25bWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpuLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSkscGFnZVNldEluZGV4OjB9O2xldCBvLGc9bnVsbCxjPW51bGwsbD0hMCxoPTAsQz0wO2Zvcig7Oyl7aWYobCloPTA7ZWxzZXtpLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBpfX1vPW51bGw7dGhpc1tacl0uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW1ZzXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKHQpO2lmKGcpe3RoaXNbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZ1tWc10oYVtacl0uc3BhY2UpLmh0bWwpO2c9bnVsbH1pZihjKXt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbVnNdKGFbWnJdLnNwYWNlKS5odG1sKTtjPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2w9ITE7dGhpc1tacl0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGk9ZVt6cl0oKTtpZihpKXtsfHw9aS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGkpfX07Zm9yKGxldCB0PUMsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXNbWnJdLmN1cnJlbnRDb250ZW50QXJlYT1yW3RdLG49e3dpZHRoOmEudyxoZWlnaHQ6YS5ofTtDPTA7aWYoZyl7c1t0XS5jaGlsZHJlbi5wdXNoKGdbVnNdKG4pLmh0bWwpO2c9bnVsbH1pZihjKXtzW3RdLmNoaWxkcmVuLnB1c2goY1tWc10obikuaHRtbCk7Yz1udWxsfWNvbnN0IGg9ZVtWc10obik7aWYoaC5zdWNjZXNzKXtpZihoLmh0bWwpe2x8fD1oLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChoLmh0bWwpfWVsc2UhbCYmaS5jaGlsZHJlbi5sZW5ndGg+MSYmaS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gaX1pZihoLmlzQnJlYWsoKSl7Y29uc3QgZT1oLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2c9dGhpc1tLc10oZS5sZWFkZXIsZVtsc10oKSk7Zz1nP2dbMF06bnVsbH1pZihlLnRyYWlsZXIpe2M9dGhpc1tLc10oZS50cmFpbGVyLGVbbHNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW1pyXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW1pyXS50YXJnZXQpe289ZVtacl0udGFyZ2V0O0M9ZVtacl0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtacl0uaW5kZXh9ZWxzZSBpZih0aGlzW1pyXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tacl0ub3ZlcmZsb3dOb2RlO3RoaXNbWnJdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGk9ZVtzc10oKSxhPWkudGFyZ2V0O2kuYWRkTGVhZGVyPW51bGwhPT1pLmxlYWRlcjtpLmFkZFRyYWlsZXI9bnVsbCE9PWkudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoYSBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89YTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1yLmluZGV4T2YoYSk7aWYoLTEhPT1lKWU+cz90PWUtMTpDPWU7ZWxzZXtvPWFbbHNdKCk7Qz1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSl9fX1lbHNlIGZsdXNoKHQpfXRoaXNbWnJdLnBhZ2VOdW1iZXIrPTE7byYmKG9bRnNdKCk/b1tacl0ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTthPW98fGFbSXNdKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bSnJdKCl7cmV0dXJuITB9W0dzXShlKXtpZihlW2tzXT09PUFuLnhodG1sLmlkKXt0aGlzW2pyXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbUnNdfS5gKTtyZXR1cm4hMX1bVXNdKGUpe3RoaXNbanJdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW1VzXShlKX1bX3JdKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXSYmKHRoaXNbanJdPXRoaXNbanJdLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bc3NdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXT90aGlzW2pyXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pnt0JiZlLnB1c2godCk7cmV0dXJuIGV9KSxbXSkuam9pbigiXG4iKTp0aGlzW2pyXVtqc10oKX1bVnNdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tqcl0pLmh0bWw7aWYodGhpc1tqcl0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tqcl0pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW2pyXVtWc10oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgaTtjb25zdCBhPXRoaXNbbHNdKClbbHNdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBEcmF3PzE6MCk7aT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bRHNdKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3NzXSgpe2lmKHZvaWQgMD09PXRoaXNbWnJdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW1pyXT10O3JldHVybiB0fX10aGlzW1pyXT1udWxsfXJldHVybiB0aGlzW1pyXX1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tzc10oKTtyZXR1cm4gdD90W1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVtPc10oZSl7Y29uc3QgdD10aGlzW2xzXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbWXJdKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2VbanJdPWVbanJdO3JldHVybn1jb25zdCBpPWVbUnNdO2lmKG51bGw9PT10aGlzW2ldKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW0pzXSh0KX19dGhpc1tlW1JzXV09ZTt0aGlzW1lyXShlKX1lbHNlIHRoaXNbaV1banJdPWVbanJdfVtqc10oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW2pyXT90aGlzLmV4RGF0YVtqcl0udHJpbSgpOnRoaXMuZXhEYXRhW2pyXVtqc10oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W2pyXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVtWc10oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBpW1ZzXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtEc10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFRlbXBsYXRlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2lbcXNdKHQpO3JldHVybiBpfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IEpuPUFuLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtqcl09ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KEFuLmRhdGFzZXRzLmlkLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbb3NdKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlW1ByXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGkpe2VbWHJdPXQ7aWYoZVtCc10oKSlpZih0W3BzXSgpKXtjb25zdCBpPXRbcnNdKCk7ZVtPc10oY3JlYXRlVGV4dChpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBpPXRbb3NdKCkubWFwKChlPT5lW2pyXS50cmltKCkpKS5qb2luKCJcbiIpO2VbT3NdKGNyZWF0ZVRleHQoaSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W3BzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGksYSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHIscztmb3IobGV0IGE9MDthPDM7YSsrKXtyPWlbbnNdKGUsITEsITApO2Zvcig7Oyl7cz1yLm5leHQoKS52YWx1ZTtpZighcylicmVhaztpZih0PT09c1twc10oKSlyZXR1cm4gc31pZihpW2tzXT09PUFuLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1pW1JzXSlicmVhaztpPWlbbHNdKCl9aWYoIWEpcmV0dXJuIG51bGw7cj10aGlzLmRhdGFbbnNdKGUsITAsITEpO3M9ci5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztyPXRoaXMuZGF0YVskcl0oZSwhMCk7cz1yLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW3BzXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjppLHRhcmdldDphLGNvbm5lY3Rpb246cn1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihyKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IHM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZighcyl7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCk7Y29udGludWV9Y29uc3Rbbl09cztpZighblttc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxhLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbZ109bztpZighZ1ttc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgYz1nW2xzXSgpO2lmKGcgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8YyBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGcgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGMgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGw9bltqc10oKSxoPWdbUnNdO2lmKGcgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2hdPWw7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYykuY29uc3RydWN0b3IsW2VdKTtjW2hdPXRbaF19ZWxzZSBpZihnLmhhc093blByb3BlcnR5KGpyKSl7Z1tYcl09bjtnW2pyXT1sO2dbX3JdKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtKc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGk9bmV3IEl0ZW1zKHt9KSxhPW5ldyBJdGVtcyh7fSk7ZVtZcl0oaSk7ZS5pdGVtcy5wdXNoKGkpO2VbWXJdKGEpO2UuaXRlbXMucHVzaChhKTtmb3IoY29uc3R7cmVmOnIsbGFiZWxSZWY6cyx2YWx1ZVJlZjpuLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighciljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFttc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3J9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGc9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtufS5gKTtjb250aW51ZX1jb25zdFtjXT1nO2lmKCFjW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGw9Y3JlYXRlVGV4dChvW2pzXSgpKSxoPWNyZWF0ZVRleHQoY1tqc10oKSk7aVtZcl0obCk7aS50ZXh0LnB1c2gobCk7YVtZcl0oaCk7YS50ZXh0LnB1c2goaCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtyfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsaSl7bGV0IGE7aWYodC5sZW5ndGg+MSl7YT1lW1ByXSgpO2FbSnNdKGEub2NjdXIpO2Eub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVtsc10oKSxzPWVbUnNdLG49cltFc10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sZz1hW1ByXSgpO3Jbc10ucHVzaChnKTtyW3VzXShuK2UsZyk7dGhpcy5fYmluZFZhbHVlKGcsbyxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGcsbyk7dGhpcy5fYmluZEl0ZW1zKGcsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGk9ZVtsc10oKSxhPWVbUnNdO2lmKCEoaVthXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcjtyPWUubmFtZT9pW2FdLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmlbYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9aVtFc10oZSkrMSxuPXQuaW5pdGlhbC1yO2lmKG4pe2NvbnN0IHQ9ZVtQcl0oKTt0W0pzXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7aVthXS5wdXNoKHQpO2lbdXNdKHMsdCk7Zm9yKGxldCBlPTE7ZTxuO2UrKyl7Y29uc3Qgcj10W1ByXSgpO2lbYV0ucHVzaChyKTtpW3VzXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjppfT1lO2lmKCFpfHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09aS5tYXg/MS8wOmkubWF4O3JldHVybltpLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGk9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtvc10oKSl7aWYoYVtYcl0pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW1JzXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbb3NdKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtrc109PT1Kbj8tMTp0W2tzXSxpPWFbWHJdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtZcl0oaSk7dGhpcy5fYmluZEVsZW1lbnQoYSxpKX1jb250aW51ZX1pZighYVtmc10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLG49bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtSc119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2pyXSl9Y29uc3RbbyxnXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7bj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1uKXtuPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFuKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG5bV3JdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYobj1uLmZpbHRlcigoZT0+IWVbV3JdKSkpO24ubGVuZ3RoPmc/bj1uLnNsaWNlKDAsZyk6MD09PW4ubGVuZ3RoJiYobj1udWxsKTtuJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJm4uZm9yRWFjaCgoZT0+e2VbV3JdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgaT1bXTtmb3IoO2kubGVuZ3RoPGc7KXtjb25zdCByPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW0JzXSgpLHQsZSk7aWYoIXIpYnJlYWs7cltXcl09ITA7aS5wdXNoKHIpfW49aS5sZW5ndGg+MD9pOm51bGx9ZWxzZXtuPXRbbnNdKGEubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighbil7aWYoMD09PW8pe2kucHVzaChhKTtjb250aW51ZX1jb25zdCBlPXRba3NdPT09Sm4/LTE6dFtrc107bj1hW1hyXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihuW1dyXT0hMCk7dFtZcl0obik7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKG5bV3JdPSEwKTtuPVtuXX19bj90aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxuLHIpOm8+MD90aGlzLl9zZXRBbmRCaW5kKGEsdCk6aS5wdXNoKGEpfWkuZm9yRWFjaCgoZT0+ZVtsc10oKVtKc10oZSkpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtvc10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5hdCgtMSksW2Escl09aTtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytpWzBdXSxuPWUuZ2V0KHNbenNdKTtpZihuKXNbT3NdKG4pO2Vsc2V7Y29uc3QgdD1zW0FzXSgpO2Zvcihjb25zdCBpIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoaVt6c10pO2lmKHQpe2lbT3NdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW29zXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IGk9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W29zXSgpKSJkYXRhIiE9PWVbUnNdJiZlW1pzXShpKTt0aGlzLmRhdGFbWnNdKGkpO2kucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGkuam9pbigiIil9fWNvbnN0IHZuPUFuLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYmVoYXZpb3JPdmVycmlkZSIpfVtfcl0oKXt0aGlzW2pyXT1uZXcgTWFwKHRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxpPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IGEgb2YgaS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXthPWEuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT9wYXJzZUludChpWzFdLDE2KTowfSkpOzE9PT1hLmxlbmd0aCYmYS5wdXNoKGFbMF0pO2UucHVzaChhKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJleGNsdWRlIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwYWNrZXRzIil9W19yXSgpeyIqIiE9PXRoaXNbanJdJiYodGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnZVJhbmdlIil9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0yKXQucHVzaChlLnNsaWNlKGksaSsyKSk7dGhpc1tqcl09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJyYW5nZSIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInJlY29yZCIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW2pyXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tqcl09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVsZXZhbnQiKX1bX3JdKCl7dGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuYW1lIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKTsodGhpc1tqcl0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tqcl0pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRhZ2dlZCIpfX1jbGFzcyBjb25maWdfVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ1cmkiKX19Y2xhc3MgY29uZmlnX1ZhbGlkYXRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIndpbmRvdyIpfVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW2pyXT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbanJdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInhkYyIsITApO3RoaXMudXJpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IFluPUFuLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgS249QW4uZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YSIsZSl9W3lzXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtHc10oZSl7Y29uc3QgdD1lW1JzXTsoImRhdGEiPT09dCYmZVtrc109PT1Lbnx8IlNpZ25hdHVyZSI9PT10JiZlW2tzXT09PUFuLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbWXJdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgZGF0YXNldHNfRGF0YShlKX19Y29uc3QgVG49QW4ubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBDdXJyZW5jeVN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm5zIiwhMCk7dGhpcy5kYXRlUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBEYXkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJlcmFOYW1lcyIsITApO3RoaXMuZXJhPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibG9jYWxlU2V0IiwhMCk7dGhpcy5sb2NhbGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW0iKX19Y2xhc3MgTWVyaWRpZW1OYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBNb250aCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IFhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclBhdHRlcm5zIiwhMCk7dGhpcy5udW1iZXJQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJudW1iZXJTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE51bWJlclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIFRpbWVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0eXBlRmFjZXMiLCEwKTt0aGlzLnR5cGVGYWNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3QgcW49QW4uc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBPbj1Bbi5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fWNvbnN0IFBuPUFuLnhkcC5pZDtjbGFzcyB4ZHBfWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGVtcGxhdGU9bnVsbH1bTXNdKGUpe2NvbnN0IHQ9QW5bZVtSc11dO3JldHVybiB0JiZlW2tzXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IFduPUFuLnhodG1sLmlkLGpuPVN5bWJvbCgpLFhuPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksVm49bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLFpuPS9ccysvZyxfbj0vW1xyXG5dKy9nLHpuPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1Wbi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPWk7ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09c31hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnIuZm9udFNpemV8fDB9LHQsdFtDc10uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgJG49bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoV24sdCk7dGhpc1tqbl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtDc10udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIFhuLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bSnJdKCl7cmV0dXJuISRuLmhhcyh0aGlzW1JzXSl9W1VzXShlLHQ9ITEpe2lmKHQpdGhpc1tqbl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChfbiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoWm4sIiAiKSl9ZSYmKHRoaXNbanJdKz1lKX1beHNdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCByPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnI9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscik7aWYodGhpc1tqcl0pZS5hZGRTdHJpbmcodGhpc1tqcl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tvc10oKSkiI3RleHQiIT09dFtSc10/dFt4c10oZSk6ZS5hZGRTdHJpbmcodFtqcl0pO3QmJmUucG9wRm9udCgpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbanJdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1tqbl0/dGhpc1tqcl0/dGhpc1tqcl0ucmVwbGFjZUFsbCh6biwiXG4iKTp2b2lkIDA6dGhpc1tqcl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbUnNdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW2puXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3hzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtWc10oZSl7Y29uc3QgdD1zdXBlcltWc10oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W2pzXSgpe3JldHVybiJcbiJ9W3hzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bVnNdKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2pyXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3hzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1beHNdKGUpe3N1cGVyW3hzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1banNdKCl7cmV0dXJuIHRoaXNbbHNdKClbb3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltqc10oKTpzdXBlcltqc10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBBbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bJHNdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW1FzXT1lfVtHc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W19yXSgpe3N1cGVyW19yXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW1FzXS5zZXQodnMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWXNdKHRoaXNbUXNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbUXNdPXRoaXNbUXNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bR3NdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhBbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSl7Y29uc3Qgcz1udWxsIT09YTtpZihzKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXImJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChyKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1Bby5kYXRhc2V0cyx0PWlbTnNdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/aVtOc109YTpkZWxldGUgaVtOc119Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Llskc10odCxpKXx8bmV3IEVtcHR5O29beXNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW3lzXSgpKSYmKG9bT3JdPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1t5c10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKEFuKSlpZihhKGUpKXt0PUFvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09RHIpe3RoaXMuX2N1cnJlbnRbX3JdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W0pyXSgpP3RoaXMuX2N1cnJlbnRbVXNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtVc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtVc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXMpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109bjtlbHNle2xldCB0PXJbTnNdO3R8fCh0PXJbTnNdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Muc2xpY2UoMCxlKSxzLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxyXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pO2dbQ3NdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tfcl0oKTt0aGlzLl9jdXJyZW50W0dzXShnKSYmZ1tUc10odGhpcy5faWRzKTtnW1RyXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbZHNdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtqcl0pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbanJdKTt0W2pyXT1udWxsO3RbR3NdKGkpfXRbX3JdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W0dzXSh0KSYmdFtUc10odGhpcy5faWRzKTt0W1RyXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1bQ3NdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW1hzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW0NzXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bQ3NdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW0NzXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVtDc10uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW0NzXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbUnNdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW1lyXSh0KTt0PWV9Y29uc3QgaT10W1ZzXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmKHIuY2xhc3M9ci5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3IuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W2pzXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpyLGF0dGFjaG1lbnRzOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHIscyxuKXtjb25zdCBvPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixzLG8sbl0pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsLG89bnVsbCl7Y29uc3QgZz1lLmZldGNoSWZSZWYodCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmMscGRmTWFuYWdlcjpsfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IEM9Zy5nZXQoIlN1YnR5cGUiKTtDPUMgaW5zdGFuY2VvZiBOYW1lP0MubmFtZTpudWxsO2NvbnN0IFE9e3hyZWY6ZSxyZWY6dCxkaWN0Omcsc3VidHlwZTpDLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsb3JwaGFuRmllbGRzOnMsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWMuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6bixldmFsdWF0b3JPcHRpb25zOmwuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChDKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oUSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Omcsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oUSk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oUSl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKFEpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihRKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKFEpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKFEpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKFEpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oUSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihRKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKFEpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKFEpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oUSk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oUSk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oUSk7ZGVmYXVsdDpyfHx3YXJuKEM/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke0N9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihRKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2NvbnN0IHM9ZS54cmVmO2xldCBuO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjppZighbil7Y29uc3QgZT1uZXcgRGljdChzKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO249cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChuLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpufSkpO2JyZWFrO2Nhc2UgcDpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIpKTticmVhaztjYXNlIHk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpO2JyZWFrO2Nhc2UgbTpjb25zdCBpPWc/YXdhaXQoYT8uZ2V0KGMuYml0bWFwSWQpKTpudWxsO2lmKGk/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWk7aWYodCl7Y29uc3QgaT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixpKX1jb25zdCBhPWkuaW1hZ2VSZWY9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChhLHtkYXRhOmV9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pfX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cyx4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHA6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06Y29uc3QgYT1zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkP2F3YWl0KHI/LmdldChnLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLGwsaF09aS5zbGljZShlLGUrOCksQz1NYXRoLm1pbihyLG4sZyxsKSxRPU1hdGgubWF4KHIsbixnLGwpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKEM8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW0MsdSxRLHUsQyxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YSxyZWY6cixvcnBoYW5GaWVsZHM6c309ZSxuPXM/LmdldChyKTtuJiZ0LnNldCgiUGFyZW50IixuKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBnPSEhKHRoaXMuZmxhZ3MmaUEpLGM9ISEodGhpcy5mbGFncyZhQSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZlQSksbm9IVE1MOmcmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWk9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgbD10LmdldCgiSVQiKTtsIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1sLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczppfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2kmfkFBOmkmfiR8QUF9aWYoZSl7aXw9QUE7cmV0dXJuIHQ/aSZ+dEF8JDppJn4kfHRBfWkmPX4oJHx0QSk7cmV0dXJuIHQ/aSZ+QUE6aXxBQX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHopJiYhdGhpcy5faGFzRmxhZyhlLHRBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxBQSkmJiF0aGlzLl9oYXNGbGFnKGUsJCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsJCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCByPWkuZ2V0KGEubmFtZSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGkscil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgZz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShzJiZpJmMpO2lmKGwmJihvWzBdPT09b1syXXx8b1sxXT09PW9bM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFnKXtpZighbClyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtnPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2cuZGljdD1uZXcgRGljdH1jb25zdCBoPWcuZGljdCxDPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0sZyksUT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLEU9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHU9Z2V0VHJhbnNmb3JtTWF0cml4KG8sUSxFKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGY7dGhpcy5vYyYmKGY9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1mJiZkLmFkZE9wKEtlLFsiT0MiLGZdKTtkLmFkZE9wKFZlLFtuLG8sdSxFLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmcsdGFzazp0LHJlc291cmNlczpDLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoWmUsW10pO3ZvaWQgMCE9PWYmJmQuYWRkT3AoVGUsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fWFzeW5jIHNhdmUoZSx0LGksYSl7cmV0dXJuIG51bGx9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxpKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCBhPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSkscj1bXSxzPVtdO2xldCBuPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7bnx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtzLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO3MubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczphLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94Oml9KTt0aGlzLnJlc2V0KCk7cy5sZW5ndGgmJnIucHVzaChzLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYoci5sZW5ndGg+MXx8clswXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdCx0PWxvb2t1cFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpLGk9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQobix0LGkpO3RoaXMuZGF0YS50ZXh0Q29udGVudD1yfX1fdHJhbnNmb3JtUG9pbnQoZSx0LGkpe2NvbnN0e3JlY3Q6YX09dGhpcy5kYXRhO3R8fD1bMCwwLDEsMV07aXx8PVsxLDAsMCwxLDAsMF07Y29uc3Qgcj1nZXRUcmFuc2Zvcm1NYXRyaXgoYSx0LGkpO3JbNF0tPWFbMF07cls1XS09YVsxXTtlPVV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxyKTtyZXR1cm4gVXRpbC5hcHBseVRyYW5zZm9ybShlLGkpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50Iikpe3dhcm4oIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSkpO2xldCBpPWU7Y29uc3QgYT1uZXcgUmVmU2V0O2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2Zvcig7aS5oYXMoIlBhcmVudCIpOyl7aT1pLmdldCgiUGFyZW50Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCl8fGkub2JqSWQmJmEuaGFzKGkub2JqSWQpKWJyZWFrO2kub2JqSWQmJmEucHV0KGkub2JqSWQpO2kuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiVCIpKSl9cmV0dXJuIHQuam9pbigiLiIpfX1jbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTE7dGhpcy5yYXdXaWR0aD0xO3RoaXMuc3R5bGU9UUE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dGhpcy5yYXdXaWR0aD1lO2NvbnN0IGk9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7aWYoaT4wJiZhPjAmJihlPml8fGU+YSkpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1RQTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9RUE7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXVBO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1kQTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ZkF9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBpPSEwLGE9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2k9ITE7YnJlYWt9dD4wJiYoYT0hMSl9aWYoMD09PWUubGVuZ3RofHxpJiYhYSl7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgaT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWkgaW5zdGFuY2VvZiBOYW1lP2kubmFtZTpffWxldCBpPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PVope2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTtpPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWkgaW5zdGFuY2VvZiBSZWY/aS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6aSxmaWxsQ29sb3I6YSxibGVuZE1vZGU6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOm99KXtsZXQgZz1OdW1iZXIuTUFYX1ZBTFVFLGM9TnVtYmVyLk1BWF9WQUxVRSxsPU51bWJlci5NSU5fVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO2NvbnN0IEM9WyJxIl07dCYmQy5wdXNoKHQpO2kmJkMucHVzaChgJHtpWzBdfSAke2lbMV19ICR7aVsyXX0gUkdgKTthJiZDLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IHJnYCk7Y29uc3QgUT10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1RLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3RbdCxpLGEscl09byhDLFEuc3ViYXJyYXkoZSxlKzgpKTtnPU1hdGgubWluKGcsdCk7bD1NYXRoLm1heChsLGkpO2M9TWF0aC5taW4oYyxhKTtoPU1hdGgubWF4KGgscil9Qy5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oQy5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7ciYmZi5zZXQoIkJNIixOYW1lLmdldChyKSk7Im51bWJlciI9PXR5cGVvZiBzJiZmLnNldCgiQ0EiLHMpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLGwsaF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBuO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtpLnB1dChhLHtkYXRhOnN9KX1lbHNlIG49dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJm4uc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtpLnB1dChyLHtkYXRhOm59KTtyZXR1cm57cmVmOnJ9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oaSx0LGEpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KGksdCxyP3thcDpyfTp7fSksbj1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cyx4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOmEuZXZhbHVhdG9yT3B0aW9uc30pO2kucmVmJiYobi5yZWY9bi5yZWZUb1JlcGxhY2U9aS5yZWYpO3JldHVybiBufX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3IuYW5ub3RhdGlvblR5cGU9Vjt2b2lkIDA9PT1yLmZpZWxkTmFtZSYmKHIuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09ci5hY3Rpb25zJiYoci5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksdCxwQSkpO2xldCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7ci5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShzKTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO3IuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2lmKHZvaWQgMD09PXMmJmEueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtyLmZpZWxkVmFsdWU9cz1hLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1zJiZudWxsIT09ci5kZWZhdWx0RmllbGRWYWx1ZSYmKHIuZmllbGRWYWx1ZT1yLmRlZmF1bHRGaWVsZFZhbHVlKTtyLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7ci5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1yLmZpZWxkVmFsdWUmJm51bGwhPT1yLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtyLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBnPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGM9YS5hY3JvRm9ybS5nZXQoIkRSIiksbD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6ZyxhY3JvRm9ybVJlc291cmNlczpjLGFwcGVhcmFuY2VSZXNvdXJjZXM6bCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbZyxsLGNdLG1lcmdlU3ViRGljdHM6ITB9KX07ci5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyLmZpZWxkRmxhZ3MpfHxyLmZpZWxkRmxhZ3M8MCkmJihyLmZpZWxkRmxhZ3M9MCk7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyQSk7ci5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhzQSk7ci5oaWRkZW49dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncywkKXx8dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyx0QSl9X2RlY29kZUZvcm1WYWx1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZT0+InN0cmluZyI9PXR5cGVvZiBlKSkubWFwKChlPT5zdHJpbmdUb1BERlN0cmluZyhlKSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsdEEpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gYTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpe2lmKGkmQyYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpO2NvbnN0IHI9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaSxhKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1yKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGksYSk7Y29uc3Qgcz1uZXcgT3BlcmF0b3JMaXN0O2lmKCF0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8bnVsbD09PXIpcmV0dXJue29wTGlzdDpzLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Y29uc3Qgbj0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZpJmMpLG89WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZz1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKTtsZXQgbDt0aGlzLm9jJiYobD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWwmJnMuYWRkT3AoS2UsWyJPQyIsbF0pO3MuYWRkT3AoVmUsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxnLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksbl0pO2NvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnN9KTtzLmFkZE9wKFplLFtdKTt2b2lkIDAhPT1sJiZzLmFkZE9wKFRlLFtdKTtyZXR1cm57b3BMaXN0OnMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOm59fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsaSxhKXtjb25zdHtkaWN0OnIscmVmOnN9PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxpKXtjb25zdCBhPW5ldyBSZWZTZXQscj1lLHM9e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIWEuaGFzKHQpOyl7YS5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHM7ZT1pLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09cil7cy5kaWN0PWU7cy5yZWY9dH1yZXR1cm4gc30oZSx0aGlzLnJlZixpKTtpZihyKXtpZighYS5oYXMocykpe2NvbnN0IGU9ci5jbG9uZSgpO2Uuc2V0KCJWIix0KTthLnB1dChzLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsaSxyKXtjb25zdCBzPWk/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IG89cz8udmFsdWUsZz1zPy5yb3RhdGlvbjtpZihvPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PW8pe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWcmJnZvaWQgMD09PW4pcmV0dXJuO298fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1nJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KG8pJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKG8sdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1nJiYoZz10aGlzLnJvdGF0aW9uKTtsZXQgYz1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2M9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaCxpKTtpZihudWxsPT09YyYmdm9pZCAwPT09bilyZXR1cm59bGV0IGw9ITE7aWYoYz8ubmVlZEFwcGVhcmFuY2VzKXtsPSEwO2M9bnVsbH1jb25zdHt4cmVmOkN9PWUsUT1DLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoUSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBFPW5ldyBEaWN0KEMpO2Zvcihjb25zdCBlIG9mIFEuZ2V0S2V5cygpKSJBUCIhPT1lJiZFLnNldChlLFEuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtFLnNldCgiRiIsbik7aWYobnVsbD09PWMmJiFsKXtjb25zdCBlPVEuZ2V0UmF3KCJBUCIpO2UmJkUuc2V0KCJBUCIsZSl9fWNvbnN0IHU9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvfSxkPXRoaXMuc2V0VmFsdWUoRSxBcnJheS5pc0FycmF5KG8pP28ubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUobyksQyxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGksZHx8RSk7Y29uc3QgZj10aGlzLl9nZXRNS0RpY3QoZyk7ZiYmRS5zZXQoIk1LIixmKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpFLHhmYTp1LG5lZWRBcHBlYXJhbmNlczpsfSk7aWYobnVsbCE9PWMpe2NvbnN0IGU9Qy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KEMpO0Uuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHM9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKEMpLG49bmV3IFN0cmluZ1N0cmVhbShjKSxvPW4uZGljdD1uZXcgRGljdChDKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7by5zZXQoIlJlc291cmNlcyIscyk7by5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSk7ZyE9PWEmJm8uc2V0KCJNYXRyaXgiLGcpO3IucHV0KGUse2RhdGE6bix4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KX1FLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCl9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGksYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcob0EpKXJldHVybiBudWxsO2NvbnN0IHI9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbjtpZihyKXtzPXIuZm9ybWF0dGVkVmFsdWV8fHIudmFsdWU7bj1yLnJvdGF0aW9ufWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGc9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoYSk7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2A7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IGMsbD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTtsPWMubGVuZ3RofWVsc2UgYz1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldCBDPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLFE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1uJiYyNzAhPT1ufHwoW1EsQ109W0MsUV0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2xldCBFLHUsZCxmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y29uc3QgcD1bXTtsZXQgbT0hMTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PWYuZW5jb2RlU3RyaW5nKGUpO3QubGVuZ3RoPjEmJihtPSEwKTtwLnB1c2godC5qb2luKCIiKSl9aWYobSYmaSZoKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKG0mJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixhPW5ldyBGYWtlVW5pY29kZUZvbnQoZS54cmVmLGkpLHI9YS5jcmVhdGVGb250UmVzb3VyY2VzKGMuam9pbigiIikpLG49ci5nZXRSYXcoIkZvbnQiKTtpZih0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuaGFzKCJGb250Iikpe2NvbnN0IGU9dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmdldCgiRm9udCIpO2Zvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKWUuc2V0KHQsbi5nZXRSYXcodCkpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsbik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Zj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXBbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9Z31lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpfWxldCB5PWYuZGVzY2VudDt5PWlzTmFOKHkpP28qZDpNYXRoLm1heChvKmQsTWF0aC5hYnMoeSkqdSk7Y29uc3Qgdz1NYXRoLm1pbihNYXRoLmZsb29yKChDLXUpLzIpLDEpLGI9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShFLHAsZix1LFEsQyxiLDIsdyx5LGQsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKEUsZixwWzBdLHUsUSxDLDIsdyx5LGQsYSk7Y29uc3QgRD13K3k7aWYoMD09PWJ8fGI+MilyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcoRCl9IFRtICgke2VzY2FwZVN0cmluZyhwWzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQocFswXSxmLHUsUSxiLHtzaGlmdDowfSwyLEQpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsaSxhKXtjb25zdCByPW5ldyBPcGVyYXRvckxpc3Qscz17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6bixmb250U2l6ZTpvfT1pO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChhLFtuJiZOYW1lLmdldChuKSxvXSxudWxsLHIsdCxzLG51bGwpO3JldHVybiBzLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsaSxhLHIpe2xldHtmb250U2l6ZTpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KG58fDEyKSpzLGc9TWF0aC5yb3VuZChlL28pO2lmKCFuKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgoaSxhKTtuPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3MsdC9yKSk7Zz0xfWVsc2V7Y29uc3QgYz1pLnNwbGl0KC9cclxuP3xcbi8pLGw9W107Zm9yKGNvbnN0IGUgb2YgYyl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxpPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtsLnB1c2goe2xpbmU6dCxnbHlwaHM6aSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWk9PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIGwpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsaSx0LHMpLmxlbmd0aCppO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Zz1NYXRoLm1heChnLHIpO2Zvcig7Oyl7bz1lL2c7bj1yb3VuZFdpdGhUd29EaWdpdHMoby9zKTtpZighaXNUb29CaWcobikpYnJlYWs7ZysrfX1jb25zdHtmb250TmFtZTpjLGZvbnRDb2xvcjpsfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOml9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGksITApfWB9KHtmb250U2l6ZTpuLGZvbnROYW1lOmMsZm9udENvbG9yOmx9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbixlL2ddfV9yZW5kZXJUZXh0KGUsdCxpLGEscixzLG4sbyl7bGV0IGc7aWYoMT09PXIpe2c9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaSkvMn1lbHNlIGlmKDI9PT1yKXtnPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaS1ufWVsc2UgZz1uO2NvbnN0IGM9bnVtYmVyVG9TdHJpbmcoZy1zLnNoaWZ0KTtzLnNoaWZ0PWc7cmV0dXJuYCR7Y30gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6aSxhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsaV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9YS5nZXQoIkZvbnQiKTtpZihpIGluc3RhbmNlb2YgRGljdCYmaS5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixpLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9JDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpKXx8aTwwfHxpPjIpJiYoaT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1pO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhCQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhsQSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhDQSl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCl7Y29uc3QgaD1yL3RoaXMuZGF0YS5tYXhMZW4sQz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhsKSxRPVtdLEU9dC5nZXRDaGFyUG9zaXRpb25zKGkpO2Zvcihjb25zdFtlLHRdb2YgRSlRLnB1c2goYCgke2VzY2FwZVN0cmluZyhpLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgdT1RLmpvaW4oYCAke251bWJlclRvU3RyaW5nKGgpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtDfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhuKX0gJHtudW1iZXJUb1N0cmluZyhvK2cpfSBUbSAke3V9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLGwsaCl7Y29uc3QgQz1bXSxRPXItMipvLEU9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHMsaSxhLFEpO2ZvcihsZXQgdD0wLHM9aC5sZW5ndGg7dDxzO3QrKyl7Y29uc3Qgcz1oW3RdLFE9MD09PWUmJjA9PT10Py1nLShsLWMpOi1sO0MucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHMsaSxhLHIsbixFLG8sUSkpfX1jb25zdCB1PXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGQ9Qy5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHt1fUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHMpfSBUbSAke2R9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxpLGEscj17fSl7ZT1yLmxpbmV8fGU7Y29uc3Qgcz1yLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHMubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBuPXIucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1pLzFlMyxnPVtdO2xldCBjPS0xLGw9LTEsaD0tMSxDPTAsUT0wO2ZvcihsZXQgdD0wLGk9cy5sZW5ndGg7dDxpO3QrKyl7Y29uc3RbaSxyXT1uW3RdLEU9c1t0XSx1PUUud2lkdGgqbztpZigiICI9PT1FLnVuaWNvZGUpaWYoUSt1PmEpe2cucHVzaChlLnN1YnN0cmluZyhDLGkpKTtDPWk7UT11O2M9LTE7aD0tMX1lbHNle1ErPXU7Yz1pO2w9cjtoPXR9ZWxzZSBpZihRK3U+YSlpZigtMSE9PWMpe2cucHVzaChlLnN1YnN0cmluZyhDLGwpKTtDPWw7dD1oKzE7Yz0tMTtRPTB9ZWxzZXtnLnB1c2goZS5zdWJzdHJpbmcoQyxpKSk7Qz1pO1E9dX1lbHNlIFErPXV9QzxlLmxlbmd0aCYmZy5wdXNoKGUuc3Vic3RyaW5nKEMsZS5sZW5ndGgpKTtyZXR1cm4gZ31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsaSk7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHI9YS5qb2luKCJcbiIpO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcz1yLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIikpO25ldyBSZWdFeHAoYF5cXHMqJHtzfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhvQSksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhJQSk7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLCExLHIpO2xldCBzPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIpO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgbz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKG8pe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGc9bG9va3VwTWF0cml4KG8uZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7biYmby5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpKTt0aGlzLmFwcGVhcmFuY2U9bztjb25zdCBjPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyKTt0aGlzLmFwcGVhcmFuY2U9cztvLmRpY3Quc2V0KCJNYXRyaXgiLGcpO3JldHVybiBjfXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGksYSl7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsaSxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24mJnRoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsaSxhKX1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTt0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKTtvJiZ0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHI9WzAsMCxpLGFdLHM9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnMsaGVpZ2h0Oi43MDUqc307bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnMsaGVpZ2h0Oi43MDUqc307bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtzfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2wuc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixsKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHI9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHM9aS5nZXRLZXlzKCk7aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKChlPT4iT2ZmIiE9PWUpKTtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixlKX1zLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9c1sxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHI9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I6bnVsbDtjb25zdCBzPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoY0EpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhoQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpO2xldCByLG47Y29uc3Qgbz1hPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cj1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXImJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cj9yPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgbD10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgQz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvbDtsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxDKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LEMsLTEpfWNvbnN0IHU9RSpzLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxsKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LEMsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TjtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1HO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ajt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksWikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZXZhbHVhdG9yT3B0aW9uczp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6YX09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGkpLnBhcnNlKCl9KHRoaXMuYXBwZWFyYW5jZSx0LGkpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUudHJpbUVuZCgpKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDppfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxpKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1lLmRpY3QuZ2V0KCJDQSIpLHM9bmV3IEZha2VVbmljb2RlRm9udChpLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPXMuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhLHQscik7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLGZvbnRTaXplOnMsb2xkQW5ub3RhdGlvbjpuLHJlY3Q6byxyb3RhdGlvbjpnLHVzZXI6Yyx2YWx1ZTpsfT1lLGg9bnx8bmV3IERpY3QodCk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO2lmKG4pe2guc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLmRlbGV0ZSgiUkMiKX1lbHNlIGguc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixvKTtjb25zdCBDPWAvSGVsdiAke3N9IFRmICR7Z2V0UGRmQ29sb3IociwhMCl9YDtoLnNldCgiREEiLEMpO2guc2V0KCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aC5zZXQoIkYiLDQpO2guc2V0KCJCb3JkZXIiLFswLDAsMF0pO2guc2V0KCJSb3RhdGUiLGcpO2MmJmguc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpsLHZhbHVlOmh9PWUsQz1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1DLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxDKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7bCUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49cypnLEc9MSpnLE09Tip3Lmxlbmd0aDtNPnkmJihSPXkvTSk7Y29uc3QgVT1nKk1hdGgubWluKGssUik7bGV0IHgsTCxIO3N3aXRjaChsKXtjYXNlIDA6SD1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07eD1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTt4PVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTt4PVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO3g9Wy1jWzNdLGNbMl0tR119Y29uc3QgSj1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFUpfSBUZmBdO0oucHVzaChgJHt4LmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCB2PW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0oucHVzaChgMCAtJHt2fSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUoucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1KLmpvaW4oIlxuIiksSz1uZXcgRGljdCh0KTtLLnNldCgiRm9ybVR5cGUiLDEpO0suc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtLLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Sy5zZXQoIkJCb3giLGMpO0suc2V0KCJSZXNvdXJjZXMiLEMpO0suc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgVD1uZXcgU3RyaW5nU3RyZWFtKFkpO1QuZGljdD1LO3JldHVybiBUfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxsPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLGwpfHwodGhpcy5yZWN0YW5nbGU9bCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0tZyx0WzJdK2csdFs3XS1nLHRbM10rZ119fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2l9ICR7YX0gJHtyfSAke259IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1MO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscz1yP2dldFBkZkNvbG9yQXJyYXkocik6bnVsbCxuPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsbD0oci1pKS8yKm8saD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytsfSAke259ICR7cn0gJHtjK2h9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtaH0gJHtnK2x9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctbH0gJHthfSAke2l9ICR7Yy1ofSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2h9ICR7Zy1sfSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1KO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShhKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MipzLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKXtvWzBdPU1hdGgubWluKG9bMF0scltlXS1uKTtvWzFdPU1hdGgubWluKG9bMV0scltlKzFdLW4pO29bMl09TWF0aC5tYXgob1syXSxyW2VdK24pO29bM109TWF0aC5tYXgob1szXSxyW2UrMV0rbil9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3N9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUh9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU99fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Vzt0aGlzLmRhdGEuaW5rTGlzdHM9W107dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe2lmKCFBcnJheS5pc0FycmF5KGFbZV0pKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShhW2VdLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCByPTAscz1hW2VdLmxlbmd0aDtyPHM7cis9Mil7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVtlXVtyXSksbj1pLmZldGNoSWZSZWYoYVtlXVtyKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygbil7dFtyXT1zO3RbcisxXT1ufX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqcixuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpe25bMF09TWF0aC5taW4oblswXSxlW3RdLXMpO25bMV09TWF0aC5taW4oblsxXSxlW3QrMV0tcyk7blsyXT1NYXRoLm1heChuWzJdLGVbdF0rcyk7blszXT1NYXRoLm1heChuWzNdLGVbdCsxXStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKz0yKWUucHVzaChgJHt0W2ldfSAke3RbaSsxXX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpyLGNvbG9yOnMsb3BhY2l0eTpuLHBhdGhzOm8sb3V0bGluZXM6ZyxyZWN0OmMscm90YXRpb246bCx0aGlja25lc3M6aCx1c2VyOkN9PWUsUT1yfHxuZXcgRGljdCh0KTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO1Euc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW5rIikpO1Euc2V0KHI/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO1Euc2V0KCJSZWN0IixjKTtRLnNldCgiSW5rTGlzdCIsZz8ucG9pbnRzfHxvLnBvaW50cyk7US5zZXQoIkYiLDQpO1Euc2V0KCJSb3RhdGUiLGwpO0MmJlEuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKEMpKTtnJiZRLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgRT1uZXcgRGljdCh0KTtRLnNldCgiQlMiLEUpO0Uuc2V0KCJXIixoKTtRLnNldCgiQyIsQXJyYXkuZnJvbShzLChlPT5lLzI1NSkpKTtRLnNldCgiQ0EiLG4pO2NvbnN0IHU9bmV3IERpY3QodCk7US5zZXQoIkFQIix1KTtpP3Uuc2V0KCJOIixpKTp1LnNldCgiTiIsYSk7cmV0dXJuIFF9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBzLmxpbmVzKXtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixpPWUubGVuZ3RoO3Q8aTt0Kz02KWlmKGlzTmFOKGVbdF0pKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2ksYSxyLHMsbixvXT1lLnNsaWNlKHQsdCs2KTtnLnB1c2goW2ksYSxyLHMsbixvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWcucHVzaCgiUyIpO2NvbnN0IGM9Zy5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixyKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtsLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhzW2UrNF0pfSAke251bWJlclRvU3RyaW5nKHNbZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsaSxhLHIsbixnXT1zLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsaSxhLHIsbixnXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGc9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2wuc2V0KCJFeHRHU3RhdGUiLGgpO2Muc2V0KCJSZXNvdXJjZXMiLGwpO2NvbnN0IEM9bmV3IERpY3QodCk7aC5zZXQoIlIwIixDKTtDLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7Qy5zZXQoImNhIixuKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBRPW5ldyBTdHJpbmdTdHJlYW0oZyk7US5kaWN0PWM7cmV0dXJuIFF9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLG9sZEFubm90YXRpb246cyxvcGFjaXR5Om4scmVjdDpvLHJvdGF0aW9uOmcsdXNlcjpjLHF1YWRQb2ludHM6bH09ZSxoPXN8fG5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7aC5zZXQocz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLG8pO2guc2V0KCJGIiw0KTtoLnNldCgiQm9yZGVyIixbMCwwLDBdKTtoLnNldCgiUm90YXRlIixnKTtoLnNldCgiUXVhZFBvaW50cyIsbCk7aC5zZXQoIkMiLEFycmF5LmZyb20ociwoZT0+ZS8yNTUpKSk7aC5zZXQoIkNBIixuKTtjJiZoLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtoLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixpfHxhKX1yZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnIsb3V0bGluZXM6cyxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl0sZz1bXTtmb3IoY29uc3QgZSBvZiBzKXtnLmxlbmd0aD0wO2cucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTIpZy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtnLnB1c2goImgiKTtvLnB1c2goZy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7bC5zZXQoIkJCb3giLHIpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsQyk7bC5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgUT1uZXcgRGljdCh0KTtDLnNldCgiUjAiLFEpO1Euc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtRLnNldCgiY2EiLG4pO1Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IEU9bmV3IFN0cmluZ1N0cmVhbShjKTtFLmRpY3Q9bDtyZXR1cm4gRX19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUs7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFsxXS10WzVdKS82O2xldCBhPWkscj10WzRdO2NvbnN0IHM9dFs1XSxuPXRbNl07ZS5wdXNoKGAke3J9ICR7cythfSBtYCk7ZG97cis9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7cn0gJHtzK2F9IGxgKX13aGlsZShyPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNUO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1xO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7aWYoZSl7aWYoIXRoaXMuZGF0YS5pc0VkaXRhYmxlKXJldHVybiExO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhczt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3JldHVybiEwfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jVDtyZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGcpe3MuZmlsbFN0eWxlPSJ3aGl0ZSI7cy5maWxsUmVjdCgwLDAsaSxhKTtzLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgYz1yLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGw9TmFtZS5nZXQoIlhPYmplY3QiKSxoPU5hbWUuZ2V0KCJJbWFnZSIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIlR5cGUiLGwpO0Muc2V0KCJTdWJ0eXBlIixoKTtDLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7Qy5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7Qy5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtDLnNldCgiQkJveCIsWzAsMCxpLGFdKTtDLnNldCgiV2lkdGgiLGkpO0Muc2V0KCJIZWlnaHQiLGEpO2xldCBRPW51bGw7aWYoZyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3Qgcj1uZXcgRGljdCh0KTtyLnNldCgiVHlwZSIsbCk7ci5zZXQoIlN1YnR5cGUiLGgpO3Iuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtyLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7ci5zZXQoIldpZHRoIixpKTtyLnNldCgiSGVpZ2h0IixhKTtRPW5ldyBTdHJlYW0oZSwwLDAscil9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgYywwLDAsQyksc21hc2tTdHJlYW06USx3aWR0aDppLGhlaWdodDphfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OnMscm90YXRpb246bix1c2VyOm99PWUsZz1yfHxuZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zy5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIlJlY3QiLHMpO2cuc2V0KCJGIiw0KTtnLnNldCgiQm9yZGVyIixbMCwwLDBdKTtnLnNldCgiUm90YXRlIixuKTtvJiZnLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2k/ZS5zZXQoIk4iLGkpOmUuc2V0KCJOIixhKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnIsd2lkdGg6cyxoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHIpO2NvbnN0IGM9YHEgJHtzfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxsPW5ldyBEaWN0KHQpO2wuc2V0KCJGb3JtVHlwZSIsMSk7bC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtsLnNldCgiQkJveCIsWzAsMCxzLG5dKTtsLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxuKTtsLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHI9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1yIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhyLm5hbWUpOiJQdXNoUGluIjtjb25zdCBzPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6bnVsbH19Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1pO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWkrZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsaSk7dGhpcy5idWZmZXJMZW5ndGg9YX19Y2xhc3MgQVJDRm91ckNpcGhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmE9MDt0aGlzLmI9MDtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1NiksaT1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2ElaV0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxpPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBuPTA7bjxyOysrbil7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtpPWkrciYyNTU7Y29uc3Qgbz1hW2ldO2FbdF09bzthW2ldPXI7c1tuXT1lW25dXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPWk7cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y29uc3QgZW89ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goaSxhLHIpe2xldCBzPTE3MzI1ODQxOTMsbj0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsZz0yNzE3MzM4Nzg7Y29uc3QgYz1yKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLEM7Zm9yKGg9MDtoPHI7KytoKWxbaF09aVthKytdO2xbaCsrXT0xMjg7Y29uc3QgUT1jLTg7Zm9yKDtoPFE7KWxbaCsrXT0wO2xbaCsrXT1yPDwzJjI1NTtsW2grK109cj4+NSYyNTU7bFtoKytdPXI+PjEzJjI1NTtsW2grK109cj4+MjEmMjU1O2xbaCsrXT1yPj4+MjkmMjU1O2xbaCsrXT0wO2xbaCsrXT0wO2xbaCsrXT0wO2NvbnN0IEU9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihoPTA7aDxjOyl7Zm9yKEM9MDtDPDE2OysrQyxoKz00KUVbQ109bFtoXXxsW2grMV08PDh8bFtoKzJdPDwxNnxsW2grM108PDI0O2xldCBpLGEscj1zLGM9bixRPW8sdT1nO2ZvcihDPTA7Qzw2NDsrK0Mpe2lmKEM8MTYpe2k9YyZRfH5jJnU7YT1DfWVsc2UgaWYoQzwzMil7aT11JmN8fnUmUTthPTUqQysxJjE1fWVsc2UgaWYoQzw0OCl7aT1jXlFedTthPTMqQys1JjE1fWVsc2V7aT1RXihjfH51KTthPTcqQyYxNX1jb25zdCBzPXUsbj1yK2krdFtDXStFW2FdfDAsbz1lW0NdO3U9UTtRPWM7Yz1jKyhuPDxvfG4+Pj4zMi1vKXwwO3I9c31zPXMrcnwwO249bitjfDA7bz1vK1F8MDtnPWcrdXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmcsZz4+OCYyNTUsZz4+MTYmMjU1LGc+Pj4yNCYyNTVdKX19KCk7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGk7aWYoMzImZSl7aT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7aT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8aTw8MzItZTt0aGlzLmhpZ2g9aT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGk9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihpKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8aX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdG89ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2Q2xvc3VyZSgpe2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjaChlLHQsaSl7cmV0dXJuIGUmdF5+ZSZpfWZ1bmN0aW9uIG1haihlLHQsaSl7cmV0dXJuIGUmdF5lJmledCZpfWZ1bmN0aW9uIHNpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWNvbnN0IGU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEpe2xldCByPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixvPTI3NzM0ODA3NjIsZz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgQz02NCpNYXRoLmNlaWwoKGErOSkvNjQpLFE9bmV3IFVpbnQ4QXJyYXkoQyk7bGV0IEUsdTtmb3IoRT0wO0U8YTsrK0UpUVtFXT10W2krK107UVtFKytdPTEyODtjb25zdCBkPUMtODtmb3IoO0U8ZDspUVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPWE+Pj4yOSYyNTU7UVtFKytdPWE+PjIxJjI1NTtRW0UrK109YT4+MTMmMjU1O1FbRSsrXT1hPj41JjI1NTtRW0UrK109YTw8MyYyNTU7Y29uc3QgZj1uZXcgVWludDMyQXJyYXkoNjQpO2ZvcihFPTA7RTxDOyl7Zm9yKHU9MDt1PDE2OysrdSl7Zlt1XT1RW0VdPDwyNHxRW0UrMV08PDE2fFFbRSsyXTw8OHxRW0UrM107RSs9NH1mb3IodT0xNjt1PDY0OysrdSlmW3VdPShyb3RyKHA9Zlt1LTJdLDE3KV5yb3RyKHAsMTkpXnA+Pj4xMCkrZlt1LTddK2xpdHRsZVNpZ21hKGZbdS0xNV0pK2ZbdS0xNl18MDtsZXQgdCxpLGE9cixDPXMsZD1uLG09byx5PWcsdz1jLGI9bCxEPWg7Zm9yKHU9MDt1PDY0OysrdSl7dD1EK3NpZ21hUHJpbWUoeSkrY2goeSx3LGIpK2VbdV0rZlt1XTtpPXNpZ21hKGEpK21haihhLEMsZCk7RD1iO2I9dzt3PXk7eT1tK3R8MDttPWQ7ZD1DO0M9YTthPXQraXwwfXI9cithfDA7cz1zK0N8MDtuPW4rZHwwO289byttfDA7Zz1nK3l8MDtjPWMrd3wwO2w9bCtifDA7aD1oK0R8MH12YXIgcDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3I+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaF0pfX0oKSxpbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGksYSxyKXtlLmFzc2lnbih0KTtlLmFuZChpKTtyLmFzc2lnbih0KTtyLm5vdCgpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIG1haihlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3IuYW5kKGEpO2UueG9yKHIpO3IuYXNzaWduKGkpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIHNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihpKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg3KTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNik7ZS54b3IoaSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhLHI9ITEpe2xldCBzLG4sbyxnLGMsbCxoLEM7aWYocil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2c9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7Qz1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtnPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7Qz1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBRPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksRT1uZXcgVWludDhBcnJheShRKTtsZXQgdSxkO2Zvcih1PTA7dTxhOysrdSlFW3VdPXRbaSsrXTtFW3UrK109MTI4O2NvbnN0IGY9US0xNjtmb3IoO3U8ZjspRVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPWE+Pj4yOSYyNTU7RVt1KytdPWE+PjIxJjI1NTtFW3UrK109YT4+MTMmMjU1O0VbdSsrXT1hPj41JjI1NTtFW3UrK109YTw8MyYyNTU7Y29uc3QgcD1uZXcgQXJyYXkoODApO2Zvcih1PTA7dTw4MDt1KyspcFt1XT1uZXcgV29yZDY0KDAsMCk7bGV0IG09bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHc9bmV3IFdvcmQ2NCgwLDApLGI9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE49bmV3IFdvcmQ2NCgwLDApLEc9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLFU9bmV3IFdvcmQ2NCgwLDApO2xldCB4LEw7Zm9yKHU9MDt1PFE7KXtmb3IoZD0wO2Q8MTY7KytkKXtwW2RdLmhpZ2g9RVt1XTw8MjR8RVt1KzFdPDwxNnxFW3UrMl08PDh8RVt1KzNdO3BbZF0ubG93PUVbdSs0XTw8MjR8RVt1KzVdPDwxNnxFW3UrNl08PDh8RVt1KzddO3UrPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe3g9cFtkXTtsaXR0bGVTaWdtYVByaW1lKHgscFtkLTJdLFUpO3guYWRkKHBbZC03XSk7bGl0dGxlU2lnbWEoTSxwW2QtMTVdLFUpO3guYWRkKE0pO3guYWRkKHBbZC0xNl0pfW0uYXNzaWduKHMpO3kuYXNzaWduKG4pO3cuYXNzaWduKG8pO2IuYXNzaWduKGcpO0QuYXNzaWduKGMpO1MuYXNzaWduKGwpO2suYXNzaWduKGgpO1IuYXNzaWduKEMpO2ZvcihkPTA7ZDw4MDsrK2Qpe04uYXNzaWduKFIpO3NpZ21hUHJpbWUoTSxELFUpO04uYWRkKE0pO2NoKE0sRCxTLGssVSk7Ti5hZGQoTSk7Ti5hZGQoZVtkXSk7Ti5hZGQocFtkXSk7c2lnbWEoRyxtLFUpO21haihNLG0seSx3LFUpO0cuYWRkKE0pO3g9UjtSPWs7az1TO1M9RDtiLmFkZChOKTtEPWI7Yj13O3c9eTt5PW07eC5hc3NpZ24oTik7eC5hZGQoRyk7bT14fXMuYWRkKG0pO24uYWRkKHkpO28uYWRkKHcpO2cuYWRkKGIpO2MuYWRkKEQpO2wuYWRkKFMpO2guYWRkKGspO0MuYWRkKFIpfWlmKHIpe0w9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKX1lbHNle0w9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKTtoLmNvcHlUbyhMLDQ4KTtDLmNvcHlUbyhMLDU2KX1yZXR1cm4gTH19KCk7Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGksYSxyO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpc1tlXV49dFtpXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2k9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPXRoaXMuX2ludl9zW3NbZV1dO2ZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2Epc1tpXV49dFthXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3NbZV1dLGE9dGhpcy5fbWl4W3NbZSsxXV0scj10aGlzLl9taXhbc1tlKzJdXSxuPXRoaXMuX21peFtzW2UrM11dO2k9dF5hPj4+OF5hPDwyNF5yPj4+MTZecjw8MTZebj4+PjI0Xm48PDg7c1tlXT1pPj4+MjQmMjU1O3NbZSsxXT1pPj4xNiYyNTU7c1tlKzJdPWk+PjgmMjU1O3NbZSszXT0yNTUmaX19aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtzW2VdPXRoaXMuX2ludl9zW3NbZV1dO3NbZV1ePXRbZV19cmV0dXJuIHN9X2VuY3J5cHQoZSx0KXtjb25zdCBpPXRoaXMuX3M7bGV0IGEscixzO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1uW2UrMF0saT1uW2UrMV0scj1uW2UrMl0scz1uW2UrM107YT10Xmlecl5zO25bZSswXV49YV50aGlzLl9taXhDb2xbdF5pXTtuW2UrMV1ePWFedGhpcy5fbWl4Q29sW2lecl07bltlKzJdXj1hXnRoaXMuX21peENvbFtyXnNdO25bZSszXV49YV50aGlzLl9taXhDb2xbc150XX1mb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKW5baV1ePXRbYV19Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKW5bZV1ePXRbaV07cmV0dXJuIG59X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO2xldCBuPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtyXT1lW3RdOysrcjtpZihyPDE2KWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5fZGVjcnlwdChhLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49bltlXTtuPWE7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj1uO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqcy5sZW5ndGg7aWYodCl7Y29uc3QgZT1zLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBpPTE1LGE9MTYtdDtpPj1hOy0taSlpZihlW2ldIT09dCl7dD0wO2JyZWFrfW8tPXQ7c1tzLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilnLnNldChzW2VdLHQpO3JldHVybiBnfWRlY3J5cHRCbG9jayhlLHQsaT1udWxsKXtjb25zdCBhPWUubGVuZ3RoLHI9dGhpcy5idWZmZXI7bGV0IHM9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihpKXRoaXMuaXY9aTtlbHNle2ZvcihsZXQgdD0wO3M8MTYmJnQ8YTsrK3QsKytzKXJbc109ZVt0XTtpZihzPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1zO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PXI7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBuPTA7bjxpOysrbil7YVtyXT1lW25dOysrcjtpZihyPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXRbZV07Y29uc3QgaT10aGlzLl9lbmNyeXB0KGEsdGhpcy5fa2V5KTt0PWk7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj10O2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgbj0xNipzLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpby5zZXQoc1tlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPXRoaXMuX3Jjb24sYT1uZXcgVWludDhBcnJheSgxNzYpO2Euc2V0KGUpO2ZvcihsZXQgZT0xNixyPTE7ZTwxNzY7KytyKXtsZXQgcz1hW2UtM10sbj1hW2UtMl0sbz1hW2UtMV0sZz1hW2UtNF07cz10W3NdO249dFtuXTtvPXRbb107Zz10W2ddO3NePWlbcl07Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1zXj1hW2UtMTZdO2UrKzthW2VdPW5ePWFbZS0xNl07ZSsrO2FbZV09b149YVtlLTE2XTtlKys7YVtlXT1nXj1hW2UtMTZdO2UrK319cmV0dXJuIGF9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPW5ldyBVaW50OEFycmF5KDI0MCk7aS5zZXQoZSk7bGV0IGEscixzLG4sbz0xO2ZvcihsZXQgZT0zMixnPTE7ZTwyNDA7KytnKXtpZihlJTMyPT0xNil7YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dfWVsc2UgaWYoZSUzMj09MCl7YT1pW2UtM107cj1pW2UtMl07cz1pW2UtMV07bj1pW2UtNF07YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dO2FePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXtpW2VdPWFePWlbZS0zMl07ZSsrO2lbZV09cl49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPW5ePWlbZS0zMl07ZSsrfX1yZXR1cm4gaX19Y2xhc3MgUERGMTd7Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhyLDAsci5sZW5ndGgpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhhLDAsYS5sZW5ndGgpLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10byhyLDAsci5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9dG8oYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYyMHtfaGFzaChlLHQsaSl7bGV0IGE9dG8odCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtpLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KHQpO2xldCBsPTA7Yy5zZXQoZSxsKTtsKz1lLmxlbmd0aDtjLnNldChhLGwpO2wrPWEubGVuZ3RoO2Muc2V0KGksbCk7Y29uc3QgaD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxpPTA7ZTw2NDtlKyssaSs9dCloLnNldChjLGkpO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGgsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IEM9ci5zbGljZSgwLDE2KS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApJTM7MD09PUM/YT10byhyLDAsci5sZW5ndGgpOjE9PT1DP2E9KG49cixvPTAsZz1yLmxlbmd0aCxpbyhuLG8sZywhMCkpOjI9PT1DJiYoYT1pbyhyLDAsci5sZW5ndGgpKTtzKyt9dmFyIG4sbyxnO3JldHVybiBhLnN1YmFycmF5KDAsMzIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHIsaSksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxhLFtdKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dGhpcy5faGFzaChlLHIsaSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUsYSxbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBpPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gaS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZGVjcnlwdEJsb2NrKGksITApO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgaT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpLnJlcGVhdChpKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgcj1zdHJpbmdUb0J5dGVzKGUpO3I9dC5lbmNyeXB0KHIsYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNityLmxlbmd0aCk7cy5zZXQoYSk7cy5zZXQociwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocyl9bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMjcT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pOyNPKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IEM9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gQy5jaGVja1VzZXJQYXNzd29yZCh0LG8sbik/Qy5nZXRVc2VyS2V5KHQsZyxsKTp0Lmxlbmd0aCYmQy5jaGVja093bmVyUGFzc3dvcmQodCxhLHMsaSk/Qy5nZXRPd25lcktleSh0LHIscyxjKTpudWxsfSNQKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz00MCtpLmxlbmd0aCtlLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGcpO2xldCBsLGgsQz0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7QzxoOysrQyljW0NdPXRbQ119bD0wO2Zvcig7QzwzMjspY1tDKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbCsrXTtmb3IobD0wLGg9aS5sZW5ndGg7bDxoOysrbCljW0MrK109aVtsXTtjW0MrK109MjU1JnI7Y1tDKytdPXI+PjgmMjU1O2NbQysrXT1yPj4xNiYyNTU7Y1tDKytdPXI+Pj4yNCYyNTU7Zm9yKGw9MCxoPWUubGVuZ3RoO2w8aDsrK2wpY1tDKytdPWVbbF07aWYocz49NCYmIW8pe2NbQysrXT0yNTU7Y1tDKytdPTI1NTtjW0MrK109MjU1O2NbQysrXT0yNTV9bGV0IFE9ZW8oYywwLEMpO2NvbnN0IEU9bj4+MztpZihzPj0zKWZvcihsPTA7bDw1MDsrK2wpUT1lbyhRLDAsRSk7Y29uc3QgdT1RLnN1YmFycmF5KDAsRSk7bGV0IGQsZjtpZihzPj0zKXtmb3IoQz0wO0M8MzI7KytDKWNbQ109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jcVtDXTtmb3IobD0wLGg9ZS5sZW5ndGg7bDxoOysrbCljW0MrK109ZVtsXTtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soZW8oYywwLEMpKTtoPXUubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaCk7Zm9yKGw9MTtsPD0xOTsrK2wpe2ZvcihsZXQgZT0wO2U8aDsrK2UpdFtlXT11W2VdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcih0KTtmPWQuZW5jcnlwdEJsb2NrKGYpfWZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfWVsc2V7ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3EpO2ZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfXJldHVybiB1fSNXKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBzPTA7Y29uc3Qgbj1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtzPG47KytzKXJbc109ZVtzXTtsZXQgbz0wO2Zvcig7czwzMjspcltzKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbysrXTtsZXQgZz1lbyhyLDAscyk7Y29uc3QgYz1hPj4zO2lmKGk+PTMpZm9yKG89MDtvPDUwOysrbylnPWVvKGcsMCxnLmxlbmd0aCk7bGV0IGwsaDtpZihpPj0zKXtoPXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShjKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxjOysrdCllW3RdPWdbdF1ebztsPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO2g9bC5lbmNyeXB0QmxvY2soaCl9fWVsc2V7bD1uZXcgQVJDRm91ckNpcGhlcihnLnN1YmFycmF5KDAsYykpO2g9bC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIGh9I2ooZSx0LGksYT0hMSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShpLmxlbmd0aCs5KSxzPWkubGVuZ3RoO2xldCBuO2ZvcihuPTA7bjxzOysrbilyW25dPWlbbl07cltuKytdPTI1NSZlO3JbbisrXT1lPj44JjI1NTtyW24rK109ZT4+MTYmMjU1O3JbbisrXT0yNTUmdDtyW24rK109dD4+OCYyNTU7aWYoYSl7cltuKytdPTExNTtyW24rK109NjU7cltuKytdPTEwODtyW24rK109ODR9cmV0dXJuIGVvKHIsMCxuKS5zdWJhcnJheSgwLE1hdGgubWluKGkubGVuZ3RoKzUsMTYpKX0jWChlLHQsaSxhLHIpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBzPXRoaXMsbj1lLmdldCh0Lm5hbWUpLG89bj8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIocy4jaihpLGEsciwhMSkpfTtpZigiQUVTVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMTI4Q2lwaGVyKHMuI2ooaSxhLHIsITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsaSl7Y29uc3QgYT1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShhLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1hLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3Qgcj1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwxIT09ciYmMiE9PXImJjQhPT1yJiY1IT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09cjtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIXMpaWYocjw9MylzPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxpPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmkgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGkubmFtZSk7cz1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7czw0MCYmKHM8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIocyl8fHM8NDB8fHMlOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IG49c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksZz1uLnN1YmFycmF5KDAsMzIpLGM9by5zdWJhcnJheSgwLDMyKSxsPWUuZ2V0KCJQIiksaD1lLmdldCgiUiIpLEM9KDQ9PT1yfHw1PT09cikmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPUM7Y29uc3QgUT1zdHJpbmdUb0J5dGVzKHQpO2xldCBFLHU7aWYoaSl7aWYoNj09PWgpdHJ5e2k9dXRmOFN0cmluZ1RvU3RyaW5nKGkpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1FPXN0cmluZ1RvQnl0ZXMoaSl9aWYoNSE9PXIpdT10aGlzLiNQKFEsRSxnLGMsbCxoLHMsQyk7ZWxzZXtjb25zdCB0PW4uc3ViYXJyYXkoMzIsNDApLGk9bi5zdWJhcnJheSg0MCw0OCksYT1vLnN1YmFycmF5KDAsNDgpLHI9by5zdWJhcnJheSgzMiw0MCkscz1vLnN1YmFycmF5KDQwLDQ4KSxsPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksUT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTt1PXRoaXMuI08oaCxFLGcsdCxpLGEsYyxyLHMsbCxDLFEpfWlmKCF1JiYhaSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixvdCk7aWYoIXUmJmkpe2NvbnN0IGU9dGhpcy4jVyhFLGcsaCxzKTt1PXRoaXMuI1AoUSxlLGcsYyxsLGgscyxDKX1pZighdSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsZ3QpO3RoaXMuZW5jcnlwdGlvbktleT11O2lmKHI+PTQpe2NvbnN0IHQ9ZS5nZXQoIkNGIik7dCBpbnN0YW5jZW9mIERpY3QmJih0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj10O3RoaXMuc3RtZj1lLmdldCgiU3RtRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLnN0cmY9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5lZmY9ZS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHRoaXMuI1godGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jWCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgaT10aGlzLiNqKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLGNpcGhlckNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGkpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShjaXBoZXJDb25zdHJ1Y3RvcixjaXBoZXJDb25zdHJ1Y3Rvcil9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjVj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczppfT1lLGE9dC5nZXQoIlciKSxyPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczpyLGJ5dGVXaWR0aHM6YSxlbnRyeU51bTowLHN0cmVhbVBvczppfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxyXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W24sb109cztpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxvOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBsPXt9O2wub2Zmc2V0PWc7bC5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOmwuZnJlZT0hMDticmVhaztjYXNlIDE6bC51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3NdfHwodGhpcy5lbnRyaWVzW24rc109bCl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09aVtyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IGw9bi5zdGFydDtjb25zdCBoPVtdLEM9W107Zm9yKDtsPGM7KXtsZXQgUT1vW2xdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK2w7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK2w7aWYobD49YylicmVhaztRPW9bbF19d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sbCk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe2wrPXNraXBVbnRpbChvLGwsYSk7aC5wdXNoKGwpO2wrPXNraXBVbnRpbChvLGwscil9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1sK0UubGVuZ3RoO2xldCByLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0Omwtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3I9ZS5sYXN0SW5kZXgrMS1sO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3ItPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcj1jLWw7Y29uc3QgZD1vLnN1YmFycmF5KGwsbCtyKSxmPXNraXBVbnRpbChkLDAscyk7aWYoZjxyJiZkW2YrNV08NjQpe0MucHVzaChsLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChsLW4uc3RhcnQpfWwrPXJ9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKGwpO2NvbnN0IGU9bCtFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1sO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1sO2wrPWl9ZWxzZSBsKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIEMpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFRLmxlbmd0aClmb3IoY29uc3RbZSx0XW9mIHRoaXMuZW50cmllcy5lbnRyaWVzKCkpe2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9UmVmLmdldChlLHQuZ2VuKTtsZXQgYTt0cnl7YT10aGlzLmZldGNoKGkpfWNhdGNoe2NvbnRpbnVlfWEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT1hLmRpY3QpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiUm9vdCIpKXJldHVybiBhfXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHIscz1hLmdldE9iaigpO2lmKGlzQ21kKHMsInhyZWYiKSl7cj10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXIpO3M9ci5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHMpKXt0aGlzLl94cmVmU3Rtcy5hZGQocyk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpO3RoaXMuI1Y/Pz1zfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocz1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHMpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cz1yLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocyk/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpOnMgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI1Y/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHI9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cil7dGhpcy5fY2FjaGVNYXAuc2V0KGkscik7cmV0dXJuIHJ9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBRdH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3I9ci51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHIsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxyLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1yIGluc3RhbmNlb2YgRGljdD9yLm9iaklkPWUudG9TdHJpbmcoKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHIuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCByPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcz1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHMpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocix0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IHM9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1yfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtyPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihyKSlyZXR1cm4gcn10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHIsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHI9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBzPXIuZGljdC5nZXQoIkZpcnN0Iiksbj1yLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IGw9KHIuc3RhcnR8fDApK3MsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoci5tYWtlU3ViU3RyZWFtKGwrY1tlXSx0LHIuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHM9Z1tlXSxDPXRoaXMuZW50cmllc1tzXTtDJiZDLm9mZnNldD09PWEmJkMuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHMsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgYW89WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpDfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9cjt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1DO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fGFvKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7Y29uc3QgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IiwibnVtYmVyIj09dHlwZW9mIGUmJmU+MD9lOjEpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgaT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGkmJmlbMl0taVswXT4wJiZpWzNdLWlbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGkpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI1ooZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWk/LnB1dChlKTtyLnJlZj1lO2EucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKChlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0pLCgoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHM9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksbj1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI1ooaSxuLG8pO2NvbnN0IGc9dGhpcy5wYWdlRGljdCxjPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJm4uaGFzKGUpKSkpLGw9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHMsdCxpLGEscik7Zm9yKGNvbnN0e3JlZjplfW9mIGwuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZjLnB1c2goZSk7Y29uc3QgaD1nLmNsb25lKCk7aC5zZXQoIkFubm90cyIsYyk7ci5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIG4pci5wdXQoZSx7ZGF0YTpudWxsfSl9c2F2ZShlLHQsaSxhKXtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3JldHVybiB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucy50aGVuKChmdW5jdGlvbihlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBuIG9mIGUpcy5wdXNoKG4uc2F2ZShyLHQsaSxhKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwocyl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGwsbW9kaWZpZWRJZHM6bj1udWxsfSl7Y29uc3Qgbz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxoPXRoaXMubG9hZFJlc291cmNlcyhbIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdKSx1PW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLGY9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAocykscD1mPy5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCBtPVByb21pc2UucmVzb2x2ZShudWxsKSx5PW51bGw7aWYocCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiBwKSFlfHx0fHxhLmhhcyhlKXx8YS5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6cn09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKGEuc2l6ZT4wKXtjb25zdCBlPXAuc2xpY2UoKTtmb3IoY29uc3RbdCxpXW9mIHMpdC5zdGFydHNXaXRoKGQpJiZpLmJpdG1hcCYmYS5oYXMoaS5iaXRtYXBJZCkmJmUucHVzaChpKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLHIpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhwLHRoaXMueHJlZixyKTt5PW5ldyBSZWZTZXQ7bT1Qcm9taXNlLmFsbChbZSx0aGlzLiNaKHAseSxudWxsKV0pLnRoZW4oKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSx1LGkscCx0KTpudWxsKSl9Y29uc3Qgdz1Qcm9taXNlLmFsbChbbyxoXSkudGhlbigoKFtzXSk9Pntjb25zdCBuPW5ldyBPcGVyYXRvckxpc3QoYSx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp1Lmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6cn0pO3JldHVybiB1LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnMsdGFzazppLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt3LHRoaXMuX3BhcnNlZEFubm90YXRpb25zLG1dKS50aGVuKChmdW5jdGlvbihbZSx0LHJdKXtpZihyKXt0PXQuZmlsdGVyKChlPT4hKGUucmVmJiZ5LmhhcyhlLnJlZikpKSk7Zm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBhPXJbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHM9dC5maW5kSW5kZXgoKGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpKTtpZihzPj0wKXt0LnNwbGljZShzLDEsYSk7ci5zcGxpY2UoZS0tLDEpO2ktLX19fXQ9dC5jb25jYXQocil9aWYoMD09PXQubGVuZ3RofHxhJlEpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3Qgbz0hIShhJkMpLGg9ISEoYSZFKSxkPSEhKGEmZyksZj0hIShhJmMpLHA9ISEoYSZsKSxtPVtdO2Zvcihjb25zdCBlIG9mIHQpKGR8fGYmJmUubXVzdEJlVmlld2VkKHMsbykmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoaCxuKXx8cCYmZS5tdXN0QmVQcmludGVkKHMpKSYmbS5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsaSxhLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztjb25zdCB0PWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKTtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0LCJzZXJpYWxpemFibGUiKX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtjb25zdCByPVtdLHM9W107bGV0IG47Y29uc3Qgbz0hIShpJmcpLGg9ISEoaSZjKSxDPSEhKGkmbCk7Zm9yKGNvbnN0IGkgb2YgYSl7Y29uc3QgYT1vfHxoJiZpLnZpZXdhYmxlOyhhfHxDJiZpLnByaW50YWJsZSkmJnIucHVzaChpLmRhdGEpO2lmKGkuaGFzVGV4dENvbnRlbnQmJmEpe258fD1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtzLnB1c2goaS5leHRyYWN0VGV4dENvbnRlbnQobix0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIHJ9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxpXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9aT8ub3JwaGFuRmllbGRzLHI9W107Zm9yKGNvbnN0IGkgb2YgZSlyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixpLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSx0aGlzLnJlZikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtjb25zdCBzPVtdO2xldCBuLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocikpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8obnx8PVtdKS5wdXNoKGUpOnMucHVzaChlKSk7byYmcy5wdXNoKC4uLm8pO24mJnMucHVzaCguLi5uKTtyZXR1cm4gc30pKSl9Z2V0IGpzQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIixjb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCx5QSkpfX1jb25zdCBybz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxzbz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLG5vPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsaT0xMDI0LGE9ITEpe2NvbnN0IHI9dC5sZW5ndGgscz1lLnBlZWtCeXRlcyhpKSxuPXMubGVuZ3RoLXI7aWYobjw9MClyZXR1cm4hMTtpZihhKXtjb25zdCBpPXItMTtsZXQgYT1zLmxlbmd0aC0xO2Zvcig7YT49aTspe2xldCBuPTA7Zm9yKDtuPHImJnNbYS1uXT09PXRbaS1uXTspbisrO2lmKG4+PXIpe2UucG9zKz1hLWk7cmV0dXJuITB9YS0tfX1lbHNle2xldCBpPTA7Zm9yKDtpPD1uOyl7bGV0IGE9MDtmb3IoO2E8ciYmc1tpK2FdPT09dFthXTspYSsrO2lmKGE+PXIpe2UucG9zKz1pO3JldHVybiEwfWkrK319cmV0dXJuITF9Y2xhc3MgUERGRG9jdW1lbnR7Y29uc3RydWN0b3IoZSx0KXtpZih0Lmxlbmd0aDw9MCl0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IFhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgaT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytpLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLG5vKSl7ZS5za2lwKDYpO2xldCBpPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShpKTspe2UucG9zKys7aT1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IGk9MTAyNCxhPXNvLmxlbmd0aDtsZXQgcj0hMSxzPWUuZW5kO2Zvcig7IXImJnM+MDspe3MtPWktYTtzPDAmJihzPTApO2UucG9zPXM7cj1maW5kKGUsc28saSwhMCl9aWYocil7ZS5za2lwKDkpO2xldCBpO2Rve2k9ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKGkpKTtsZXQgYT0iIjtmb3IoO2k+PTMyJiZpPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoaSk7aT1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxybykpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHJvLmxlbmd0aCk7bGV0IHQsaT0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmaS5sZW5ndGg8NzspaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTttdC50ZXN0KGkpP3RoaXMuX3ZlcnNpb249aTp3YXJuKGBJbnZhbGlkIFBERiBoZWFkZXIgdmVyc2lvbjogJHtpfWApfXBhcnNlU3RhcnRYUmVmKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9Z2V0IG51bVBhZ2VzKCl7bGV0IGU9MDtlPXRoaXMuY2F0YWxvZy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLmNhdGFsb2cubnVtUGFnZXM6dGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXROdW1QYWdlcygpOnRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dGhpcy5jYXRhbG9nLm51bVBhZ2VzO3JldHVybiBzaGFkb3codGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgaT1pc05hbWUoZS5nZXQoIkZUIiksIlNpZyIpLGE9ZS5nZXQoIlJlY3QiKSxyPUFycmF5LmlzQXJyYXkoYSkmJmEuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGkmJnJ9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksaT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXtpWyJ4ZHA6eGRwIl09dDtyZXR1cm4gaX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCByO3I9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFpLmhhc093blByb3BlcnR5KHIpKWNvbnRpbnVlO2NvbnN0IHM9dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eSYmKGlbcl09cyl9cmV0dXJuIGl9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgaT1lW3RdO2lmKGkpdHJ5e2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGkuZ2V0U3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG5ldyBEYXRhc2V0UmVhZGVyKHtbdF06ZX0pKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoYSl0cnl7dFtpXT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IFhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jIGxvYWRYZmFJbWFnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldEtleXMoKSxpPW5ldyBPYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgaS5sb2FkKCk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoaSk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuc2V0KGksdC5nZXRCeXRlcygpKX10aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGEpfWFzeW5jIGxvYWRYZmFGb250cyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWkpcmV0dXJuO2NvbnN0IGE9YXdhaXQgaS5nZXRBc3luYygiRFIiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGEsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCByLmxvYWQoKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKTtuLnVzZVN5c3RlbUZvbnRzPSExO2NvbnN0IG89bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5jYXRhbG9nLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuY2F0YWxvZy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLmNhdGFsb2cuc3RhbmRhcmRGb250RGF0YUNhY2hlLG9wdGlvbnM6bn0pLGc9bmV3IE9wZXJhdG9yTGlzdCxjPVtdLGw9e2dldCBmb250KCl7cmV0dXJuIGMuYXQoLTEpfSxzZXQgZm9udChlKXtjLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxoPVtdO2Zvcihjb25zdFtlLGldb2Ygcyl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmgucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsbCxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwoaCk7Y29uc3QgQz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIUMpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2gubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBRPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgQylnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fFEuYWRkKGUpO1Euc2l6ZSYmQy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIEMpaWYoIVEuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtoLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LGwscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGgpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLFEpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGksYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7aT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBpPWVvKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFt0b0hleFV0aWwoaSksYT90b0hleFV0aWwoYSk6bnVsbF0pfWFzeW5jIF9nZXRMaW5lYXJpemF0aW9uUGFnZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjppLHhyZWY6YX09dGhpcyxyPVJlZi5nZXQoaS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBpPWUuZ2V0UmF3KCJUeXBlIik7aSBpbnN0YW5jZW9mIFJlZiYmKGk9YXdhaXQgYS5mZXRjaEFzeW5jKGkpKTtpZihpc05hbWUoaSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocil8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChyLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHIpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChyLDApO3JldHVybltlLHJdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChpKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2kubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6aSxsaW5lYXJpemF0aW9uOmEseGZhRmFjdG9yeTpyfT10aGlzO2xldCBzO3M9cj9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOmE/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6aS5nZXRQYWdlRGljdChlKTtzPXMudGhlbigoKFt0LGFdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOmEsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6aS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTppLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmkuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6aS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTppLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0Omkubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnJ9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKTtyZXR1cm4gc31hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6aX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IGE7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjthPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocil7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHIgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke2F9LmApO2xldCBzO3RyeXtzPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW2Escl1db2Ygcyl7bGV0IHM7aWYoYSBpbnN0YW5jZW9mIEVycm9yKXtzPVByb21pc2UucmVqZWN0KGEpO3MuY2F0Y2goKCgpPT57fSkpfWVsc2Ugcz1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6aSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKX10LnNldEFjdHVhbE51bVBhZ2VzKHMuc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjXyhlLHQsaSxhLHIscyxuKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShpIGluc3RhbmNlb2YgUmVmKXx8cy5oYXMoaSkpcmV0dXJuO3MucHV0KGkpO2NvbnN0IGc9YXdhaXQgby5mZXRjaEFzeW5jKGkpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihnLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGcuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBpPWc7Zm9yKDs7KXtpPWkuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihpIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhpKSlicmVhaztpPWF3YWl0IG8uZmV0Y2hBc3luYyhpKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGkuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YDticmVha319fXQmJiFnLmhhcygiUGFyZW50IikmJmlzTmFtZShnLmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSYmbi5wdXQoaSx0KTthLmhhcyhlKXx8YS5zZXQoZSxbXSk7YS5nZXQoZSkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxpLHIsbnVsbCwhMCxuLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIWcuaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IGM9YXdhaXQgZy5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYykpZm9yKGNvbnN0IHQgb2YgYylhd2FpdCB0aGlzLiNfKGUsaSx0LGEscixzLG4pfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKChhc3luYyBlPT57aWYoIWUuaGFzRmllbGRzKXJldHVybiBudWxsO2NvbnN0W3QsaV09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBSZWZTZXQscj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxuPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhd2FpdCBpLmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNfKCIiLG51bGwsZSxzLHQsYSxuKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcylvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihyW2VdPXQpfSkpKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOnIsb3JwaGFuRmllbGRzOm59fSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtPy5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fDA9PT1lLmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSlpIGluc3RhbmNlb2YgUmVmJiZ0LnB1c2goaS50b1N0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLHQubGVuZ3RoP3Q6bnVsbCl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7ZS5ldmFsdWF0b3JPcHRpb25zLmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBvbz0xLGdvPTIsSW89MSxjbz0yLGxvPTMsaG89NCxDbz01LEJvPTYsUW89NyxFbz04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjej1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1pO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTtpLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuIyQuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI3ouc2lnbmFsfSl9IyQoe2RhdGE6ZX0pe2lmKGUudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI0FBKGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdCB0PWUuY2FsbGJhY2tJZCxpPXRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAke3R9YCk7ZGVsZXRlIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoZS5jYWxsYmFjaz09PW9vKWkucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PWdvKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7aS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmo7UHJvbWlzZS50cnkodCxlLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsY2FsbGJhY2s6b28sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9KSwoZnVuY3Rpb24odCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxjYWxsYmFjazpnbyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfWVsc2UgZS5zdHJlYW1JZD90aGlzLiNlQShlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihpW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtpW2VdPXR9c2VuZChlLHQsaSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0saSl9c2VuZFdpdGhQcm9taXNlKGUsdCxpKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHI9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1yO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0saSl9Y2F0Y2goZSl7ci5yZWplY3QoZSl9cmV0dXJuIHIucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsaSxhKXtjb25zdCByPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSxuPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omk9Pntjb25zdCBnPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6aSxzdGFydENhbGw6ZyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixhY3Rpb246ZSxzdHJlYW1JZDpyLGRhdGE6dCxkZXNpcmVkU2l6ZTppLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gZy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpCbyxzdHJlYW1JZDpyLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06SW8sc3RyZWFtSWQ6cixyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxpKX0jZUEoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpobyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkNvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkobixlLmRhdGEsbykudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I0FBKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIEVvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFFvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBCbzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7UHJvbWlzZS50cnkobi5vblB1bGx8fG9uRm4pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgaG86YXNzZXJ0KHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgbG86YXNzZXJ0KHMsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmlzQ2xvc2VkPSEwO3MuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBDbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBjbzplLnN1Y2Nlc3M/cy5jYW5jZWxDYWxsLnJlc29sdmUoKTpzLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiN0QShzLHQpO2JyZWFrO2Nhc2UgSW86aWYoIW4pYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShuLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO24uaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjdEEoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI3o/LmFib3J0KCk7dGhpcy4jej1udWxsfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsaSx7ZW5jcnlwdDphPW51bGx9KXtjb25zdCByPWE/LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik7aS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdCh0LGkscik6dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0odCxpLHIpOihBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZhd2FpdCB3cml0ZUFycmF5KHQsaSxyKTtpLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGkpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgYSBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhhKSx0LGkpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsaSl7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6cn09ZSxbcyxuXT1hd2FpdCBQcm9taXNlLmFsbChbci5nZXRBc3luYygiRmlsdGVyIiksci5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocyk/YXdhaXQgci54cmVmLmZldGNoSWZSZWZBc3luYyhzWzBdKTpzLCJGbGF0ZURlY29kZSIpO2lmKGEubGVuZ3RoPj0yNTZ8fG8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShhKS50aGVuKChhc3luYygpPT57YXdhaXQgdC5yZWFkeTthd2FpdCB0LmNsb3NlKCl9KSkuY2F0Y2goKCgpPT57fSkpO2NvbnN0IGk9YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmFycmF5QnVmZmVyKCk7YT1uZXcgVWludDhBcnJheShpKTtsZXQgZyxjO2lmKHMpe2lmKCFvKXtnPUFycmF5LmlzQXJyYXkocyk/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnNdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxzXTtuJiYoYz1BcnJheS5pc0FycmF5KG4pP1tudWxsLC4uLm5dOltudWxsLG5dKX19ZWxzZSBnPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO2cmJnIuc2V0KCJGaWx0ZXIiLGcpO2MmJnIuc2V0KCJEZWNvZGVQYXJtcyIsYyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBnPWJ5dGVzVG9TdHJpbmcoYSk7aSYmKGc9aS5lbmNyeXB0U3RyaW5nKGcpKTtyLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHIsdCxpKTt0LnB1c2goIiBzdHJlYW1cbiIsZywiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxpKXt0LnB1c2goIlsiKTtsZXQgYT0hMDtmb3IoY29uc3QgciBvZiBlKXthP2E9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShyLHQsaSl9dC5wdXNoKCJdIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsaSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IHdyaXRlQXJyYXkoZSx0LGkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtpJiYoZT1pLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChudW1iZXJUb1N0cmluZyhlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGkpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxpKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGksYSl7Zm9yKGxldCByPXQraS0xO3I+aS0xO3ItLSl7YVtyXT0yNTUmZTtlPj49OH1yZXR1cm4gaSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaVt0K2FdPTI1NSZlLmNoYXJDb2RlQXQoYSl9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmkseHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBpPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9cGFyc2VYRkFQYXRoKHQpO2xldCBzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUociwwKTshcyYmci5sZW5ndGg+MSYmKHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbci5hdCgtMSldLDApKTtzP3MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KGEpP2EubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtpLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksaSl9Y29uc3Qgcj1uZXcgU3RyaW5nU3RyZWFtKGUpO3IuZGljdD1uZXcgRGljdChhKTtyLmRpY3Quc2V0KCJUeXBlIixOYW1lLmdldCgiRW1iZWRkZWRGaWxlIikpO2kucHV0KHQse2RhdGE6cn0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOml9b2YgZSlpLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGkubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGkpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBpPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1baS50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1yLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7ci5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXt3cml0ZVN0cmluZyhlLG8sbik7bys9ZS5sZW5ndGh9cmV0dXJuIGJ5dGVzVG9TdHJpbmcoZW8obikpfShlLHQpO2kuc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LGNoYW5nZXM6aSx4cmVmOmE9bnVsbCxoYXNYZmE6cj0hMSx4ZmFEYXRhc2V0c1JlZjpzPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTpuPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmc9bnVsbCxhY3JvRm9ybTpjPW51bGwseGZhRGF0YTpsPW51bGwsdXNlWHJlZlN0cmVhbTpoPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOmksaGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpyLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm4sY2hhbmdlczpvfSl7IWF8fHJ8fHN8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIW4mJighYXx8IXN8fHIpKXJldHVybjtjb25zdCBnPXQuY2xvbmUoKTtpZihhJiYhcil7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHMpO2cuc2V0KCJYRkEiLGUpfW4mJmcuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtvLnB1dChpLHtkYXRhOmd9KX0oe3hyZWY6YSxhY3JvRm9ybTpjLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOnIsaGFzWGZhRGF0YXNldHNFbnRyeTpuLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm8sY2hhbmdlczppfSk7ciYmdXBkYXRlWEZBKHt4ZmFEYXRhOmwseGZhRGF0YXNldHNSZWY6cyxjaGFuZ2VzOmkseHJlZjphfSk7Y29uc3QgQz1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldCgiUHJldiIsZS5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYoaSl7dC5wdXQocix7ZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIsci5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCksUT1bXSxFPWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlcyhlLHQsaT1bXSl7Y29uc3QgYT1bXTtmb3IoY29uc3Rbcix7ZGF0YTpzfV1vZiBlLml0ZW1zKCkpaWYobnVsbCE9PXMmJiJzdHJpbmciIT10eXBlb2Ygcyl7YXdhaXQgd3JpdGVPYmplY3QocixzLGksdCk7YS5wdXNoKHtyZWY6cixkYXRhOmkuam9pbigiIil9KTtpLmxlbmd0aD0wfWVsc2UgYS5wdXNoKHtyZWY6cixkYXRhOnN9KTtyZXR1cm4gYS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpfShpLGEsUSk7bGV0IHU9ZS5sZW5ndGg7Y29uc3QgZD1lLmF0KC0xKTtpZigxMCE9PWQmJjEzIT09ZCl7US5wdXNoKCJcbiIpO3UrPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBFKW51bGwhPT1lJiZRLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxyKXtjb25zdCBzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtzLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3MucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksbD1uZXcgVWludDhBcnJheShjKnMubGVuZ3RoKSxoPW5ldyBTdHJlYW0obCk7aC5kaWN0PWE7bGV0IEM9MDtmb3IoY29uc3RbZSx0LGldb2Ygcyl7Qz13cml0ZUludChlLGdbMF0sQyxsKTtDPXdyaXRlSW50KHQsZ1sxXSxDLGwpO0M9d3JpdGVJbnQoaSxnWzJdLEMsbCl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxyLHt9KTtyLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LHUsRSxDLFEpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHIpe3IucHVzaCgieHJlZlxuIik7Y29uc3Qgcz1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXNbbl0pe3IucHVzaChgJHtzW25dfSAke3NbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3IucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSByLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtyLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHIpO3IucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCx1LEUsQyxRKSk7Y29uc3QgZj1RLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxwPW5ldyBVaW50OEFycmF5KGYpO3Auc2V0KGUpO2xldCBtPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIFEpe3dyaXRlU3RyaW5nKGUsbSxwKTttKz1lLmxlbmd0aH1yZXR1cm4gcH1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgaT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChpKTtyZXR1cm4gaX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fbXNnSGFuZGxlcj1pO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGE9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPWEuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2xldCBpPSExO2Uub24oInRlc3QiLCh0PT57aWYoIWkpe2k9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGU9PnshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKEl0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC4xMC4zOCI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgbD1bXTtmb3IoY29uc3QgZSBpbltdKWwucHVzaChlKTtpZihsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitsLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IEM9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhDLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO0Muc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7Qy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2kudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTtDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsd3JhcFJlYXNvbihlKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgbD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOkMsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfTtpZihlKXtsLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGwpfWNvbnN0IGg9bmV3IFBERldvcmtlclN0cmVhbShDKSxRPWguZ2V0RnVsbFJlYWRlcigpLEU9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IHUsZD1bXSxmPTA7US5oZWFkZXJzUmVhZHkudGhlbigoZnVuY3Rpb24oKXtpZihRLmlzUmFuZ2VTdXBwb3J0ZWQpe2wuc291cmNlPWg7bC5sZW5ndGg9US5jb250ZW50TGVuZ3RoO2wuZGlzYWJsZUF1dG9GZXRjaHx8PVEuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dT1uZXcgTmV0d29ya1BkZk1hbmFnZXIobCk7Zm9yKGNvbnN0IGUgb2YgZCl1LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7ZD1bXTtFLnJlc29sdmUodSk7cj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe2lmKCF1KXtjb25zdCBlPWFycmF5QnVmZmVyc1RvQnl0ZXMoZCk7ZD1bXTtzJiZlLmxlbmd0aCE9PXMmJndhcm4oInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO2wuc291cmNlPWU7dT1uZXcgTG9jYWxQZGZNYW5hZ2VyKGwpO0UucmVzb2x2ZSh1KX1yPW51bGw7cmV0dXJufWYrPWUuYnl0ZUxlbmd0aDtRLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxDLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmYsdG90YWw6TWF0aC5tYXgoZixRLmNvbnRlbnRMZW5ndGh8fDApfSk7dT91LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6ZC5wdXNoKGUpO1EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtRLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO3I9ZT0+e2guY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBFLnByb21pc2V9KShlKS50aGVuKChmdW5jdGlvbihlKXtpZihhKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1pPWU7aS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKChlPT57Qy5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSkpfSkpLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9Qy5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmUoZSwicm90YXRlIiksaS5lbnN1cmUoZSwicmVmIiksaS5lbnN1cmUoZSwidXNlclVuaXQiKSxpLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGksYV0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDppLHZpZXc6YX19KSl9KSl9KSk7Qy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7Qy5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7Qy5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTtDLm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO0Mub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7Qy5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO0Mub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTtDLm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO0Mub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTtDLm9uKCJHZXREb2NKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pKTtDLm9uKCJHZXRQYWdlSlNBY3Rpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7Qy5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO0Mub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO0Mub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTtDLm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGkuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO0Mub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTtDLm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO0Mub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBpLmdldEFubm90YXRpb25zRGF0YShDLGEsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7dGhyb3cgZX0pKX0pKX0pKTtDLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO0Mub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7Qy5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO0Mub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6cn0pe2NvbnN0IHM9W2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksaS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGkuZW5zdXJlRG9jKCJ4cmVmIiksaS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxpLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLG49bmV3IFJlZlNldENhY2hlLG89W10sZz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2MsbCxoLFEsRSx1LGRdPWF3YWl0IFByb21pc2UuYWxsKHMpLGY9RS50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBwO2lmKGcpe2Q/YXdhaXQgZC5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmkseHJlZjpFLG5ld0Fubm90YXRpb25zQnlQYWdlOmd9KSYmKHA9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpnfSkmJihwPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxFLGkuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1wP286W107Zm9yKGNvbnN0W2Escl1vZiBnKXQucHVzaChpLmdldFBhZ2UoYSkudGhlbigodD0+e2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoQyxpLHIsZSxuKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO251bGw9PT1wP28ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYygpPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zyx4cmVmOkUsY2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxjaGFuZ2VzOm59KX0pKSk6cCYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jKCk9Pnthd2FpdCBwLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmcscGRmTWFuYWdlcjppLGNoYW5nZXM6bn0pfSkpKX1pZihlKW8ucHVzaChpLnNlcmlhbGl6ZVhmYURhdGEoYSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlKEMsaSxhLG4pLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7Y29uc3QgbT1hd2FpdCBQcm9taXNlLmFsbChvKTtsZXQgeT1udWxsO2lmKGUpe3k9bVswXTtpZigheSlyZXR1cm4gYy5ieXRlc31lbHNlIGlmKDA9PT1uLnNpemUpcmV0dXJuIGMuYnl0ZXM7Y29uc3Qgdz1oJiZsIGluc3RhbmNlb2YgRGljdCYmbi52YWx1ZXMoKS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGI9bCBpbnN0YW5jZW9mIERpY3QmJmwuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgRD1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBlPTAsdD1iLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09YltlXSl7RD1iW2UrMV07Uz0hMH1udWxsPT09RCYmKEQ9RS5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBiJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgaz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKEUudHJhaWxlcil7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9RS50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgdCkic3RyaW5nIj09dHlwZW9mIGEmJihlW2ldPXN0cmluZ1RvUERGU3RyaW5nKGEpKTtrPXtyb290UmVmOmYsZW5jcnlwdFJlZjpFLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOkUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpFLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6RS50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6dT9ROkUubGFzdFhSZWZTdHJlYW1Qb3M/P1EsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Yy5ieXRlcyx4cmVmSW5mbzprLGNoYW5nZXM6bix4cmVmOkUsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpoLGFjcm9Gb3JtOmwseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KEUudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntFLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7Qy5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PWJBP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpDLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhyKTtzJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktc31tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7ci50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO0Mub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6YSxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9PWU7aS5nZXRQYWdlKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrYSk7c3RhcnRXb3JrZXJUYXNrKGkpO2NvbnN0IG89bj49YkE/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOkMsdGFzazppLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSk7byYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtDLm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKX0pKX0pKTtDLm9uKCJGb250RmFsbGJhY2siLChmdW5jdGlvbihlKXtyZXR1cm4gaS5mb250RmFsbGJhY2soZS5pZCxDKX0pKTtDLm9uKCJDbGVhbnVwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2xlYW51cCghMCl9KSk7Qy5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24oZSl7YT0hMDtjb25zdCB0PVtdO2lmKGkpe2kudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWkuY2xlYW51cCgpO3QucHVzaChlKTtpPW51bGx9ZWxzZSBjbGVhckdsb2JhbENhY2hlcygpO3I/LihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7Qy5kZXN0cm95KCk7Qz1udWxsfSkpfSkpO0Mub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dmFyIHVvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e3VvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function rS(t,e,n){const l=t.contentWindow.document.createElement("style");l.textContent=`\n @page {\n margin: 3mm;\n size: ${e}pt ${n}pt;\n }\n body {\n margin: 0;\n }\n canvas {\n width: 100%;\n page-break-after: always;\n page-break-before: avoid;\n page-break-inside: avoid;\n }\n `,t.contentWindow.document.head.appendChild(l),t.contentWindow.document.body.style.width="100%"}function oS(t){return new Promise((e=>{const n=document.createElement("iframe");n.width="0",n.height="0",n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.border="none",n.style.overflow="hidden",n.onload=()=>e(n),t.appendChild(n)}))}function cS(t,e){const n=URL.createObjectURL(new Blob([t],{type:"application/pdf"})),l=document.createElement("a");l.href=n,l.download=e,l.style.display="none",document.body.append(l),l.click(),setTimeout((()=>{URL.revokeObjectURL(n),document.body.removeChild(l)}),1e3)}function dS(t){for(;null!=t&&t.firstChild;)t.removeChild(t.firstChild)}function uS(t){null==t||t.querySelectorAll("canvas").forEach((t=>{var e;t.width=1,t.height=1,null==(e=t.getContext("2d"))||e.clearRect(0,0,1,1)}))}function hS(t){return Object.prototype.hasOwnProperty.call(t,"_pdfInfo")}function mS({onError:t,onPasswordRequest:e,onProgress:n,source:l}){const i=(0,ji.IJ)(null),a=(0,ji.IJ)(null);return(0,r.nT)((async()=>{const s=(0,ji.BA)(l);if(s){if(hS(s))return void(i.value=s);try{a.value=aS(s),e&&(a.value.onPassword=(t,n)=>{e({callback:t,isWrongPassword:n===lS.INCORRECT_PASSWORD})}),n&&(a.value.onProgress=n),i.value=await a.value.promise}catch(lG){if(i.value=null,!t)throw lG;t(lG)}}})),(0,r.wB)(i,((t,e)=>{null==e||e.destroy()})),(0,r.xo)((()=>{var t,e,n,s;null!=(t=a.value)&&t.onPassword&&(a.value.onPassword=null),null!=(e=a.value)&&e.onProgress&&(a.value.onProgress=null),null==(n=a.value)||n.destroy(),hS((0,ji.BA)(l))||null==(s=i.value)||s.destroy()})),{doc:i}}var US={d:(t,e)=>{for(var n in e)US.o(e,n)&&!US.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},pS=globalThis.pdfjsViewer={};US.d(pS,{AnnotationLayerBuilder:()=>sQ,DownloadManager:()=>oQ,EventBus:()=>hQ,FindState:()=>UW,GenericL10n:()=>qy,LinkTarget:()=>iV,PDFFindController:()=>nV,PDFHistory:()=>WT,PDFLinkService:()=>oV,PDFPageView:()=>Ug,PDFScriptingManager:()=>Zg,PDFSinglePageViewer:()=>NE,PDFViewer:()=>ZE,ProgressBar:()=>HS,RenderingStates:()=>yS,ScrollMode:()=>gS,SimpleLinkService:()=>cV,SpreadMode:()=>ES,StructTreeLayerBuilder:()=>eM,TextLayerBuilder:()=>ZM,XfaLayerBuilder:()=>NM,parseQueryString:()=>JS});const FS="auto",bS=1,ZS=1.1,NS=.1,RS=10,SS=0,WS=1.25,VS=40,QS=5,yS={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},TS={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},MS={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},gS={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},ES={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};function GS(t,e,n=!1){let l=t.offsetParent;if(!l)return void console.error("offsetParent is not set -- cannot scroll");let i=t.offsetTop+t.clientTop,a=t.offsetLeft+t.clientLeft;for(;l.clientHeight===l.scrollHeight&&l.clientWidth===l.scrollWidth||n&&(l.classList.contains("markedContent")||"hidden"===getComputedStyle(l).overflow);)if(i+=l.offsetTop,a+=l.offsetLeft,l=l.offsetParent,!l)return;e&&(void 0!==e.top&&(i+=e.top),void 0!==e.left&&(a+=e.left,l.scrollLeft=a)),l.scrollTop=i}function BS(t,e,n=void 0){const l=function(n){a||(a=window.requestAnimationFrame((function(){a=null;const n=t.scrollLeft,l=i.lastX;n!==l&&(i.right=n>l),i.lastX=n;const s=t.scrollTop,r=i.lastY;s!==r&&(i.down=s>r),i.lastY=s,e(i)})))},i={right:!0,down:!0,lastX:t.scrollLeft,lastY:t.scrollTop,_eventHandler:l};let a=null;return t.addEventListener("scroll",l,{useCapture:!0,signal:n}),null==n||n.addEventListener("abort",(()=>window.cancelAnimationFrame(a)),{once:!0}),i}function JS(t){const e=new Map;for(const[n,l]of new URLSearchParams(t))e.set(n.toLowerCase(),l);return e}const kS=/[\x00-\x1F]/g;function YS(t,e=!1){return kS.test(t)?e?t.replaceAll(kS,(t=>"\0"===t?"":" ")):t.replaceAll("\0",""):t}function CS(t,e,n=0){let l=n,i=t.length-1;if(i<0||!e(t[i]))return t.length;if(e(t[l]))return l;for(;l>1,a=t[n];e(a)?i=n:l=n+1}return l}function XS(t){if(Math.floor(t)===t)return[t,1];const e=1/t,n=8;if(e>n)return[1,n];if(Math.floor(e)===e)return[1,e];const l=t>1?e:t;let i,a=0,s=1,r=1,o=1;for(;;){const t=a+r,e=s+o;if(e>n)break;l<=t/e?(r=t,o=e):(a=t,s=e)}return i=l-a/s=n&&(l=e[t-1].div,i=l.offsetTop+l.clientTop);for(let a=t-2;a>=0&&(l=e[a].div,!(l.offsetTop+l.clientTop+l.clientHeight<=i));--a)t=a;return t}function fS({scrollEl:t,views:e,sortByVisibility:n=!1,horizontal:l=!1,rtl:i=!1}){const a=t.scrollTop,s=a+t.clientHeight,r=t.scrollLeft,o=r+t.clientWidth;function c(t){const e=t.div;return e.offsetTop+e.clientTop+e.clientHeight>a}function d(t){const e=t.div,n=e.offsetLeft+e.clientLeft,l=n+e.clientWidth;return i?nr}const u=[],h=new Set,m=e.length;let U=CS(e,l?d:c);U>0&&U=s&&(p=F);else if((l?i:c)>p)break;if(F<=a||c>=s||U<=r||i>=o)continue;const b=Math.max(0,a-c)+Math.max(0,F-s),N=Math.max(0,r-i)+Math.max(0,U-o),R=(m-b)/m,S=(d-N)/d,W=R*S*100|0;u.push({id:t.id,x:i,y:c,view:t,percent:W,widthPercent:100*S|0}),h.add(t.id)}const F=u[0],b=u.at(-1);return n&&u.sort((function(t,e){const n=t.percent-e.percent;return Math.abs(n)>.001?-n:t.id-e.id})),{first:F,last:b,views:u,ids:h}}function LS(t){return Number.isInteger(t)&&t%90===0}function wS(t){return Number.isInteger(t)&&Object.values(gS).includes(t)&&t!==gS.UNKNOWN}function xS(t){return Number.isInteger(t)&&Object.values(ES).includes(t)&&t!==ES.UNKNOWN}function zS(t){return t.width<=t.height}new Promise((function(t){window.requestAnimationFrame(t)}));const vS=document.documentElement.style;function OS(t,e,n){return Math.min(Math.max(t,e),n)}var _S,jS,KS,PS,AS;class HS{constructor(t){ta(this,_S,null),ta(this,jS,null),ta(this,KS,0),ta(this,PS,null),ta(this,AS,!0),ea(this,_S,t.classList),ea(this,PS,t.style)}get percent(){return $i(this,KS)}set percent(t){ea(this,KS,OS(t,0,100)),isNaN(t)?$i(this,_S).add("indeterminate"):($i(this,_S).remove("indeterminate"),$i(this,PS).setProperty("--progressBar-percent",`${$i(this,KS)}%`))}setWidth(t){if(!t)return;const e=t.parentNode.offsetWidth-t.offsetWidth;e>0&&$i(this,PS).setProperty("--progressBar-end-offset",`${e}px`)}setDisableAutoFetch(t=5e3){100===$i(this,KS)||isNaN($i(this,KS))||($i(this,jS)&&clearTimeout($i(this,jS)),this.show(),ea(this,jS,setTimeout((()=>{ea(this,jS,null),this.hide()}),t)))}hide(){$i(this,AS)&&(ea(this,AS,!1),$i(this,_S).add("hidden"))}show(){$i(this,AS)||(ea(this,AS,!0),$i(this,_S).remove("hidden"))}}function qS(t){let e=gS.VERTICAL,n=ES.NONE;switch(t){case"SinglePage":e=gS.PAGE;break;case"OneColumn":break;case"TwoPageLeft":e=gS.PAGE;case"TwoColumnLeft":n=ES.ODD;break;case"TwoPageRight":e=gS.PAGE;case"TwoColumnRight":n=ES.EVEN;break}return{scrollMode:e,spreadMode:n}}_S=new WeakMap,jS=new WeakMap,KS=new WeakMap,PS=new WeakMap,AS=new WeakMap;const $S=function(){const t=document.createElement("div");return t.style.width="round(down, calc(1.6666666666666665 * 792px), 1px)","calc(1320px)"===t.style.width?Math.fround:t=>t}(),tW={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function eW(t){return t<11904}function nW(t){return 0===(65408&t)}function lW(t){return t>=97&&t<=122||t>=65&&t<=90}function iW(t){return t>=48&&t<=57}function aW(t){return 32===t||9===t||13===t||10===t}function sW(t){return t>=13312&&t<=40959||t>=63744&&t<=64255}function rW(t){return t>=12448&&t<=12543}function oW(t){return t>=12352&&t<=12447}function cW(t){return t>=65376&&t<=65439}function dW(t){return 3584===(65408&t)}function uW(t){return eW(t)?nW(t)?aW(t)?tW.SPACE:lW(t)||iW(t)||95===t?tW.ALPHA_LETTER:tW.PUNCT:dW(t)?tW.THAI_LETTER:160===t?tW.SPACE:tW.ALPHA_LETTER:sW(t)?tW.HAN_LETTER:rW(t)?tW.KATAKANA_LETTER:oW(t)?tW.HIRAGANA_LETTER:cW(t)?tW.HALFWIDTH_KATAKANA_LETTER:tW.ALPHA_LETTER}let hW;function mW(){return hW||(hW=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),hW}const UW={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},pW=250,FW=-50,bW=-400,ZW={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},NW=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let RW;const SW=new RegExp("\\p{M}+","gu"),WW=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),VW=new RegExp("([^\\p{M}])\\p{M}*$","u"),QW=new RegExp("^\\p{M}*([^\\p{M}])","u"),yW=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,TW=new Map,MW="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",gW=new Map;let EW=null,GW=null;function BW(t){const e=[];let n,l;for(;null!==(n=yW.exec(t));){let{index:t}=n;for(const l of n[0]){let n=TW.get(l);n||(n=l.normalize("NFD").length,TW.set(l,n)),e.push([n,t++])}}if(0===e.length&&EW)l=EW;else if(e.length>0&&GW)l=GW;else{const t=Object.keys(ZW).join(""),n=mW(),i=`([${t}])|([${n}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\p{Ll}-\\n\\p{Lu})|(\\S-\\n)|((?:\\p{Ideographic}|[぀-ヿ])\\n)|(\\n)`;l=0===e.length?EW=new RegExp(i+"|(\\u0000)","gum"):GW=new RegExp(i+`|(${MW})`,"gum")}const i=[];for(;null!==(n=SW.exec(t));)i.push([n[0].length,n.index]);let a=t.normalize("NFD");const s=[0,0];let r=0,o=0,c=0,d=0,u=0,h=!1;a=a.replace(l,((t,n,l,a,m,U,p,F,b,Z,N)=>{var R,S,W;if(N-=d,n){const t=ZW[n],e=t.length;for(let n=1;n>1),U=new Int32Array(s.length>>1);for(let p=0,F=s.length;p>1]=s[p],U[p>>1]=s[p+1];return[a,[m,U],h]}function JW(t,e,n){if(!t)return[e,n];const[l,i]=t,a=e,s=e+n-1;let r=CS(l,(t=>t>=a));l[r]>a&&--r;let o=CS(l,(t=>t>=s),r);l[o]>s&&--o;const c=a+i[r],d=s+i[o]+1-c;return[c,d]}var kW,YW,CW,XW,IW,DW,fW,LW,wW,xW,zW,vW,OW,_W,jW,KW,PW,AW,HW,qW,$W,tV,eV;class nV{constructor({linkService:t,eventBus:e,updateMatchesCountOnProgress:n=!0}){ta(this,XW),ta(this,kW,null),ta(this,YW,!0),ta(this,CW,0),this._linkService=t,this._eventBus=e,ea(this,YW,n),this.onIsPageVisible=null,na(this,XW,DW).call(this),e._on("find",na(this,XW,IW).bind(this)),e._on("findbarclose",na(this,XW,qW).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return $i(this,kW)}setDocument(t){this._pdfDocument&&na(this,XW,DW).call(this),t&&(this._pdfDocument=t,this._firstPageCapability.resolve())}scrollMatchIntoView({element:t=null,selectedLeft:e=0,pageIndex:n=-1,matchIndex:l=-1}){if(!this._scrollMatches||!t)return;if(-1===l||l!==this._selected.matchIdx)return;if(-1===n||n!==this._selected.pageIdx)return;this._scrollMatches=!1;const i={top:FW,left:e+bW};GS(t,i,!0)}match(t,e,n){const l=this._hasDiacritics[n];let i=!1;if("string"==typeof t?[i,t]=na(this,XW,xW).call(this,t,l):t=t.sort().reverse().map((t=>{const[e,n]=na(this,XW,xW).call(this,t,l);return i||(i=e),`(${n})`})).join("|"),!t)return;const{caseSensitive:a,entireWord:s}=$i(this,kW),r=`g${i?"u":""}${a?"":"i"}`;t=new RegExp(t,r);const o=[];let c;for(;null!==(c=t.exec(e));)s&&!na(this,XW,wW).call(this,e,c.index,c[0].length)||o.push({index:c.index,length:c[0].length});return o}}kW=new WeakMap,YW=new WeakMap,CW=new WeakMap,XW=new WeakSet,IW=function(t){if(!t)return;const e=this._pdfDocument,{type:n}=t;(null===$i(this,kW)||na(this,XW,LW).call(this,t))&&(this._dirtyMatch=!0),ea(this,kW,t),"highlightallchange"!==n&&na(this,XW,eV).call(this,UW.PENDING),this._firstPageCapability.promise.then((()=>{if(!this._pdfDocument||e&&this._pdfDocument!==e)return;na(this,XW,vW).call(this);const t=!this._highlightMatches,l=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),n?this._dirtyMatch?na(this,XW,jW).call(this):"again"===n?(na(this,XW,jW).call(this),t&&$i(this,kW).highlightAll&&na(this,XW,_W).call(this)):"highlightallchange"===n?(l?na(this,XW,jW).call(this):this._highlightMatches=!0,na(this,XW,_W).call(this)):na(this,XW,jW).call(this):this._findTimeout=setTimeout((()=>{na(this,XW,jW).call(this),this._findTimeout=null}),pW)}))},DW=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],ea(this,CW,0),ea(this,kW,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},fW=function(){const{query:t}=$i(this,kW);return"string"==typeof t?(t!==this._rawQuery&&(this._rawQuery=t,[this._normalizedQuery]=BW(t)),this._normalizedQuery):(t||[]).filter((t=>!!t)).map((t=>BW(t)[0]))},LW=function(t){var e;const n=t.query,l=$i(this,kW).query,i=typeof n;if(i!==typeof l)return!0;if("string"===i){if(n!==l)return!0}else if(JSON.stringify(n)!==JSON.stringify(l))return!0;switch(t.type){case"again":const t=this._selected.pageIdx+1,n=this._linkService;return t>=1&&t<=n.pagesCount&&t!==n.page&&!((null==(e=this.onIsPageVisible)?void 0:e.call(this,t))??1);case"highlightallchange":return!1}return!0},wW=function(t,e,n){let l=t.slice(0,e).match(VW);if(l){const n=t.charCodeAt(e),i=l[1].charCodeAt(0);if(uW(n)===uW(i))return!1}if(l=t.slice(e+n).match(QW),l){const i=t.charCodeAt(e+n-1),a=l[1].charCodeAt(0);if(uW(i)===uW(a))return!1}return!0},xW=function(t,e){const{matchDiacritics:n}=$i(this,kW);let l=!1;t=t.replaceAll(WW,((t,i,a,s,r,o)=>i?`[ ]*\\${i}[ ]*`:a?`[ ]*${a}[ ]*`:s?"[ ]+":n?r||o:r?NW.has(r.charCodeAt(0))?r:"":e?(l=!0,`${o}\\p{M}*`):o));const i="[ ]*";return t.endsWith(i)&&(t=t.slice(0,t.length-i.length)),n&&e&&(RW||(RW=String.fromCharCode(...NW)),l=!0,t=`${t}(?=[${RW}]|[^\\p{M}]|$)`),[l,t]},zW=function(t){const e=$i(this,XW,fW);if(0===e.length)return;const n=this._pageContents[t],l=this.match(e,n,t),i=this._pageMatches[t]=[],a=this._pageMatchesLength[t]=[],s=this._pageDiffs[t];null==l||l.forEach((({index:t,length:e})=>{const[n,l]=JW(s,t,e);l&&(i.push(n),a.push(l))})),$i(this,kW).highlightAll&&na(this,XW,OW).call(this,t),this._resumePageIdx===t&&(this._resumePageIdx=null,na(this,XW,PW).call(this));const r=i.length;this._matchesCountTotal+=r,$i(this,YW)?r>0&&na(this,XW,tV).call(this):++la(this,CW)._===this._linkService.pagesCount&&na(this,XW,tV).call(this)},vW=function(){if(this._extractTextPromises.length>0)return;let t=Promise.resolve();const e={disableNormalization:!0};for(let n=0,l=this._linkService.pagesCount;nthis._pdfDocument.getPage(n+1).then((t=>t.getTextContent(e))).then((t=>{const e=[];for(const n of t.items)e.push(n.str),n.hasEOL&&e.push("\n");[this._pageContents[n],this._pageDiffs[n],this._hasDiacritics[n]]=BW(e.join("")),i()}),(t=>{console.error(`Unable to get text content for page ${n+1}`,t),this._pageContents[n]="",this._pageDiffs[n]=null,this._hasDiacritics[n]=!1,i()}))))}},OW=function(t){this._scrollMatches&&this._selected.pageIdx===t&&(this._linkService.page=t+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:t})},_W=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},jW=function(){const t=$i(this,kW).findPrevious,e=this._linkService.page-1,n=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=e,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,ea(this,CW,0),this._matchesCountTotal=0,na(this,XW,_W).call(this);for(let t=0;t{this._pendingFindMatches.delete(t),na(this,XW,zW).call(this,t)})))}if(0===$i(this,XW,fW).length)return void na(this,XW,eV).call(this,UW.FOUND);if(this._resumePageIdx)return;const l=this._offset;if(this._pagesToSearch=n,null!==l.matchIdx){const e=this._pageMatches[l.pageIdx].length;if(!t&&l.matchIdx+10)return l.matchIdx=t?l.matchIdx-1:l.matchIdx+1,void na(this,XW,HW).call(this,!0);na(this,XW,AW).call(this,t)}na(this,XW,PW).call(this)},KW=function(t){const e=this._offset,n=t.length,l=$i(this,kW).findPrevious;return n?(e.matchIdx=l?n-1:0,na(this,XW,HW).call(this,!0),!0):(na(this,XW,AW).call(this,l),!!(e.wrapped&&(e.matchIdx=null,this._pagesToSearch<0))&&(na(this,XW,HW).call(this,!1),!0))},PW=function(){null!==this._resumePageIdx&&console.error("There can only be one pending page.");let t=null;do{const e=this._offset.pageIdx;if(t=this._pageMatches[e],!t){this._resumePageIdx=e;break}}while(!na(this,XW,KW).call(this,t))},AW=function(t){const e=this._offset,n=this._linkService.pagesCount;e.pageIdx=t?e.pageIdx-1:e.pageIdx+1,e.matchIdx=null,this._pagesToSearch--,(e.pageIdx>=n||e.pageIdx<0)&&(e.pageIdx=t?n-1:0,e.wrapped=!0)},HW=function(t=!1){let e=UW.NOT_FOUND;const n=this._offset.wrapped;if(this._offset.wrapped=!1,t){const t=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,e=n?UW.WRAPPED:UW.FOUND,-1!==t&&t!==this._selected.pageIdx&&na(this,XW,OW).call(this,t)}na(this,XW,eV).call(this,e,$i(this,kW).findPrevious),-1!==this._selected.pageIdx&&(this._scrollMatches=!0,na(this,XW,OW).call(this,this._selected.pageIdx))},qW=function(t){const e=this._pdfDocument;this._firstPageCapability.promise.then((()=>{!this._pdfDocument||e&&this._pdfDocument!==e||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),na(this,XW,eV).call(this,UW.FOUND),this._highlightMatches=!1,na(this,XW,_W).call(this))}))},$W=function(){var t;const{pageIdx:e,matchIdx:n}=this._selected;let l=0,i=this._matchesCountTotal;if(-1!==n){for(let n=0;ni)&&(l=i=0),{current:l,total:i}},tV=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:na(this,XW,$W).call(this)})},eV=function(t,e=!1){var n,l;!$i(this,YW)&&($i(this,CW)!==this._linkService.pagesCount||t===UW.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:t,previous:e,entireWord:(null==(n=$i(this,kW))?void 0:n.entireWord)??null,matchesCount:na(this,XW,$W).call(this),rawQuery:(null==(l=$i(this,kW))?void 0:l.query)??null})};const lV="noopener noreferrer nofollow",iV={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var aV,sV;const rV=class t{constructor({eventBus:t,externalLinkTarget:e=null,externalLinkRel:n=null,ignoreDestinationZoom:l=!1}={}){Hi(this,"externalLinkEnabled",!0),this.eventBus=t,this.externalLinkTarget=e,this.externalLinkRel=n,this._ignoreDestinationZoom=l,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(t,e=null){this.baseUrl=e,this.pdfDocument=t}setViewer(t){this.pdfViewer=t}setHistory(t){this.pdfHistory=t}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(t){this.pdfDocument&&(this.pdfViewer.currentPageNumber=t)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(t){this.pdfDocument&&(this.pdfViewer.pagesRotation=t)}get isInPresentationMode(){return!!this.pdfDocument&&this.pdfViewer.isInPresentationMode}async goToDestination(t){if(!this.pdfDocument)return;let e,n,l;if("string"==typeof t?(e=t,n=await this.pdfDocument.getDestination(t)):(e=null,n=await t),!Array.isArray(n))return void console.error(`goToDestination: "${n}" is not a valid destination array, for dest="${t}".`);const[i]=n;if(i&&"object"==typeof i){if(l=this.pdfDocument.cachedPageNumber(i),!l)try{l=await this.pdfDocument.getPageIndex(i)+1}catch{return void console.error(`goToDestination: "${i}" is not a valid page reference, for dest="${t}".`)}}else Number.isInteger(i)&&(l=i+1);!l||l<1||l>this.pagesCount?console.error(`goToDestination: "${l}" is not a valid page number, for dest="${t}".`):(this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:e,explicitDest:n,pageNumber:l})),this.pdfViewer.scrollPageIntoView({pageNumber:l,destArray:n,ignoreDestinationZoom:this._ignoreDestinationZoom}))}goToPage(t){if(!this.pdfDocument)return;const e="string"==typeof t&&this.pdfViewer.pageLabelToPageNumber(t)||0|t;Number.isInteger(e)&&e>0&&e<=this.pagesCount?(this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(e)),this.pdfViewer.scrollPageIntoView({pageNumber:e})):console.error(`PDFLinkService.goToPage: "${t}" is not a valid page.`)}addLinkAttributes(t,e,n=!1){if(!e||"string"!=typeof e)throw new Error('A valid "url" parameter must provided.');const l=n?iV.BLANK:this.externalLinkTarget,i=this.externalLinkRel;this.externalLinkEnabled?t.href=t.title=e:(t.href="",t.title=`Disabled: ${e}`,t.onclick=()=>!1);let a="";switch(l){case iV.NONE:break;case iV.SELF:a="_self";break;case iV.BLANK:a="_blank";break;case iV.PARENT:a="_parent";break;case iV.TOP:a="_top";break}t.target=a,t.rel="string"==typeof i?i:lV}getDestinationHash(t){if("string"==typeof t){if(t.length>0)return this.getAnchorUrl("#"+escape(t))}else if(Array.isArray(t)){const e=JSON.stringify(t);if(e.length>0)return this.getAnchorUrl("#"+escape(e))}return this.getAnchorUrl("")}getAnchorUrl(t){return this.baseUrl?this.baseUrl+t:t}setHash(e){var n;if(!this.pdfDocument)return;let l,i;if(e.includes("=")){const t=JS(e);if(t.has("search")){const e=t.get("search").replaceAll('"',""),n="true"===t.get("phrase");this.eventBus.dispatch("findfromurlhash",{source:this,query:n?e:e.match(/\S+/g)})}if(t.has("page")&&(l=0|t.get("page")||1),t.has("zoom")){const e=t.get("zoom").split(","),n=e[0],l=parseFloat(n);n.includes("Fit")?"Fit"===n||"FitB"===n?i=[null,{name:n}]:"FitH"===n||"FitBH"===n||"FitV"===n||"FitBV"===n?i=[null,{name:n},e.length>1?0|e[1]:null]:"FitR"===n?5!==e.length?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):i=[null,{name:n},0|e[1],0|e[2],0|e[3],0|e[4]]:console.error(`PDFLinkService.setHash: "${n}" is not a valid zoom value.`):i=[null,{name:"XYZ"},e.length>1?0|e[1]:null,e.length>2?0|e[2]:null,l?l/100:n]}return i?this.pdfViewer.scrollPageIntoView({pageNumber:l||this.page,destArray:i,allowNegativeOffset:!0}):l&&(this.page=l),t.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:t.get("pagemode")}),void(t.has("nameddest")&&this.goToDestination(t.get("nameddest")))}i=unescape(e);try{i=JSON.parse(i),Array.isArray(i)||(i=i.toString())}catch{}"string"==typeof i||na(n=t,aV,sV).call(n,i)?this.goToDestination(i):console.error(`PDFLinkService.setHash: "${unescape(e)}" is not a valid destination.`)}executeNamedAction(t){var e,n;if(this.pdfDocument){switch(t){case"GoBack":null==(e=this.pdfHistory)||e.back();break;case"GoForward":null==(n=this.pdfHistory)||n.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:t})}}async executeSetOCGState(t){if(!this.pdfDocument)return;const e=this.pdfDocument,n=await this.pdfViewer.optionalContentConfigPromise;e===this.pdfDocument&&(n.setOCGState(t),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(n))}};aV=new WeakSet,sV=function(t){if(!Array.isArray(t)||t.length<2)return!1;const[e,n,...l]=t;if(("object"!=typeof e||!Number.isInteger(null==e?void 0:e.num)||!Number.isInteger(null==e?void 0:e.gen))&&!Number.isInteger(e)||"object"!=typeof n||"string"!=typeof(null==n?void 0:n.name))return!1;const i=l.length;let a=!0;switch(n.name){case"XYZ":if(i<2||i>3)return!1;break;case"Fit":case"FitB":return 0===i;case"FitH":case"FitBH":case"FitV":case"FitBV":if(i>1)return!1;break;case"FitR":if(4!==i)return!1;a=!1;break;default:return!1}for(const s of l)if(!("number"==typeof s||a&&null===s))return!1;return!0},ta(rV,aV);let oV=rV;class cV extends oV{setDocument(t,e=null){}}const{AbortException:dV,AnnotationEditorLayer:uV,AnnotationEditorParamsType:hV,AnnotationEditorType:mV,AnnotationEditorUIManager:UV,AnnotationLayer:pV,AnnotationMode:FV,build:bV,ColorPicker:ZV,createValidAbsoluteUrl:NV,DOMSVGFactory:RV,DrawLayer:SV,FeatureTest:WV,fetchData:VV,getDocument:QV,getFilenameFromUrl:yV,getPdfFilenameFromUrl:TV,getXfaPageViewport:MV,GlobalWorkerOptions:gV,ImageKind:EV,InvalidPDFException:GV,isDataScheme:BV,isPdfFile:JV,MissingPDFException:kV,noContextMenu:YV,normalizeUnicode:CV,OPS:XV,OutputScale:IV,PasswordResponses:DV,PDFDataRangeTransport:fV,PDFDateString:LV,PDFWorker:wV,PermissionFlag:xV,PixelsPerInch:zV,RenderingCancelledException:vV,setLayerDimensions:OV,shadow:_V,stopEvent:jV,TextLayer:KV,TouchManager:PV,UnexpectedResponseException:AV,Util:HV,VerbosityLevel:qV,version:$V,XfaLayer:tQ}=globalThis.pdfjsLib;var eQ,nQ,lQ,iQ,aQ;class sQ{constructor({pdfPage:t,linkService:e,downloadManager:n,annotationStorage:l=null,imageResourcesPath:i="",renderForms:a=!0,enableScripting:s=!1,hasJSActionsPromise:r=null,fieldObjectsPromise:o=null,annotationCanvasMap:c=null,accessibilityManager:d=null,annotationEditorUIManager:u=null,onAppend:h=null}){ta(this,lQ),ta(this,eQ,null),ta(this,nQ,null),this.pdfPage=t,this.linkService=e,this.downloadManager=n,this.imageResourcesPath=i,this.renderForms=a,this.annotationStorage=l,this.enableScripting=s,this._hasJSActionsPromise=r||Promise.resolve(!1),this._fieldObjectsPromise=o||Promise.resolve(null),this._annotationCanvasMap=c,this._accessibilityManager=d,this._annotationEditorUIManager=u,ea(this,eQ,h),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=e.eventBus}async render(t,e,n="display"){var l,i;if(this.div){if(this._cancelled||!this.annotationLayer)return;return void this.annotationLayer.update({viewport:t.clone({dontFlip:!0})})}const[a,s,r]=await Promise.all([this.pdfPage.getAnnotations({intent:n}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const o=this.div=document.createElement("div");o.className="annotationLayer",null==(l=$i(this,eQ))||l.call(this,o),0!==a.length?(this.annotationLayer=new pV({div:o,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:t.clone({dontFlip:!0}),structTreeLayer:(null==e?void 0:e.structTreeLayer)||null}),await this.annotationLayer.render({annotations:a,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:s,fieldObjects:r}),this.linkService.isInPresentationMode&&na(this,lQ,iQ).call(this,TS.FULLSCREEN),$i(this,nQ)||(ea(this,nQ,new AbortController),null==(i=this._eventBus)||i._on("presentationmodechanged",(t=>{na(this,lQ,iQ).call(this,t.state)}),{signal:$i(this,nQ).signal}))):this.hide()}cancel(){var t;this._cancelled=!0,null==(t=$i(this,nQ))||t.abort(),ea(this,nQ,null)}hide(){this.div&&(this.div.hidden=!0)}hasEditableAnnotations(){var t;return!(null==(t=this.annotationLayer)||!t.hasEditableAnnotations())}}function rQ(t,e){const n=document.createElement("a");if(!n.click)throw new Error('DownloadManager: "a.click()" is not supported.');n.href=t,n.target="_parent","download"in n&&(n.download=e),(document.body||document.documentElement).append(n),n.click(),n.remove()}eQ=new WeakMap,nQ=new WeakMap,lQ=new WeakSet,iQ=function(t){if(!this.div)return;let e=!1;switch(t){case TS.FULLSCREEN:e=!0;break;case TS.NORMAL:break;default:return}for(const n of this.div.childNodes)n.hasAttribute("data-internal-link")||(n.inert=e)};class oQ{constructor(){ta(this,aQ,new WeakMap)}downloadData(t,e,n){const l=URL.createObjectURL(new Blob([t],{type:n}));rQ(l,e)}openOrDownloadData(t,e,n=null){const l=JV(e)?"application/pdf":"";return this.downloadData(t,e,l),!1}download(t,e,n){let l;if(t)l=URL.createObjectURL(new Blob([t],{type:"application/pdf"}));else{if(!NV(e,"http://example.com"))return void console.error(`download - not a valid URL: ${e}`);l=e+"#pdfjs.action=download"}rQ(l,n)}}aQ=new WeakMap;const cQ={EVENT:"event",TIMEOUT:"timeout"};async function dQ({target:t,name:e,delay:n=0}){if("object"!=typeof t||!e||"string"!=typeof e||!(Number.isInteger(n)&&n>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:l,resolve:i}=Promise.withResolvers(),a=new AbortController;function s(t){a.abort(),clearTimeout(o),i(t)}const r=t instanceof hQ?"_on":"addEventListener";t[r](e,s.bind(null,cQ.EVENT),{signal:a.signal});const o=setTimeout(s.bind(null,cQ.TIMEOUT),n);return l}var uQ;class hQ{constructor(){ta(this,uQ,Object.create(null))}on(t,e,n=null){this._on(t,e,{external:!0,once:null==n?void 0:n.once,signal:null==n?void 0:n.signal})}off(t,e,n=null){this._off(t,e)}dispatch(t,e){const n=$i(this,uQ)[t];if(!n||0===n.length)return;let l;for(const{listener:i,external:a,once:s}of n.slice(0))s&&this._off(t,i),a?(l||(l=[])).push(i):i(e);if(l){for(const t of l)t(e);l=null}}_on(t,e,n=null){var l;let i=null;if((null==n?void 0:n.signal)instanceof AbortSignal){const{signal:l}=n;if(l.aborted)return void console.error("Cannot use an `aborted` signal.");const a=()=>this._off(t,e);i=()=>l.removeEventListener("abort",a),l.addEventListener("abort",a)}((l=$i(this,uQ))[t]||(l[t]=[])).push({listener:e,external:!0===(null==n?void 0:n.external),once:!0===(null==n?void 0:n.once),rmAbort:i})}_off(t,e,n=null){var l;const i=$i(this,uQ)[t];if(i)for(let a=0,s=i.length;a1;for(const i of e)if("string"!=typeof i){if(t.placeables++,t.placeables>bQ)throw t.dirty.delete(e),new RangeError(`Too many placeables expanded: ${t.placeables}, max allowed is ${bQ}`);l&&n.push(ZQ),n.push(VQ(t,i).toString(t)),l&&n.push(NQ)}else n.push(t.bundle._transform(i));return t.dirty.delete(e),n.join("")}function GQ(t,e){return"string"==typeof e?t.bundle._transform(e):EQ(t,e)}class BQ{constructor(t,e,n){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=t,this.errors=e,this.args=n}reportError(t){if(!this.errors||!(t instanceof Error))throw t;this.errors.push(t)}memoizeIntlObject(t,e){let n=this.bundle._intls.get(t);n||(n={},this.bundle._intls.set(t,n));let l=JSON.stringify(e);return n[l]||(n[l]=new t(this.bundle.locales,e)),n[l]}}function JQ(t,e){const n=Object.create(null);for(const[l,i]of Object.entries(t))e.includes(l)&&(n[l]=i.valueOf());return n}const kQ=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function YQ(t,e){let n=t[0];if(n instanceof UQ)return new UQ(`NUMBER(${n.valueOf()})`);if(n instanceof pQ)return new pQ(n.valueOf(),{...n.opts,...JQ(e,kQ)});if(n instanceof FQ)return new pQ(n.valueOf(),{...JQ(e,kQ)});throw new TypeError("Invalid argument to NUMBER")}const CQ=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function XQ(t,e){let n=t[0];if(n instanceof UQ)return new UQ(`DATETIME(${n.valueOf()})`);if(n instanceof FQ)return new FQ(n.valueOf(),{...n.opts,...JQ(e,CQ)});if(n instanceof pQ)return new FQ(n.valueOf(),{...JQ(e,CQ)});throw new TypeError("Invalid argument to DATETIME")}const IQ=new Map;function DQ(t){const e=Array.isArray(t)?t.join(" "):t;let n=IQ.get(e);return void 0===n&&(n=new Map,IQ.set(e,n)),n}class fQ{constructor(t,{functions:e,useIsolating:n=!0,transform:l=t=>t}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(t)?t:[t],this._functions={NUMBER:YQ,DATETIME:XQ,...e},this._useIsolating=n,this._transform=l,this._intls=DQ(t)}hasMessage(t){return this._messages.has(t)}getMessage(t){return this._messages.get(t)}addResource(t,{allowOverrides:e=!1}={}){const n=[];for(let l=0;l\s*/y,ry=/\s*:\s*/y,oy=/\s*,?\s*/y,cy=/\s+/y;class dy{constructor(t){this.body=[],LQ.lastIndex=0;let e=0;for(;;){let n=LQ.exec(t);if(null===n)break;e=LQ.lastIndex;try{this.body.push(r(n[1]))}catch(Q){if(Q instanceof SyntaxError)continue;throw Q}}function n(n){return n.lastIndex=e,n.test(t)}function l(n,l){if(t[e]===n)return e++,!0;if(l)throw new l(`Expected ${n}`);return!1}function i(t,l){if(n(t))return e=t.lastIndex,!0;if(l)throw new l(`Expected ${t.toString()}`);return!1}function a(n){n.lastIndex=e;let l=n.exec(t);if(null===l)throw new SyntaxError(`Expected ${n.toString()}`);return e=n.lastIndex,l}function s(t){return a(t)[1]}function r(t){let e=c(),n=o();if(null===e&&0===Object.keys(n).length)throw new SyntaxError("Expected message value or attributes");return{id:t,value:e,attributes:n}}function o(){let t=Object.create(null);for(;n(wQ);){let e=s(wQ),n=c();if(null===n)throw new SyntaxError("Expected attribute value");t[e]=n}return t}function c(){let l;if(n(jQ)&&(l=s(jQ)),"{"===t[e]||"}"===t[e])return d(l?[l]:[],1/0);let i=S();return i?l?d([l,i],i.length):(i.value=W(i.value,HQ),d([i],i.length)):l?W(l,qQ):null}function d(l=[],i){for(;;){if(n(jQ)){l.push(s(jQ));continue}if("{"===t[e]){l.push(u());continue}if("}"===t[e])throw new SyntaxError("Unbalanced closing brace");let a=S();if(!a)break;l.push(a),i=Math.min(i,a.length)}let a=l.length-1,r=l[a];"string"==typeof r&&(l[a]=W(r,qQ));let o=[];for(let t of l)t instanceof uy&&(t=t.value.slice(0,t.value.length-i)),t&&o.push(t);return o}function u(){i(ey,SyntaxError);let t=h();if(i(ny))return t;if(i(sy)){let e=p();return i(ny,SyntaxError),{type:"select",selector:t,...e}}throw new SyntaxError("Unclosed placeable")}function h(){if("{"===t[e])return u();if(n(OQ)){let[,t,e,n=null]=a(OQ);if("$"===t)return{type:"var",name:e};if(i(ay)){let l=m();if("-"===t)return{type:"term",name:e,attr:n,args:l};if(_Q.test(e))return{type:"func",name:e,args:l};throw new SyntaxError("Function names must be all upper-case")}return"-"===t?{type:"term",name:e,attr:n,args:[]}:{type:"mesg",name:e,attr:n}}return b()}function m(){let n=[];for(;;){switch(t[e]){case")":return e++,n;case void 0:throw new SyntaxError("Unclosed argument list")}n.push(U()),i(oy)}}function U(){let t=h();return"mesg"!==t.type?t:i(ry)?{type:"narg",name:t.name,value:b()}:t}function p(){let t,e=[],i=0;for(;n(xQ);){l("*")&&(t=i);let n=F(),a=c();if(null===a)throw new SyntaxError("Expected variant value");e[i++]={key:n,value:a}}if(0===i)return null;if(void 0===t)throw new SyntaxError("Expected default variant");return{variants:e,star:t}}function F(){let t;return i(ly,SyntaxError),t=n(zQ)?Z():{type:"str",value:s(vQ)},i(iy,SyntaxError),t}function b(){if(n(zQ))return Z();if('"'===t[e])return N();throw new SyntaxError("Invalid expression")}function Z(){let[,t,e=""]=a(zQ),n=e.length;return{type:"num",value:parseFloat(t),precision:n}}function N(){l('"',SyntaxError);let n="";for(;;){if(n+=s(KQ),"\\"!==t[e]){if(l('"'))return{type:"str",value:n};throw new SyntaxError("Unclosed string literal")}n+=R()}}function R(){if(n(PQ))return s(PQ);if(n(AQ)){let[,t,e]=a(AQ),n=parseInt(t||e,16);return n<=55295||57344<=n?String.fromCodePoint(n):"�"}throw new SyntaxError("Unknown escape sequence")}function S(){let n=e;switch(i(cy),t[e]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return V(t.slice(n,e))}return" "===t[e-1]&&V(t.slice(n,e))}function W(t,e){return t.replace(e,"")}function V(t){let e=t.replace($Q,"\n"),n=ty.exec(t)[1].length;return new uy(e,n)}}}class uy{constructor(t,e){this.value=t,this.length=e}}const hy=/<|&#?\w+;/,my={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},Uy={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function py(t,e){const{value:n}=e;if("string"==typeof n)if("title"===t.localName&&"http://www.w3.org/1999/xhtml"===t.namespaceURI)t.textContent=n;else if(hy.test(n)){const e=t.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");e.innerHTML=n,Fy(e.content,t)}else t.textContent=n;Zy(e,t)}function Fy(t,e){for(const n of t.childNodes)if(n.nodeType!==n.TEXT_NODE){if(n.hasAttribute("data-l10n-name")){const l=Ny(e,n);t.replaceChild(l,n);continue}if(Wy(n)){const e=Ry(n);t.replaceChild(e,n);continue}console.warn(`An element of forbidden type "${n.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),t.replaceChild(Sy(n),n)}e.textContent="",e.appendChild(t)}function by(t,e){if(!t)return!1;for(let n of t)if(n.name===e)return!0;return!1}function Zy(t,e){const n=e.hasAttribute("data-l10n-attrs")?e.getAttribute("data-l10n-attrs").split(",").map((t=>t.trim())):null;for(const l of Array.from(e.attributes))Vy(l.name,e,n)&&!by(t.attributes,l.name)&&e.removeAttribute(l.name);if(t.attributes)for(const l of Array.from(t.attributes))Vy(l.name,e,n)&&e.getAttribute(l.name)!==l.value&&e.setAttribute(l.name,l.value)}function Ny(t,e){const n=e.getAttribute("data-l10n-name"),l=t.querySelector(`[data-l10n-name="${n}"]`);if(!l)return console.warn(`An element named "${n}" wasn't found in the source.`),Sy(e);if(l.localName!==e.localName)return console.warn(`An element named "${n}" was found in the translation but its type ${e.localName} didn't match the element found in the source (${l.localName}).`),Sy(e);t.removeChild(l);const i=l.cloneNode(!1);return Qy(e,i)}function Ry(t){const e=t.ownerDocument.createElement(t.localName);return Qy(t,e)}function Sy(t){return t.ownerDocument.createTextNode(t.textContent)}function Wy(t){const e=my[t.namespaceURI];return e&&e.includes(t.localName)}function Vy(t,e,n=null){if(n&&n.includes(t))return!0;const l=Uy[e.namespaceURI];if(!l)return!1;const i=t.toLowerCase(),a=e.localName;if(l.global.includes(i))return!0;if(!l[a])return!1;if(l[a].includes(i))return!0;if("http://www.w3.org/1999/xhtml"===e.namespaceURI&&"input"===a&&"value"===i){const t=e.type.toLowerCase();if("submit"===t||"button"===t||"reset"===t)return!0}return!1}function Qy(t,e){return e.textContent=t.textContent,Zy(t,e),e}class yy extends Array{static from(t){return t instanceof this?t:new this(t)}}class Ty extends yy{constructor(t){if(super(),Symbol.asyncIterator in Object(t))this.iterator=t[Symbol.asyncIterator]();else{if(!(Symbol.iterator in Object(t)))throw new TypeError("Argument must implement the iteration protocol.");this.iterator=t[Symbol.iterator]()}}[Symbol.asyncIterator](){const t=this;let e=0;return{async next(){return t.length<=e&&t.push(t.iterator.next()),t[e++]}}}async touchNext(t=1){let e=0;for(;e++!t.includes(e))),this.onChange(),this.resourceIds.length}async formatWithFallback(t,e){const n=[];let l=!1;for await(const i of this.bundles){l=!0;const a=Gy(e,i,t,n);if(0===a.size)break;if(typeof console<"u"){const t=i.locales[0],e=Array.from(a).join(", ");console.warn(`[fluent] Missing translations in ${t}: ${e}`)}}return!l&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.\n keys: ${JSON.stringify(t)}.\n resourceIds: ${JSON.stringify(this.resourceIds)}.`),n}formatMessages(t){return this.formatWithFallback(t,Ey)}formatValues(t){return this.formatWithFallback(t,gy)}async formatValue(t,e){const[n]=await this.formatValues([{id:t,args:e}]);return n}handleEvent(){this.onChange()}onChange(t=!1){this.bundles=Ty.from(this.generateBundles(this.resourceIds)),t&&this.bundles.touchNext(2)}}function gy(t,e,n,l){return n.value?t.formatPattern(n.value,l,e):null}function Ey(t,e,n,l){const i={value:null,attributes:null};n.value&&(i.value=t.formatPattern(n.value,l,e));let a=Object.keys(n.attributes);if(a.length>0){i.attributes=new Array(a.length);for(let[s,r]of a.entries()){let a=t.formatPattern(n.attributes[r],l,e);i.attributes[s]={name:r,value:a}}}return i}function Gy(t,e,n,l){const i=[],a=new Set;return n.forEach((({id:n,args:s},r)=>{if(void 0!==l[r])return;let o=e.getMessage(n);if(o){if(i.length=0,l[r]=t(e,i,o,s),i.length>0&&typeof console<"u"){const t=e.locales[0],l=i.join(", ");console.warn(`[fluent][resolver] errors in ${t}/${n}: ${l}.`)}}else a.add(n)})),a}const By="data-l10n-id",Jy="data-l10n-args",ky=`[${By}]`;class Yy extends My{constructor(t,e){super(t,e),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[By,Jy]}}onChange(t=!1){super.onChange(t),this.roots&&this.translateRoots()}setAttributes(t,e,n){return t.setAttribute(By,e),n?t.setAttribute(Jy,JSON.stringify(n)):t.removeAttribute(Jy),t}getAttributes(t){return{id:t.getAttribute(By),args:JSON.parse(t.getAttribute(Jy)||null)}}connectRoot(t){for(const e of this.roots)if(e===t||e.contains(t)||t.contains(e))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==t.ownerDocument.defaultView)throw new Error("Cannot connect a root:\n DOMLocalization already has a root from a different window.")}else this.windowElement=t.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver((t=>this.translateMutations(t)));this.roots.add(t),this.mutationObserver.observe(t,this.observerConfig)}disconnectRoot(t){return this.roots.delete(t),this.pauseObserving(),0===this.roots.size?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const t=Array.from(this.roots);return Promise.all(t.map((t=>this.translateFragment(t))))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const t of this.roots)this.mutationObserver.observe(t,this.observerConfig)}translateMutations(t){for(const e of t)switch(e.type){case"attributes":e.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(e.target);break;case"childList":for(const t of e.addedNodes)if(t.nodeType===t.ELEMENT_NODE)if(t.childElementCount)for(const e of this.getTranslatables(t))this.pendingElements.add(e);else t.hasAttribute(By)&&this.pendingElements.add(t);break}this.pendingElements.size>0&&null===this.pendingrAF&&(this.pendingrAF=this.windowElement.requestAnimationFrame((()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null})))}translateFragment(t){return this.translateElements(this.getTranslatables(t))}async translateElements(t){if(!t.length)return;const e=t.map(this.getKeysForElement),n=await this.formatMessages(e);return this.applyTranslations(t,n)}applyTranslations(t,e){this.pauseObserving();for(let n=0;n({id:t}))),(await $i(this,Dy).formatMessages(t)).map((t=>t.value))):(null==(l=(await $i(this,Dy).formatMessages([{id:t,args:e}]))[0])?void 0:l.value)||n}async translate(t){($i(this,Xy)||ea(this,Xy,new Set)).add(t);try{$i(this,Dy).connectRoot(t),await $i(this,Dy).translateRoots()}catch{}}async translateOnce(t){try{await $i(this,Dy).translateElements([t])}catch(TB){console.error("translateOnce:",TB)}}async destroy(){if($i(this,Xy)){for(const t of $i(this,Xy))$i(this,Dy).disconnectRoot(t);$i(this,Xy).clear(),ea(this,Xy,null)}$i(this,Dy).pauseObserving()}pause(){$i(this,Dy).pauseObserving()}resume(){$i(this,Dy).resumeObserving()}};Cy=new WeakMap,Xy=new WeakMap,Iy=new WeakMap,Dy=new WeakMap,fy=new WeakSet,Ly=function(t){return t=(null==t?void 0:t.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[t]||t},wy=function(t){const e=t.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(e)},ta(xy,fy);let zy=xy;function vy(t,e){const n=new dy(e),l=new fQ(t),i=l.addResource(n);return i.length&&console.error("L10n errors",i),l}var Oy,_y,jy,Ky,Py,Ay;const Hy=class t extends zy{constructor(e){super({lang:e});const n=e?na(t,Oy,_y).bind(t,"en-us",this.getLanguage()):na(t,Oy,Py).bind(t,this.getLanguage());this._setL10n(new Yy([],n))}};Oy=new WeakSet,_y=async function*(t,e){const{baseURL:n,paths:l}=await na(this,Oy,Ky).call(this),i=[e];if(t!==e){const n=e.split("-",1)[0];n!==e&&i.push(n),i.push(t)}for(const a of i){const t=await na(this,Oy,jy).call(this,a,n,l);t?yield t:"en-us"===a&&(yield na(this,Oy,Ay).call(this,a))}},jy=async function(t,e,n){const l=n[t];if(!l)return null;const i=new URL(l,e),a=await VV(i,"text");return vy(t,a)},Ky=async function(){try{const{href:t}=document.querySelector('link[type="application/l10n"]'),e=await VV(t,"json");return{baseURL:t.replace(/[^/]*$/,"")||"./",paths:e}}catch{}return{baseURL:"./",paths:Object.create(null)}},Py=async function*(t){yield na(this,Oy,Ay).call(this,t)},Ay=async function(t){return vy(t,'pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties…\npdfjs-document-properties-button-label = Document Properties…\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing…\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-toggle-sidebar-button =\n .title = Toggle Sidebar\npdfjs-toggle-sidebar-notification-button =\n .title = Toggle Sidebar (document contains outline/attachments/layers)\npdfjs-toggle-sidebar-button-label = Toggle Sidebar\npdfjs-document-outline-button =\n .title = Show Document Outline (double-click to expand/collapse all items)\npdfjs-document-outline-button-label = Document Outline\npdfjs-attachments-button =\n .title = Show Attachments\npdfjs-attachments-button-label = Attachments\npdfjs-layers-button =\n .title = Show Layers (double-click to reset all layers to the default state)\npdfjs-layers-button-label = Layers\npdfjs-thumbs-button =\n .title = Show Thumbnails\npdfjs-thumbs-button-label = Thumbnails\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document…\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing…\npdfjs-ink =\n .aria-label = Draw Editor\npdfjs-ink-canvas =\n .aria-label = User-created image\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, “A young man sits down at a table to eat a meal”\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner — resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle — resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner — resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right — resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner — resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle — resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner — resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left — resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here…\npdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading…\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close')},ta(Hy,Oy);let qy=Hy;const $y=1e3,tT=50,eT=1e3;function nT(){return document.location.hash}var lT,iT,aT,sT,rT,oT,cT,dT,uT,hT,mT,UT,pT,FT,bT,ZT,NT,RT,ST;class WT{constructor({linkService:t,eventBus:e}){ta(this,iT),ta(this,lT,null),this.linkService=t,this.eventBus=e,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",(()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",(t=>{this._isPagesLoaded=!!t.pagesCount}),{once:!0})}))}initialize({fingerprint:t,resetHistory:e=!1,updateUrl:n=!1}){if(!t||"string"!=typeof t)return void console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');this._initialized&&this.reset();const l=""!==this._fingerprint&&this._fingerprint!==t;this._fingerprint=t,this._updateUrl=!0===n,this._initialized=!0,na(this,iT,UT).call(this);const i=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=nT(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!na(this,iT,oT).call(this,i,!0)||e){const{hash:t,page:n,rotation:i}=na(this,iT,dT).call(this,!0);return!t||l||e?void na(this,iT,aT).call(this,null,!0):void na(this,iT,aT).call(this,{hash:t,page:n,rotation:i},!0)}const a=i.destination;na(this,iT,cT).call(this,a,i.uid,!0),void 0!==a.rotation&&(this._initialRotation=a.rotation),a.dest?(this._initialBookmark=JSON.stringify(a.dest),this._destination.page=null):a.hash?this._initialBookmark=a.hash:a.page&&(this._initialBookmark=`page=${a.page}`)}reset(){this._initialized&&(na(this,iT,mT).call(this),this._initialized=!1,na(this,iT,pT).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:t=null,explicitDest:e,pageNumber:n}){if(!this._initialized)return;if(t&&"string"!=typeof t)return void console.error(`PDFHistory.push: "${t}" is not a valid namedDest parameter.`);if(!Array.isArray(e))return void console.error(`PDFHistory.push: "${e}" is not a valid explicitDest parameter.`);if(!na(this,iT,rT).call(this,n)&&(null!==n||this._destination))return void console.error(`PDFHistory.push: "${n}" is not a valid pageNumber parameter.`);const l=t||JSON.stringify(e);if(!l)return;let i=!1;if(this._destination&&(VT(this._destination.hash,l)||QT(this._destination.dest,e))){if(this._destination.page)return;i=!0}this._popStateInProgress&&!i||(na(this,iT,aT).call(this,{dest:e,hash:l,page:n,rotation:this.linkService.rotation},i),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then((()=>{this._popStateInProgress=!1}))))}pushPage(t){var e;if(this._initialized){if(!na(this,iT,rT).call(this,t))return void console.error(`PDFHistory.pushPage: "${t}" is not a valid page number.`);(null==(e=this._destination)?void 0:e.page)!==t&&(this._popStateInProgress||(na(this,iT,aT).call(this,{dest:null,hash:`page=${t}`,page:t,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then((()=>{this._popStateInProgress=!1})))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||na(this,iT,sT).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;na(this,iT,oT).call(this,t)&&t.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;na(this,iT,oT).call(this,t)&&t.uid0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}function VT(t,e){return"string"==typeof t&&"string"==typeof e&&(t===e||JS(t).get("nameddest")===e)}function QT(t,e){function n(t,e){if(typeof t!=typeof e||Array.isArray(t)||Array.isArray(e))return!1;if(null!==t&&"object"==typeof t&&null!==e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const l in t)if(!n(t[l],e[l]))return!1;return!0}return t===e||Number.isNaN(t)&&Number.isNaN(e)}if(!Array.isArray(t)||!Array.isArray(e)||t.length!==e.length)return!1;for(let l=0,i=t.length;l=e.first&&this._destination.page<=e.page){if(void 0!==this._destination.dest||!this._destination.first)return;n=!0}na(this,iT,aT).call(this,e,n)},rT=function(t){return Number.isInteger(t)&&t>0&&t<=this.linkService.pagesCount},oT=function(t,e=!1){if(!t)return!1;if(t.fingerprint!==this._fingerprint){if(!e)return!1;{if("string"!=typeof t.fingerprint||t.fingerprint.length!==this._fingerprint.length)return!1;const[e]=performance.getEntriesByType("navigation");if("reload"!==(null==e?void 0:e.type))return!1}}return!(!Number.isInteger(t.uid)||t.uid<0||null===t.destination||"object"!=typeof t.destination)},cT=function(t,e,n=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),n&&null!=t&&t.temporary&&delete t.temporary,this._destination=t,this._uid=e,this._maxUid=Math.max(this._maxUid,e),this._numPositionUpdates=0},dT=function(t=!1){const e=unescape(nT()).substring(1),n=JS(e),l=n.get("nameddest")||"";let i=0|n.get("page");return(!na(this,iT,rT).call(this,i)||t&&l.length>0)&&(i=null),{hash:e,page:i,rotation:this.linkService.rotation}},uT=function({location:t}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:t.pdfOpenParams.substring(1),page:this.linkService.page,first:t.pageNumber,rotation:t.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout((()=>{this._popStateInProgress||na(this,iT,sT).call(this,!0),this._updateViewareaTimeout=null}),eT))},hT=function({state:t}){const e=nT(),n=this._currentHash!==e;if(this._currentHash=e,!t){this._uid++;const{hash:t,page:e,rotation:n}=na(this,iT,dT).call(this);return void na(this,iT,aT).call(this,{hash:t,page:e,rotation:n},!0)}if(!na(this,iT,oT).call(this,t))return;this._popStateInProgress=!0,n&&(this._blockHashChange++,dQ({target:window,name:"hashchange",delay:$y}).then((()=>{this._blockHashChange--})));const l=t.destination;na(this,iT,cT).call(this,l,t.uid,!0),LS(l.rotation)&&(this.linkService.rotation=l.rotation),l.dest?this.linkService.goToDestination(l.dest):l.hash?this.linkService.setHash(l.hash):l.page&&(this.linkService.page=l.page),Promise.resolve().then((()=>{this._popStateInProgress=!1}))},mT=function(){(!this._destination||this._destination.temporary)&&na(this,iT,sT).call(this)},UT=function(){if($i(this,lT))return;ea(this,lT,new AbortController);const{signal:t}=$i(this,lT);this.eventBus._on("updateviewarea",na(this,iT,uT).bind(this),{signal:t}),window.addEventListener("popstate",na(this,iT,hT).bind(this),{signal:t}),window.addEventListener("pagehide",na(this,iT,mT).bind(this),{signal:t})},pT=function(){var t;null==(t=$i(this,lT))||t.abort(),ea(this,lT,null)};class yT{constructor(t){ta(this,FT,null),ta(this,bT,null),ta(this,ZT,null),ta(this,NT,null),ta(this,RT,null),ta(this,ST),this.pdfPage=t.pdfPage,this.accessibilityManager=t.accessibilityManager,this.l10n=t.l10n,this.l10n||(this.l10n=new qy),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,ea(this,ST,t.uiManager),ea(this,FT,t.annotationLayer||null),ea(this,RT,t.textLayer||null),ea(this,bT,t.drawLayer||null),ea(this,ZT,t.onAppend||null),ea(this,NT,t.structTreeLayer||null)}async render(t,e="display"){var n;if("display"!==e||this._cancelled)return;const l=t.clone({dontFlip:!0});if(this.div)return this.annotationEditorLayer.update({viewport:l}),void this.show();const i=this.div=document.createElement("div");i.className="annotationEditorLayer",i.hidden=!0,i.dir=$i(this,ST).direction,null==(n=$i(this,ZT))||n.call(this,i),this.annotationEditorLayer=new uV({uiManager:$i(this,ST),div:i,structTreeLayer:$i(this,NT),accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:l,annotationLayer:$i(this,FT),textLayer:$i(this,RT),drawLayer:$i(this,bT)});const a={viewport:l,div:i,annotations:null,intent:e};this.annotationEditorLayer.render(a),this.show()}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.annotationEditorLayer.pause(!0),this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1,this.annotationEditorLayer.pause(!1))}}FT=new WeakMap,bT=new WeakMap,ZT=new WeakMap,NT=new WeakMap,RT=new WeakMap,ST=new WeakMap;{var TT=new Map;const t=navigator.userAgent||"",e=navigator.platform||"",n=navigator.maxTouchPoints||1,l=/Android/.test(t),i=/\b(iPad|iPhone|iPod)(?=;)/.test(t)||"MacIntel"===e&&n>1;(function(){(i||l)&&TT.set("maxCanvasPixels",5242880)})(),function(){l&&TT.set("useSystemFonts",!1)}()}const MT={BROWSER:1,VIEWER:2,API:4,WORKER:8,EVENT_DISPATCH:16,PREFERENCE:128},gT={BOOLEAN:1,NUMBER:2,OBJECT:4,STRING:8,UNDEFINED:16},ET={allowedGlobalEvents:{value:null,kind:MT.BROWSER},canvasMaxAreaInBytes:{value:-1,kind:MT.BROWSER+MT.API},isInAutomation:{value:!1,kind:MT.BROWSER},localeProperties:{value:{lang:navigator.language||"en-US"},kind:MT.BROWSER},nimbusDataStr:{value:"",kind:MT.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:MT.BROWSER},supportsDocumentFonts:{value:!0,kind:MT.BROWSER},supportsIntegratedFind:{value:!1,kind:MT.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:MT.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:MT.BROWSER},supportsPinchToZoom:{value:!0,kind:MT.BROWSER},toolbarDensity:{value:0,kind:MT.BROWSER+MT.EVENT_DISPATCH},altTextLearnMoreUrl:{value:"",kind:MT.VIEWER+MT.PREFERENCE},annotationEditorMode:{value:0,kind:MT.VIEWER+MT.PREFERENCE},annotationMode:{value:2,kind:MT.VIEWER+MT.PREFERENCE},cursorToolOnLoad:{value:0,kind:MT.VIEWER+MT.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:MT.VIEWER},defaultZoomDelay:{value:400,kind:MT.VIEWER+MT.PREFERENCE},defaultZoomValue:{value:"",kind:MT.VIEWER+MT.PREFERENCE},disableHistory:{value:!1,kind:MT.VIEWER},disablePageLabels:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableAltText:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableAltTextModelDownload:{value:!0,kind:MT.VIEWER+MT.PREFERENCE+MT.EVENT_DISPATCH},enableGuessAltText:{value:!0,kind:MT.VIEWER+MT.PREFERENCE+MT.EVENT_DISPATCH},enableHighlightFloatingButton:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableNewAltTextWhenAddingImage:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enablePermissions:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enableScripting:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enableUpdatedAddImage:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:MT.VIEWER},externalLinkTarget:{value:0,kind:MT.VIEWER+MT.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:MT.VIEWER+MT.PREFERENCE},historyUpdateUrl:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},imageResourcesPath:{value:"./images/",kind:MT.VIEWER},maxCanvasPixels:{value:2**25,kind:MT.VIEWER},forcePageColors:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:MT.VIEWER+MT.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:MT.VIEWER+MT.PREFERENCE},pdfBugEnabled:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},printResolution:{value:150,kind:MT.VIEWER},sidebarViewOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},scrollModeOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},spreadModeOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},textLayerMode:{value:1,kind:MT.VIEWER+MT.PREFERENCE},viewOnLoad:{value:0,kind:MT.VIEWER+MT.PREFERENCE},cMapPacked:{value:!0,kind:MT.API},cMapUrl:{value:"../web/cmaps/",kind:MT.API},disableAutoFetch:{value:!1,kind:MT.API+MT.PREFERENCE},disableFontFace:{value:!1,kind:MT.API+MT.PREFERENCE},disableRange:{value:!1,kind:MT.API+MT.PREFERENCE},disableStream:{value:!1,kind:MT.API+MT.PREFERENCE},docBaseUrl:{value:"",kind:MT.API},enableHWA:{value:!0,kind:MT.API+MT.VIEWER+MT.PREFERENCE},enableXfa:{value:!0,kind:MT.API+MT.PREFERENCE},fontExtraProperties:{value:!1,kind:MT.API},isEvalSupported:{value:!0,kind:MT.API},isOffscreenCanvasSupported:{value:!0,kind:MT.API},maxImageSize:{value:-1,kind:MT.API},pdfBug:{value:!1,kind:MT.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:MT.API},useSystemFonts:{value:void 0,kind:MT.API,type:gT.BOOLEAN+gT.UNDEFINED},verbosity:{value:1,kind:MT.API},workerPort:{value:null,kind:MT.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:MT.WORKER}};var GT;ET.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:MT.VIEWER},ET.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:MT.VIEWER},ET.viewerCssTheme={value:0,kind:MT.VIEWER+MT.PREFERENCE},ET.enableFakeMLManager={value:!0,kind:MT.VIEWER},ET.disablePreferences={value:!1,kind:MT.VIEWER};const BT=class{static get(t){return $i(this,GT).get(t)}static getAll(t=null,e=!1){const n=Object.create(null);for(const l in ET){const i=ET[l];t&&!(t&i.kind)||(n[l]=e?i.value:$i(this,GT).get(l))}return n}static set(t,e){this.setAll({[t]:e})}static setAll(t,e=!1){let n;this._hasInvokedSet||(this._hasInvokedSet=!0);for(const l in t){const i=ET[l],a=t[l];if(!i||!(typeof a==typeof i.value||gT[(typeof a).toUpperCase()]&i.type))continue;const{kind:s}=i;e&&!(s&MT.BROWSER||s&MT.PREFERENCE)||(this.eventBus&&s&MT.EVENT_DISPATCH&&(n||(n=new Map)).set(l,a),$i(this,GT).set(l,a))}if(n)for(const[l,i]of n)this.eventBus.dispatch(l.toLowerCase(),{source:this,value:i})}};GT=new WeakMap,Hi(BT,"eventBus"),ta(BT,GT,new Map),(()=>{for(const t in ET)$i(BT,GT).set(t,ET[t].value);for(const[t,e]of TT)$i(BT,GT).set(t,e);BT._hasInvokedSet=!1,BT._checkDisablePreferences=()=>!!BT.get("disablePreferences")||(BT._hasInvokedSet&&console.warn('The Preferences may override manually set AppOptions; please use the "disablePreferences"-option to prevent that.'),!1)})();let JT=BT;var kT;class YT{constructor(t){ta(this,kT,null),this.pageIndex=t.pageIndex}async render(t="display"){"display"!==t||$i(this,kT)||this._cancelled||ea(this,kT,new SV({pageIndex:this.pageIndex}))}cancel(){this._cancelled=!0,$i(this,kT)&&($i(this,kT).destroy(),ea(this,kT,null))}setParent(t){var e;null==(e=$i(this,kT))||e.setParent(t)}getDrawLayer(){return $i(this,kT)}}kT=new WeakMap;const CT={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},XT=/^H(\d+)$/;var IT,DT,fT,LT,wT,xT,zT,vT,OT,_T,jT,KT,PT,AT,HT,qT,$T,tM;class eM{constructor(t,e){ta(this,zT),ta(this,IT),ta(this,DT,null),ta(this,fT),ta(this,LT,new Map),ta(this,wT),ta(this,xT,null),ea(this,IT,t.getStructTree()),ea(this,wT,e)}async render(){var t;if($i(this,fT))return $i(this,fT);const{promise:e,resolve:n,reject:l}=Promise.withResolvers();ea(this,fT,e);try{ea(this,DT,na(this,zT,_T).call(this,await $i(this,IT)))}catch(i){l(i)}return ea(this,IT,null),null==(t=$i(this,DT))||t.classList.add("structTree"),n($i(this,DT)),e}async getAriaAttributes(t){try{return await this.render(),$i(this,LT).get(t)}catch{}return null}hide(){$i(this,DT)&&!$i(this,DT).hidden&&($i(this,DT).hidden=!0)}show(){var t;null!=(t=$i(this,DT))&&t.hidden&&($i(this,DT).hidden=!1)}addElementsToTextLayer(){var t;if($i(this,xT)){for(const[e,n]of $i(this,xT))null==(t=document.getElementById(e))||t.append(n);$i(this,xT).clear(),ea(this,xT,null)}}}IT=new WeakMap,DT=new WeakMap,fT=new WeakMap,LT=new WeakMap,wT=new WeakMap,xT=new WeakMap,zT=new WeakSet,vT=function(t,e){const{alt:n,id:l,lang:i}=t;if(void 0!==n){let l=!1;const i=YS(n);for(const e of t.children)if("annotation"===e.type){let t=$i(this,LT).get(e.id);t||(t=new Map,$i(this,LT).set(e.id,t)),t.set("aria-label",i),l=!0}l||e.setAttribute("aria-label",i)}void 0!==l&&e.setAttribute("aria-owns",l),void 0!==i&&e.setAttribute("lang",YS(i,!0))},OT=function(t,e){const{alt:n,bbox:l,children:i}=t,a=null==i?void 0:i[0];if(!$i(this,wT)||!n||!l||"content"!==(null==a?void 0:a.type))return!1;const{id:s}=a;if(!s)return!1;e.setAttribute("aria-owns",s);const r=document.createElement("span");($i(this,xT)||ea(this,xT,new Map)).set(s,r),r.setAttribute("role","img"),r.setAttribute("aria-label",YS(n));const{pageHeight:o,pageX:c,pageY:d}=$i(this,wT),u="calc(var(--scale-factor)*",{style:h}=r;return h.width=`${u}${l[2]-l[0]}px)`,h.height=`${u}${l[3]-l[1]}px)`,h.left=`${u}${l[0]-c}px)`,h.top=`${u}${o-l[3]+d}px)`,!0},_T=function(t){if(!t)return null;const e=document.createElement("span");if("role"in t){const{role:n}=t,l=n.match(XT);if(l?(e.setAttribute("role","heading"),e.setAttribute("aria-level",l[1])):CT[n]&&e.setAttribute("role",CT[n]),"Figure"===n&&na(this,zT,OT).call(this,t,e))return e}if(na(this,zT,vT).call(this,t,e),t.children)if(1===t.children.length&&"id"in t.children[0])na(this,zT,vT).call(this,t.children[0],e);else for(const n of t.children)e.append(na(this,zT,_T).call(this,n));return e};const nM=class t{constructor(){ta(this,$T),ta(this,jT,!1),ta(this,KT,null),ta(this,PT,new Map),ta(this,AT,new Map)}setTextMapping(t){ea(this,KT,t)}enable(){if($i(this,jT))throw new Error("TextAccessibilityManager is already enabled.");if(!$i(this,KT))throw new Error("Text divs and strings have not been set.");if(ea(this,jT,!0),ea(this,KT,$i(this,KT).slice()),$i(this,KT).sort(na(t,HT,qT)),$i(this,PT).size>0){const t=$i(this,KT);for(const[e,n]of $i(this,PT))document.getElementById(e)?na(this,$T,tM).call(this,e,t[n]):$i(this,PT).delete(e)}for(const[t,e]of $i(this,AT))this.addPointerInTextLayer(t,e);$i(this,AT).clear()}disable(){$i(this,jT)&&($i(this,AT).clear(),ea(this,KT,null),ea(this,jT,!1))}removePointerInTextLayer(t){if(!$i(this,jT))return void $i(this,AT).delete(t);const e=$i(this,KT);if(!e||0===e.length)return;const{id:n}=t,l=$i(this,PT).get(n);if(void 0===l)return;const i=e[l];$i(this,PT).delete(n);let a=i.getAttribute("aria-owns");null!=a&&a.includes(n)&&(a=a.split(" ").filter((t=>t!==n)).join(" "),a?i.setAttribute("aria-owns",a):(i.removeAttribute("aria-owns"),i.setAttribute("role","presentation")))}addPointerInTextLayer(e,n){const{id:l}=e;if(!l)return null;if(!$i(this,jT))return $i(this,AT).set(e,n),null;n&&this.removePointerInTextLayer(e);const i=$i(this,KT);if(!i||0===i.length)return null;const a=CS(i,(n=>{var l;return na(l=t,HT,qT).call(l,e,n)<0})),s=Math.max(0,a-1),r=i[s];na(this,$T,tM).call(this,l,r),$i(this,PT).set(l,s);const o=r.parentNode;return null!=o&&o.classList.contains("markedContent")?o.id:null}moveElementInDOM(e,n,l,i){const a=this.addPointerInTextLayer(l,i);if(!e.hasChildNodes())return e.append(n),a;const s=Array.from(e.childNodes).filter((t=>t!==n));if(0===s.length)return a;const r=l||n,o=CS(s,(e=>{var n;return na(n=t,HT,qT).call(n,r,e)<0}));return 0===o?s[0].before(n):s[o-1].after(n),a}};jT=new WeakMap,KT=new WeakMap,PT=new WeakMap,AT=new WeakMap,HT=new WeakSet,qT=function(t,e){const n=t.getBoundingClientRect(),l=e.getBoundingClientRect();if(0===n.width&&0===n.height)return 1;if(0===l.width&&0===l.height)return-1;const i=n.y,a=n.y+n.height,s=n.y+n.height/2,r=l.y,o=l.y+l.height,c=l.y+l.height/2;if(s<=r&&c>=a)return-1;if(c<=i&&s>=o)return 1;const d=n.x+n.width/2,u=l.x+l.width/2;return d-u},$T=new WeakSet,tM=function(t,e){const n=e.getAttribute("aria-owns");null!=n&&n.includes(t)||e.setAttribute("aria-owns",n?`${n} ${t}`:t),e.removeAttribute("role")},ta(nM,HT);let lM=nM;var iM,aM,sM,rM,oM,cM,dM,uM,hM,mM,UM,pM;class FM{constructor({findController:t,eventBus:e,pageIndex:n}){ta(this,iM,null),this.findController=t,this.matches=[],this.eventBus=e,this.pageIdx=n,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(t,e){this.textDivs=t,this.textContentItemsStr=e}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,$i(this,iM)||(ea(this,iM,new AbortController),this.eventBus._on("updatetextlayermatches",(t=>{(t.pageIndex===this.pageIdx||-1===t.pageIndex)&&this._updateMatches()}),{signal:$i(this,iM).signal})),this._updateMatches()}disable(){var t;this.enabled&&(this.enabled=!1,null==(t=$i(this,iM))||t.abort(),ea(this,iM,null),this._updateMatches(!0))}_convertMatches(t,e){if(!t)return[];const{textContentItemsStr:n}=this;let l=0,i=0;const a=n.length-1,s=[];for(let r=0,o=t.length;r=i+n[l].length;)i+=n[l].length,l++;l===n.length&&console.error("Could not find a matching mapping");const c={begin:{divIdx:l,offset:o-i}};for(o+=e[r];l!==a&&o>i+n[l].length;)i+=n[l].length,l++;c.end={divIdx:l,offset:o-i},s.push(c)}return s}_renderMatches(t){if(0===t.length)return;const{findController:e,pageIdx:n}=this,{textContentItemsStr:l,textDivs:i}=this,a=n===e.selected.pageIdx,s=e.selected.matchIdx,r=e.state.highlightAll;let o=null;const c={divIdx:-1,offset:void 0};function d(t,e){const n=t.divIdx;return i[n].textContent="",u(n,0,t.offset,e)}function u(t,e,n,a){let s=i[t];if(s.nodeType===Node.TEXT_NODE){const e=document.createElement("span");s.before(e),e.append(s),i[t]=e,s=e}const r=l[t].substring(e,n),o=document.createTextNode(r);if(a){const t=document.createElement("span");if(t.className=`${a} appended`,t.append(o),s.append(t),a.includes("selected")){const{left:e}=t.getClientRects()[0],n=s.getBoundingClientRect().left;return e-n}return 0}return s.append(o),0}let h=s,m=h+1;if(r)h=0,m=t.length;else if(!a)return;let U=-1,p=-1;for(let F=h;F{n.classList.add("selecting")})),n.addEventListener("copy",(t=>{if(!$i(this,aM)){const e=document.getSelection();t.clipboardData.setData("text/plain",YS(CV(e.toString())))}jV(t)})),$i(bM,cM).set(n,t),na(e=bM,mM,pM).call(e)},mM=new WeakSet,UM=function(t){var e;$i(this,cM).delete(t),0===$i(this,cM).size&&(null==(e=$i(this,dM))||e.abort(),ea(this,dM,null))},pM=function(){if($i(this,dM))return;ea(this,dM,new AbortController);const{signal:t}=$i(this,dM),e=(t,e)=>{e.append(t),t.style.width="",t.style.height="",e.classList.remove("selecting")};let n=!1;var l,i;document.addEventListener("pointerdown",(()=>{n=!0}),{signal:t}),document.addEventListener("pointerup",(()=>{n=!1,$i(this,cM).forEach(e)}),{signal:t}),window.addEventListener("blur",(()=>{n=!1,$i(this,cM).forEach(e)}),{signal:t}),document.addEventListener("keyup",(()=>{n||$i(this,cM).forEach(e)}),{signal:t}),document.addEventListener("selectionchange",(()=>{var t;const n=document.getSelection();if(0===n.rangeCount)return void $i(this,cM).forEach(e);const a=new Set;for(let e=0;e{e===this._optionalContentConfigPromise&&($i(this,XM).initialOptionalContent=t.hasInitialVisibility)})),t.l10n||this.l10n.translate(this.div)}}get renderingState(){return $i(this,YM)}set renderingState(t){if(t!==$i(this,YM))switch(ea(this,YM,t),$i(this,gM)&&(clearTimeout($i(this,gM)),ea(this,gM,null)),t){case yS.PAUSED:this.div.classList.remove("loading");break;case yS.RUNNING:this.div.classList.add("loadingIcon"),ea(this,gM,setTimeout((()=>{this.div.classList.add("loading"),ea(this,gM,null)}),0));break;case yS.INITIAL:case yS.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(t){var e,n,l,i;this._isStandalone&&("CanvasText"===(null==(e=this.pageColors)?void 0:e.foreground)||"Canvas"===(null==(n=this.pageColors)?void 0:n.background))&&(null==(l=this._container)||l.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),null==(i=this._container)||i.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=t,this.pdfPageRotate=t.rotate;const a=(this.rotation+this.pdfPageRotate)%360;this.viewport=t.getViewport({scale:this.scale*zV.PDF_TO_CSS_UNITS,rotation:a}),na(this,DM,LM).call(this),this.reset()}destroy(){var t;this.reset(),null==(t=this.pdfPage)||t.cleanup()}hasEditableAnnotations(){var t;return!(null==(t=this.annotationLayer)||!t.hasEditableAnnotations())}get _textHighlighter(){return _V(this,"_textHighlighter",new FM({pageIndex:this.id-1,eventBus:this.eventBus,findController:$i(this,MM).findController}))}reset({keepAnnotationLayer:t=!1,keepAnnotationEditorLayer:e=!1,keepXfaLayer:n=!1,keepTextLayer:l=!1,keepCanvasWrapper:i=!1}={}){var a,s,r,o,c;this.cancelRendering({keepAnnotationLayer:t,keepAnnotationEditorLayer:e,keepXfaLayer:n,keepTextLayer:l}),this.renderingState=yS.INITIAL;const d=this.div,u=d.childNodes,h=t&&(null==(a=this.annotationLayer)?void 0:a.div)||null,m=e&&(null==(s=this.annotationEditorLayer)?void 0:s.div)||null,U=n&&(null==(r=this.xfaLayer)?void 0:r.div)||null,p=l&&(null==(o=this.textLayer)?void 0:o.div)||null,F=i&&$i(this,VM)||null;for(let b=u.length-1;b>=0;b--){const t=u[b];switch(t){case h:case m:case U:case p:case F:continue}t.remove();const e=$i(this,IM).indexOf(t);e>=0&&($i(this,IM)[e]=null)}d.removeAttribute("data-loaded"),h&&this.annotationLayer.hide(),m&&this.annotationEditorLayer.hide(),U&&this.xfaLayer.hide(),p&&this.textLayer.hide(),null==(c=this.structTreeLayer)||c.hide(),!i&&$i(this,VM)&&(ea(this,VM,null),na(this,DM,PM).call(this))}toggleEditingMode(t){this.hasEditableAnnotations()&&(ea(this,TM,t),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0}))}update({scale:t=0,rotation:e=null,optionalContentConfigPromise:n=null,drawingDelay:l=-1}){var i;this.scale=t||this.scale,"number"==typeof e&&(this.rotation=e),n instanceof Promise&&(this._optionalContentConfigPromise=n,n.then((t=>{n===this._optionalContentConfigPromise&&($i(this,XM).initialOptionalContent=t.hasInitialVisibility)}))),$i(this,XM).directDrawing=!0;const a=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*zV.PDF_TO_CSS_UNITS,rotation:a}),na(this,DM,LM).call(this),this._isStandalone&&(null==(i=this._container)||i.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let t=!1;if($i(this,yM))if(0===this.maxCanvasPixels)t=!0;else if(this.maxCanvasPixels>0){const{width:e,height:n}=this.viewport,{sx:l,sy:i}=this.outputScale;t=(Math.floor(e)*l|0)*(Math.floor(n)*i|0)>this.maxCanvasPixels}const e=l>=0&&l<1e3;if(e||t){if(e&&!t&&this.renderingState!==yS.FINISHED&&(this.cancelRendering({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:l}),this.renderingState=yS.FINISHED,$i(this,XM).directDrawing=!1),this.cssTransform({redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!e,hideTextLayer:e}),e)return;return void this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:$i(this,kM)})}}this.cssTransform({}),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0})}cancelRendering({keepAnnotationLayer:t=!1,keepAnnotationEditorLayer:e=!1,keepXfaLayer:n=!1,keepTextLayer:l=!1,cancelExtraDelay:i=0}={}){var a;this.renderTask&&(this.renderTask.cancel(i),this.renderTask=null),this.resume=null,this.textLayer&&(!l||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.annotationLayer&&(!t||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationEditorLayer&&(!e||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!n||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,null==(a=this._textHighlighter)||a.disable())}cssTransform({redrawAnnotationLayer:t=!1,redrawAnnotationEditorLayer:e=!1,redrawXfaLayer:n=!1,redrawTextLayer:l=!1,hideTextLayer:i=!1}){var a;const{canvas:s}=this;if(!s)return;const r=$i(this,EM);if(this.viewport!==r){const t=(360+this.viewport.rotation-r.rotation)%360;if(90===t||270===t){const{width:e,height:n}=this.viewport,l=n/e,i=e/n;s.style.transform=`rotate(${t}deg) scale(${l},${i})`}else s.style.transform=0===t?"":`rotate(${t}deg)`}t&&this.annotationLayer&&na(this,DM,xM).call(this),e&&this.annotationEditorLayer&&(this.drawLayer&&na(this,DM,vM).call(this),na(this,DM,zM).call(this)),n&&this.xfaLayer&&na(this,DM,OM).call(this),this.textLayer&&(i?(this.textLayer.hide(),null==(a=this.structTreeLayer)||a.hide()):l&&na(this,DM,_M).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(t,e){return this.viewport.convertToPdfPoint(t,e)}async draw(){this.renderingState!==yS.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:t,l10n:e,pageColors:n,pdfPage:l,viewport:i}=this;if(!l)throw this.renderingState=yS.FINISHED,new Error("pdfPage is not loaded");this.renderingState=yS.RUNNING;let a=$i(this,VM);if(a||(a=ea(this,VM,document.createElement("div")),a.classList.add("canvasWrapper"),na(this,DM,fM).call(this,a,"canvasWrapper")),!this.textLayer&&$i(this,CM)!==MS.DISABLE&&!l.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new lM),this.textLayer=new ZM({pdfPage:l,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:$i(this,CM)===MS.ENABLE_PERMISSIONS,onAppend:t=>{this.l10n.pause(),na(this,DM,fM).call(this,t,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&$i(this,WM)!==FV.DISABLE){const{annotationStorage:t,annotationEditorUIManager:e,downloadManager:n,enableScripting:i,fieldObjectsPromise:a,hasJSActionsPromise:s,linkService:r}=$i(this,MM);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new sQ({pdfPage:l,annotationStorage:t,imageResourcesPath:this.imageResourcesPath,renderForms:$i(this,WM)===FV.ENABLE_FORMS,linkService:r,downloadManager:n,enableScripting:i,hasJSActionsPromise:s,fieldObjectsPromise:a,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:e,onAppend:t=>{na(this,DM,fM).call(this,t,"annotationLayer")}})}const s=t=>{if(null==m||m(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this))return this.renderingState=yS.PAUSED,void(this.resume=()=>{this.renderingState=yS.RUNNING,t()});t()},{width:r,height:o}=i,c=document.createElement("canvas");c.setAttribute("role","presentation");const d=!(null==n||!n.background||null==n||!n.foreground),u=this.canvas,h=!u&&!d;this.canvas=c,ea(this,EM,i);let m=t=>{if(h)return a.prepend(c),void(m=null);t&&(u?(u.replaceWith(c),u.width=u.height=0):a.prepend(c),m=null)};const U=c.getContext("2d",{alpha:!1,willReadFrequently:!$i(this,QM)}),p=this.outputScale=new IV;if(0===this.maxCanvasPixels){const t=1/this.scale;p.sx*=t,p.sy*=t,ea(this,yM,!0)}else if(this.maxCanvasPixels>0){const t=r*o,e=Math.sqrt(this.maxCanvasPixels/t);p.sx>e||p.sy>e?(p.sx=e,p.sy=e,ea(this,yM,!0)):ea(this,yM,!1)}const F=XS(p.sx),b=XS(p.sy),Z=c.width=IS($S(r*p.sx),F[0]),N=c.height=IS($S(o*p.sy),b[0]),R=IS($S(r),F[1]),S=IS($S(o),b[1]);p.sx=Z/R,p.sy=N/S,$i(this,BM)!==F[1]&&(t.style.setProperty("--scale-round-x",`${F[1]}px`),ea(this,BM,F[1])),$i(this,JM)!==b[1]&&(t.style.setProperty("--scale-round-y",`${b[1]}px`),ea(this,JM,b[1]));const W=p.scaled?[p.sx,0,0,p.sy,0,0]:null,V={canvasContext:U,transform:W,viewport:i,annotationMode:$i(this,WM),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:n,isEditing:$i(this,TM)},Q=this.renderTask=l.render(V);Q.onContinue=s;const y=Q.promise.then((async()=>{var t;null==m||m(!0),await na(this,DM,AM).call(this,Q),this.structTreeLayer||(this.structTreeLayer=new eM(l,i.rawDims)),na(this,DM,_M).call(this),this.annotationLayer&&await na(this,DM,xM).call(this);const{annotationEditorUIManager:n}=$i(this,MM);n&&(this.drawLayer||(this.drawLayer=new YT({pageIndex:this.id})),await na(this,DM,vM).call(this),this.drawLayer.setParent(a),this.annotationEditorLayer||(this.annotationEditorLayer=new yT({uiManager:n,pdfPage:l,l10n:e,structTreeLayer:this.structTreeLayer,accessibilityManager:this._accessibilityManager,annotationLayer:null==(t=this.annotationLayer)?void 0:t.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:t=>{na(this,DM,fM).call(this,t,"annotationEditorLayer")}})),na(this,DM,zM).call(this))}),(t=>(t instanceof vV?(null==u||u.remove(),na(this,DM,PM).call(this)):null==m||m(!0),na(this,DM,AM).call(this,Q,t))));if(l.isPureXfa){if(!this.xfaLayer){const{annotationStorage:t,linkService:e}=$i(this,MM);this.xfaLayer=new NM({pdfPage:l,annotationStorage:t,linkService:e})}na(this,DM,OM).call(this)}return t.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),y}setPageLabel(t){this.pageLabel="string"==typeof t?t:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:this.pageLabel??this.id})),null!==this.pageLabel?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:t,initialOptionalContent:e,regularAnnotations:n}=$i(this,XM);return t&&e&&n?this.canvas:null}}async function pg(t){const e="",n=e.split("#",1)[0];let{info:l,metadata:i,contentDispositionFilename:a,contentLength:s}=await t.getMetadata();if(!s){const{length:e}=await t.getDownloadInfo();s=e}return{...l,baseURL:n,filesize:s,filename:a||TV(e),metadata:null==i?void 0:i.getRaw(),authors:null==i?void 0:i.get("dc:creator"),numPages:t.numPages,URL:e}}WM=new WeakMap,VM=new WeakMap,QM=new WeakMap,yM=new WeakMap,TM=new WeakMap,MM=new WeakMap,gM=new WeakMap,EM=new WeakMap,GM=new WeakMap,BM=new WeakMap,JM=new WeakMap,kM=new WeakMap,YM=new WeakMap,CM=new WeakMap,XM=new WeakMap,IM=new WeakMap,DM=new WeakSet,fM=function(t,e){const n=SM.get(e),l=$i(this,IM)[n];if($i(this,IM)[n]=t,l)l.replaceWith(t);else{for(let e=n-1;e>=0;e--){const n=$i(this,IM)[e];if(n)return void n.after(t)}this.div.prepend(t)}},LM=function(){const{viewport:t}=this;if(this.pdfPage){if($i(this,GM)===t.rotation)return;ea(this,GM,t.rotation)}OV(this.div,t,!0,!1)},wM=function(t,e){this.eventBus.dispatch(t,{source:this,pageNumber:this.id,error:e})},xM=async function(){let t=null;try{await this.annotationLayer.render(this.viewport,{structTreeLayer:this.structTreeLayer},"display")}catch(TB){console.error("#renderAnnotationLayer:",TB),t=TB}finally{na(this,DM,wM).call(this,"annotationlayerrendered",t)}},zM=async function(){let t=null;try{await this.annotationEditorLayer.render(this.viewport,"display")}catch(TB){console.error("#renderAnnotationEditorLayer:",TB),t=TB}finally{na(this,DM,wM).call(this,"annotationeditorlayerrendered",t)}},vM=async function(){try{await this.drawLayer.render("display")}catch(MB){console.error("#renderDrawLayer:",MB)}},OM=async function(){var t;let e=null;try{const t=await this.xfaLayer.render(this.viewport,"display");null!=t&&t.textDivs&&this._textHighlighter&&na(this,DM,KM).call(this,t.textDivs)}catch(n){console.error("#renderXfaLayer:",n),e=n}finally{null!=(t=this.xfaLayer)&&t.div&&(this.l10n.pause(),na(this,DM,fM).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),na(this,DM,wM).call(this,"xfalayerrendered",e)}},_M=async function(){if(!this.textLayer)return;let t=null;try{await this.textLayer.render(this.viewport)}catch(TB){if(TB instanceof dV)return;console.error("#renderTextLayer:",TB),t=TB}na(this,DM,wM).call(this,"textlayerrendered",t),na(this,DM,jM).call(this)},jM=async function(){var t,e,n;if(!this.textLayer)return;const l=await(null==(t=this.structTreeLayer)?void 0:t.render());l&&(this.l10n.pause(),null==(e=this.structTreeLayer)||e.addElementsToTextLayer(),this.canvas&&l.parentNode!==this.canvas&&this.canvas.append(l),this.l10n.resume()),null==(n=this.structTreeLayer)||n.show()},KM=async function(t){const e=await this.pdfPage.getTextContent(),n=[];for(const l of e.items)n.push(l.str);this._textHighlighter.setTextMapping(t,n),this._textHighlighter.enable()},PM=function(){const{canvas:t}=this;t&&(t.remove(),t.width=t.height=0,this.canvas=null,ea(this,EM,null))},AM=async function(t,e=null){if(t===this.renderTask&&(this.renderTask=null),e instanceof vV)ea(this,kM,null);else if(ea(this,kM,e),this.renderingState=yS.FINISHED,$i(this,XM).regularAnnotations=!t.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:$i(this,kM)}),e)throw e};class Fg{constructor(t){this._ready=new Promise(((e,n)=>{import(t).then((t=>{e(t.QuickJSSandbox())})).catch(n)}))}async createSandbox(t){(await this._ready).create(t)}async dispatchEventInSandbox(t){const e=await this._ready;setTimeout((()=>e.dispatchEvent(t)),0)}async destroySandbox(){(await this._ready).nukeSandbox()}}class bg{constructor({eventBus:t,externalServices:e=null,docProperties:n=null}){ta(this,og),ta(this,HM,null),ta(this,qM,null),ta(this,$M,null),ta(this,tg,null),ta(this,eg,null),ta(this,ng,null),ta(this,lg,null),ta(this,ig,null),ta(this,ag,!1),ta(this,sg,null),ta(this,rg,null),ea(this,eg,t),ea(this,ng,e),ea(this,$M,n)}setViewer(t){ea(this,ig,t)}async setDocument(t){var e;if($i(this,lg)&&await na(this,og,mg).call(this),ea(this,lg,t),!t)return;const[n,l,i]=await Promise.all([t.getFieldObjects(),t.getCalculationOrderIds(),t.getJSActions()]);if(!n&&!i)return void await na(this,og,mg).call(this);if(t!==$i(this,lg))return;try{ea(this,sg,na(this,og,hg).call(this))}catch(r){return console.error("setDocument:",r),void await na(this,og,mg).call(this)}const a=$i(this,eg);ea(this,tg,new AbortController);const{signal:s}=$i(this,tg);a._on("updatefromsandbox",(t=>{(null==t?void 0:t.source)===window&&na(this,og,cg).call(this,t.detail)}),{signal:s}),a._on("dispatcheventinsandbox",(t=>{var e;null==(e=$i(this,sg))||e.dispatchEventInSandbox(t.detail)}),{signal:s}),a._on("pagechanging",(({pageNumber:t,previous:e})=>{t!==e&&(na(this,og,ug).call(this,e),na(this,og,dg).call(this,t))}),{signal:s}),a._on("pagerendered",(({pageNumber:t})=>{this._pageOpenPending.has(t)&&t===$i(this,ig).currentPageNumber&&na(this,og,dg).call(this,t)}),{signal:s}),a._on("pagesdestroy",(async()=>{var t,e;await na(this,og,ug).call(this,$i(this,ig).currentPageNumber),await(null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"WillClose"})),null==(e=$i(this,HM))||e.resolve()}),{signal:s});try{const e=await $i(this,$M).call(this,t);if(t!==$i(this,lg))return;await $i(this,sg).createSandbox({objects:n,calculationOrder:l,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:{...e,actions:i}}),a.dispatch("sandboxcreated",{source:this})}catch(r){return console.error("setDocument:",r),void await na(this,og,mg).call(this)}await(null==(e=$i(this,sg))?void 0:e.dispatchEventInSandbox({id:"doc",name:"Open"})),await na(this,og,dg).call(this,$i(this,ig).currentPageNumber,!0),Promise.resolve().then((()=>{t===$i(this,lg)&&ea(this,ag,!0)}))}async dispatchWillSave(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"WillSave"})}async dispatchDidSave(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidSave"})}async dispatchWillPrint(){var t;if($i(this,sg)){await(null==(t=$i(this,rg))?void 0:t.promise),ea(this,rg,Promise.withResolvers());try{await $i(this,sg).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(TB){throw $i(this,rg).resolve(),ea(this,rg,null),TB}await $i(this,rg).promise}}async dispatchDidPrint(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidPrint"})}get destroyPromise(){var t;return(null==(t=$i(this,qM))?void 0:t.promise)||null}get ready(){return $i(this,ag)}get _pageOpenPending(){return _V(this,"_pageOpenPending",new Set)}get _visitedPages(){return _V(this,"_visitedPages",new Map)}}HM=new WeakMap,qM=new WeakMap,$M=new WeakMap,tg=new WeakMap,eg=new WeakMap,ng=new WeakMap,lg=new WeakMap,ig=new WeakMap,ag=new WeakMap,sg=new WeakMap,rg=new WeakMap,og=new WeakSet,cg=async function(t){var e,n;const l=$i(this,ig),i=l.isInPresentationMode||l.isChangingPresentationMode,{id:a,siblings:s,command:r,value:o}=t;if(!a){switch(r){case"clear":console.clear();break;case"error":console.error(o);break;case"layout":if(!i){const t=qS(o);l.spreadMode=t.spreadMode}break;case"page-num":l.currentPageNumber=o+1;break;case"print":await l.pagesPromise,$i(this,eg).dispatch("print",{source:this});break;case"println":console.log(o);break;case"zoom":i||(l.currentScaleValue=o);break;case"SaveAs":$i(this,eg).dispatch("download",{source:this});break;case"FirstPage":l.currentPageNumber=1;break;case"LastPage":l.currentPageNumber=l.pagesCount;break;case"NextPage":l.nextPage();break;case"PrevPage":l.previousPage();break;case"ZoomViewIn":i||l.increaseScale();break;case"ZoomViewOut":i||l.decreaseScale();break;case"WillPrintFinished":null==(e=$i(this,rg))||e.resolve(),ea(this,rg,null);break}return}if(i&&t.focus)return;delete t.id,delete t.siblings;const c=s?[a,...s]:[a];for(const d of c){const e=document.querySelector(`[data-element-id="${d}"]`);e?e.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:t})):null==(n=$i(this,lg))||n.annotationStorage.setValue(d,t)}},dg=async function(t,e=!1){const n=$i(this,lg),l=this._visitedPages;if(e&&ea(this,HM,Promise.withResolvers()),!$i(this,HM))return;const i=$i(this,ig).getPageView(t-1);if((null==i?void 0:i.renderingState)!==yS.FINISHED)return void this._pageOpenPending.add(t);this._pageOpenPending.delete(t);const a=(async()=>{var e,a;const s=await(l.has(t)?null:null==(e=i.pdfPage)?void 0:e.getJSActions());n===$i(this,lg)&&await(null==(a=$i(this,sg))?void 0:a.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:t,actions:s}))})();l.set(t,a)},ug=async function(t){var e;const n=$i(this,lg),l=this._visitedPages;if(!$i(this,HM)||this._pageOpenPending.has(t))return;const i=l.get(t);i&&(l.set(t,null),await i,n===$i(this,lg)&&await(null==(e=$i(this,sg))?void 0:e.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:t})))},hg=function(){if(ea(this,qM,Promise.withResolvers()),$i(this,sg))throw new Error("#initScripting: Scripting already exists.");return $i(this,ng).createScripting()},mg=async function(){var t,e,n,l;if(!$i(this,sg))return ea(this,lg,null),void(null==(t=$i(this,qM))||t.resolve());$i(this,HM)&&(await Promise.race([$i(this,HM).promise,new Promise((t=>{setTimeout(t,1e3)}))]).catch((()=>{})),ea(this,HM,null)),ea(this,lg,null);try{await $i(this,sg).destroySandbox()}catch{}null==(e=$i(this,rg))||e.reject(new Error("Scripting destroyed.")),ea(this,rg,null),null==(n=$i(this,tg))||n.abort(),ea(this,tg,null),this._pageOpenPending.clear(),this._visitedPages.clear(),ea(this,sg,null),ea(this,ag,!1),null==(l=$i(this,qM))||l.resolve()};class Zg extends bg{constructor(t){t.externalServices||window.addEventListener("updatefromsandbox",(e=>{t.eventBus.dispatch("updatefromsandbox",{source:window,detail:e.detail})})),t.externalServices||(t.externalServices={createScripting:()=>new Fg(t.sandboxBundleSrc)}),t.docProperties||(t.docProperties=t=>pg(t)),super(t)}}const Ng=3e4;class Rg{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(t){this.pdfViewer=t}setThumbnailViewer(t){this.pdfThumbnailViewer=t}isHighestPriority(t){return this.highestPriorityPage===t.renderingId}renderHighestPriority(t){var e;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(t)&&(this.isThumbnailViewEnabled&&null!=(e=this.pdfThumbnailViewer)&&e.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),Ng)))}getHighestPriority(t,e,n,l=!1){const i=t.views,a=i.length;if(0===a)return null;for(let d=0;da){const l=t.ids;for(let t=1,i=r-s;t{this.renderHighestPriority()})).catch((t=>{t instanceof vV||console.error("renderView:",t)}));break}return!0}}const Sg=10,Wg={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function Vg(t){return Object.values(mV).includes(t)&&t!==mV.DISABLE}var Qg,yg,Tg,Mg,gg,Eg,Gg,Bg,Jg,kg,Yg,Cg,Xg,Ig,Dg,fg,Lg,wg,xg,zg,vg,Og,_g,jg,Kg,Pg,Ag,Hg,qg,$g,tE,eE,nE,lE,iE,aE,sE,rE,oE,cE,dE,uE,hE,mE,UE,pE,FE;class bE{constructor(t){ta(this,Tg),ta(this,Qg,new Set),ta(this,yg,0),ea(this,yg,t)}push(t){const e=$i(this,Qg);e.has(t)&&e.delete(t),e.add(t),e.size>$i(this,yg)&&na(this,Tg,Mg).call(this)}resize(t,e=null){ea(this,yg,t);const n=$i(this,Qg);if(e){const t=n.size;let l=1;for(const i of n)if(e.has(i.id)&&(n.delete(i),n.add(i)),++l>t)break}for(;n.size>$i(this,yg);)na(this,Tg,Mg).call(this)}has(t){return $i(this,Qg).has(t)}[Symbol.iterator](){return $i(this,Qg).keys()}}Qg=new WeakMap,yg=new WeakMap,Tg=new WeakSet,Mg=function(){const t=$i(this,Qg).keys().next().value;null==t||t.destroy(),$i(this,Qg).delete(t)};class ZE{constructor(t){var e,n;ta(this,tE),ta(this,gg,null),ta(this,Eg,null),ta(this,Gg,null),ta(this,Bg,mV.NONE),ta(this,Jg,null),ta(this,kg,FV.ENABLE_FORMS),ta(this,Yg,null),ta(this,Cg,null),ta(this,Xg,!1),ta(this,Ig,!1),ta(this,Dg,!1),ta(this,fg,!1),ta(this,Lg,!1),ta(this,wg,null),ta(this,xg,null),ta(this,zg,null),ta(this,vg,null),ta(this,Og,!1),ta(this,_g,null),ta(this,jg,!1),ta(this,Kg,0),ta(this,Pg,new ResizeObserver(na(this,tE,pE).bind(this))),ta(this,Ag,null),ta(this,Hg,null),ta(this,qg,!0),ta(this,$g,MS.ENABLE);const l="4.10.38";if($V!==l)throw new Error(`The API version "${$V}" does not match the Viewer version "${l}".`);if(this.container=t.container,this.viewer=t.viewer||t.container.firstElementChild,"DIV"!==(null==(e=this.container)?void 0:e.tagName)||"DIV"!==(null==(n=this.viewer)?void 0:n.tagName))throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&"absolute"!==getComputedStyle(this.container).position)throw new Error("The `container` must be absolutely positioned.");$i(this,Pg).observe(this.container),this.eventBus=t.eventBus,this.linkService=t.linkService||new cV,this.downloadManager=t.downloadManager||null,this.findController=t.findController||null,ea(this,Eg,t.altTextManager||null),ea(this,Cg,t.editorUndoBar||null),this.findController&&(this.findController.onIsPageVisible=t=>this._getVisiblePages().ids.has(t)),this._scriptingManager=t.scriptingManager||null,ea(this,$g,t.textLayerMode??MS.ENABLE),ea(this,kg,t.annotationMode??FV.ENABLE_FORMS),ea(this,Bg,t.annotationEditorMode??mV.NONE),ea(this,Gg,t.annotationEditorHighlightColors||null),ea(this,Ig,!0===t.enableHighlightFloatingButton),ea(this,fg,!0===t.enableUpdatedAddImage),ea(this,Lg,!0===t.enableNewAltTextWhenAddingImage),this.imageResourcesPath=t.imageResourcesPath||"",this.enablePrintAutoRotate=t.enablePrintAutoRotate||!1,this.removePageBorders=t.removePageBorders||!1,this.maxCanvasPixels=t.maxCanvasPixels,this.l10n=t.l10n,this.l10n||(this.l10n=new qy),ea(this,Dg,t.enablePermissions||!1),this.pageColors=t.pageColors||null,ea(this,xg,t.mlManager||null),ea(this,Xg,t.enableHWA||!1),ea(this,qg,!1!==t.supportsPinchToZoom),this.defaultRenderingQueue=!t.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new Rg,this.renderingQueue.setViewer(this)):this.renderingQueue=t.renderingQueue;const{abortSignal:i}=t;null==i||i.addEventListener("abort",(()=>{$i(this,Pg).disconnect(),ea(this,Pg,null)}),{once:!0}),this.scroll=BS(this.container,this._scrollUpdate.bind(this),i),this.presentationModeState=TS.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),na(this,tE,UE).call(this),this.eventBus._on("thumbnailrendered",(({pageNumber:t,pdfPage:e})=>{const n=this._pages[t-1];$i(this,gg).has(n)||null==e||e.cleanup()})),t.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(t){return this._pages[t]}getCachedPageViews(){return new Set($i(this,gg))}get pageViewsReady(){return this._pages.every((t=>null==t?void 0:t.pdfPage))}get renderForms(){return $i(this,kg)===FV.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(t){if(!Number.isInteger(t))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(t,!0)||console.error(`currentPageNumber: "${t}" is not a valid page.`))}_setCurrentPageNumber(t,e=!1){var n;if(this._currentPageNumber===t)return e&&na(this,tE,dE).call(this),!0;if(!(0=0&&(e=n+1)}this._setCurrentPageNumber(e,!0)||console.error(`currentPageLabel: "${t}" is not a valid page.`)}get currentScale(){return this._currentScale!==SS?this._currentScale:bS}set currentScale(t){if(isNaN(t))throw new Error("Invalid numeric scale.");this.pdfDocument&&na(this,tE,cE).call(this,t,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(t){this.pdfDocument&&na(this,tE,cE).call(this,t,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(t){if(!LS(t))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(t%=360,t<0&&(t+=360),this._pagesRotation===t))return;this._pagesRotation=t;const e=this._currentPageNumber;this.refresh(!0,{rotation:t}),this._currentScaleValue&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:t,pageNumber:e}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const t=this;return _V(this,"_layerProperties",{get annotationEditorUIManager(){return $i(t,Jg)},get annotationStorage(){var e;return null==(e=t.pdfDocument)?void 0:e.annotationStorage},get downloadManager(){return t.downloadManager},get enableScripting(){return!!t._scriptingManager},get fieldObjectsPromise(){var e;return null==(e=t.pdfDocument)?void 0:e.getFieldObjects()},get findController(){return t.findController},get hasJSActionsPromise(){var e;return null==(e=t.pdfDocument)?void 0:e.hasJSActions()},get linkService(){return t.linkService}})}async getAllText(){const t=[],e=[];for(let n=1,l=this.pdfDocument.numPages;n<=l;++n){if($i(this,jg))return null;e.length=0;const l=await this.pdfDocument.getPage(n),{items:i}=await l.getTextContent();for(const t of i)t.str&&e.push(t.str),t.hasEOL&&e.push("\n");t.push(YS(e.join("")))}return t.join("\n")}setDocument(t){var e,n,l;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),null==(e=this.findController)||e.setDocument(null),null==(n=this._scriptingManager)||n.setDocument(null),null==(l=$i(this,Jg))||l.destroy(),ea(this,Jg,null)),this.pdfDocument=t,!t)return;const i=t.numPages,a=t.getPage(1),s=t.getOptionalContentConfig({intent:"display"}),r=$i(this,Dg)?t.getPermissions():Promise.resolve(),{eventBus:o,pageColors:c,viewer:d}=this;ea(this,wg,new AbortController);const{signal:u}=$i(this,wg);if(i>Wg.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const t=this._scrollMode=gS.PAGE;o.dispatch("scrollmodechanged",{source:this,mode:t})}this._pagesCapability.promise.then((()=>{o.dispatch("pagesloaded",{source:this,pagesCount:i})}),(()=>{}));const h=t=>{const e=this._pages[t.pageNumber-1];e&&$i(this,gg).push(e)};o._on("pagerender",h,{signal:u});const m=t=>{t.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:t.timestamp}),o._off("pagerendered",m))};o._on("pagerendered",m,{signal:u}),Promise.all([a,r]).then((([e,n])=>{var l,a;if(t!==this.pdfDocument)return;this._firstPageCapability.resolve(e),this._optionalContentConfigPromise=s;const{annotationEditorMode:r,annotationMode:h,textLayerMode:m}=na(this,tE,eE).call(this,n);if(m!==MS.DISABLE){const t=ea(this,_g,document.createElement("div"));t.id="hiddenCopyElement",d.before(t)}if("function"==typeof AbortSignal.any&&r!==mV.DISABLE){const e=r;t.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):Vg(e)?(ea(this,Jg,new UV(this.container,d,$i(this,Eg),o,t,c,$i(this,Gg),$i(this,Ig),$i(this,fg),$i(this,Lg),$i(this,xg),$i(this,Cg),$i(this,qg))),o.dispatch("annotationeditoruimanager",{source:this,uiManager:$i(this,Jg)}),e!==mV.NONE&&(e===mV.STAMP&&(null==(l=$i(this,xg))||l.loadModel("altText")),$i(this,Jg).updateMode(e))):console.error(`Invalid AnnotationEditor mode: ${e}`)}const U=this._scrollMode===gS.PAGE?null:d,p=this.currentScale,F=e.getViewport({scale:p*zV.PDF_TO_CSS_UNITS});d.style.setProperty("--scale-factor",F.scale),null!=c&&c.background&&d.style.setProperty("--page-bg-color",c.background),("CanvasText"===(null==c?void 0:c.foreground)||"Canvas"===(null==c?void 0:c.background))&&(d.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),d.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let t=1;t<=i;++t){const e=new Ug({container:U,eventBus:o,id:t,scale:p,defaultViewport:F.clone(),optionalContentConfigPromise:s,renderingQueue:this.renderingQueue,textLayerMode:m,annotationMode:h,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:c,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:$i(this,Xg)});this._pages.push(e)}null==(a=this._pages[0])||a.setPdfPage(e),this._scrollMode===gS.PAGE?na(this,tE,iE).call(this):this._spreadMode!==ES.NONE&&this._updateSpreadMode(),na(this,tE,nE).call(this,u).then((async()=>{var e,n;if(t!==this.pdfDocument)return;if(null==(e=this.findController)||e.setDocument(t),null==(n=this._scriptingManager)||n.setDocument(t),$i(this,_g)&&document.addEventListener("copy",na(this,tE,lE).bind(this,m),{signal:u}),$i(this,Jg)&&o.dispatch("annotationeditormodechanged",{source:this,mode:$i(this,Bg)}),t.loadingParams.disableAutoFetch||i>Wg.FORCE_LAZY_PAGE_INIT)return void this._pagesCapability.resolve();let l=i-1;if(l<=0)this._pagesCapability.resolve();else for(let a=2;a<=i;++a){const e=t.getPage(a).then((t=>{const e=this._pages[a-1];e.pdfPage||e.setPdfPage(t),0===--l&&this._pagesCapability.resolve()}),(t=>{console.error(`Unable to get page ${a} to initialize viewer`,t),0===--l&&this._pagesCapability.resolve()}));a%Wg.PAUSE_EAGER_PAGE_INIT===0&&await e}})),o.dispatch("pagesinit",{source:this}),t.getMetadata().then((({info:e})=>{t===this.pdfDocument&&e.Language&&(d.lang=e.Language)})),this.defaultRenderingQueue&&this.update()})).catch((t=>{console.error("Unable to initialize viewer",t),this._pagesCapability.reject(t)}))}setPageLabels(t){var e;if(this.pdfDocument){t?Array.isArray(t)&&this.pdfDocument.numPages===t.length?this._pageLabels=t:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let t=0,n=this._pages.length;tthis.container.clientWidth}get isVerticalScrollbarEnabled(){return!this.isInPresentationMode&&this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const t=this._scrollMode===gS.PAGE?$i(this,Ag).pages:this._pages,e=this._scrollMode===gS.HORIZONTAL,n=e&&this._isContainerRtl;return fS({scrollEl:this.container,views:t,sortByVisibility:!0,horizontal:e,rtl:n})}cleanup(){for(const t of this._pages)t.renderingState!==yS.FINISHED&&t.reset()}_cancelRendering(){for(const t of this._pages)t.cancelRendering()}forceRendering(t){const e=t||this._getVisiblePages(),n=na(this,tE,mE).call(this,e),l=this._spreadMode!==ES.NONE&&this._scrollMode!==gS.HORIZONTAL,i=this.renderingQueue.getHighestPriority(e,this._pages,n,l);return!!i&&(na(this,tE,hE).call(this,i).then((()=>{this.renderingQueue.renderView(i)})),!0)}get hasEqualPageSizes(){const t=this._pages[0];for(let e=1,n=this._pages.length;e{const n=e.pdfPage.getViewport({scale:1}),l=zS(n);if(void 0===t)t=l;else if(this.enablePrintAutoRotate&&l!==t)return{width:n.height,height:n.width,rotation:(n.rotation-90)%360};return{width:n.width,height:n.height,rotation:n.rotation}}))}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(t){if(!(t instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${t}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=t,this.refresh(!1,{optionalContentConfigPromise:t}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:t}))}get scrollMode(){return this._scrollMode}set scrollMode(t){if(this._scrollMode!==t){if(!wS(t))throw new Error(`Invalid scroll mode: ${t}`);this.pagesCount>Wg.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=t,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:t}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(t=null){const e=this._scrollMode,n=this.viewer;n.classList.toggle("scrollHorizontal",e===gS.HORIZONTAL),n.classList.toggle("scrollWrapped",e===gS.WRAPPED),this.pdfDocument&&t&&(e===gS.PAGE?na(this,tE,iE).call(this):this._previousScrollMode===gS.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(t,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(t){if(this._spreadMode!==t){if(!xS(t))throw new Error(`Invalid spread mode: ${t}`);this._spreadMode=t,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:t}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(t=null){if(!this.pdfDocument)return;const e=this.viewer,n=this._pages;if(this._scrollMode===gS.PAGE)na(this,tE,iE).call(this);else if(e.textContent="",this._spreadMode===ES.NONE)for(const l of this._pages)e.append(l.div);else{const t=this._spreadMode-1;let l=null;for(let i=0,a=n.length;i=a;e--){const n=i[e],l=i[e+1]-1;if(nl)return l-t}if(e){const e=i[0];if(et)return e-t+1}break}break}case gS.HORIZONTAL:break;case gS.PAGE:case gS.VERTICAL:{if(this._spreadMode===ES.NONE)break;const n=this._spreadMode-1;if(e&&t%2!==n)break;if(!e&&t%2===n)break;const{views:l}=this._getVisiblePages(),i=e?t-1:t+1;for(const{id:t,percent:e,widthPercent:a}of l)if(t===i){if(e>0&&100===a)return 2;break}break}}return 1}nextPage(){const t=this._currentPageNumber,e=this.pagesCount;if(t>=e)return!1;const n=this._getPageAdvance(t,!1)||1;return this.currentPageNumber=Math.min(t+n,e),!0}previousPage(){const t=this._currentPageNumber;if(t<=1)return!1;const e=this._getPageAdvance(t,!0)||1;return this.currentPageNumber=Math.max(t-e,1),!0}updateScale({drawingDelay:t,scaleFactor:e=null,steps:n=null,origin:l}){if(null===n&&null===e)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let i=this._currentScale;if(e>0&&1!==e)i=Math.round(i*e*100)/100;else if(n){const t=n>0?ZS:1/ZS,e=n>0?Math.ceil:Math.floor;n=Math.abs(n);do{i=e(10*(i*t).toFixed(2))/10}while(--n>0)}i=Math.max(NS,Math.min(RS,i)),na(this,tE,cE).call(this,i,{noScroll:!1,drawingDelay:t,origin:l})}increaseScale(t={}){this.updateScale({...t,steps:t.steps??1})}decreaseScale(t={}){this.updateScale({...t,steps:-(t.steps??1)})}get containerTopLeft(){return $i(this,Yg)||ea(this,Yg,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return $i(this,Jg)?$i(this,Bg):mV.DISABLE}set annotationEditorMode({mode:t,editId:e=null,isFromKeyboard:n=!1}){var l;if(!$i(this,Jg))throw new Error("The AnnotationEditor is not enabled.");if($i(this,Bg)===t)return;if(!Vg(t))throw new Error(`Invalid AnnotationEditor mode: ${t}`);if(!this.pdfDocument)return;t===mV.STAMP&&(null==(l=$i(this,xg))||l.loadModel("altText"));const{eventBus:i}=this,a=()=>{na(this,tE,FE).call(this),ea(this,Bg,t),$i(this,Jg).updateMode(t,e,n),i.dispatch("annotationeditormodechanged",{source:this,mode:t})};if(t===mV.NONE||$i(this,Bg)===mV.NONE){const e=t!==mV.NONE;e||this.pdfDocument.annotationStorage.resetModifiedIds();for(const t of this._pages)t.toggleEditingMode(e);const n=na(this,tE,uE).call(this);if(e&&n){na(this,tE,FE).call(this),ea(this,zg,new AbortController);const t=AbortSignal.any([$i(this,wg).signal,$i(this,zg).signal]);return void i._on("pagerendered",(({pageNumber:t})=>{n.delete(t),0===n.size&&ea(this,vg,setTimeout(a,0))}),{signal:t})}}a()}refresh(t=!1,e=Object.create(null)){if(this.pdfDocument){for(const t of this._pages)t.update(e);null!==$i(this,Hg)&&(clearTimeout($i(this,Hg)),ea(this,Hg,null)),t||this.update()}}}gg=new WeakMap,Eg=new WeakMap,Gg=new WeakMap,Bg=new WeakMap,Jg=new WeakMap,kg=new WeakMap,Yg=new WeakMap,Cg=new WeakMap,Xg=new WeakMap,Ig=new WeakMap,Dg=new WeakMap,fg=new WeakMap,Lg=new WeakMap,wg=new WeakMap,xg=new WeakMap,zg=new WeakMap,vg=new WeakMap,Og=new WeakMap,_g=new WeakMap,jg=new WeakMap,Kg=new WeakMap,Pg=new WeakMap,Ag=new WeakMap,Hg=new WeakMap,qg=new WeakMap,$g=new WeakMap,tE=new WeakSet,eE=function(t){const e={annotationEditorMode:$i(this,Bg),annotationMode:$i(this,kg),textLayerMode:$i(this,$g)};return t&&(!t.includes(xV.COPY)&&$i(this,$g)===MS.ENABLE&&(e.textLayerMode=MS.ENABLE_PERMISSIONS),t.includes(xV.MODIFY_CONTENTS)||(e.annotationEditorMode=mV.DISABLE),!t.includes(xV.MODIFY_ANNOTATIONS)&&!t.includes(xV.FILL_INTERACTIVE_FORMS)&&$i(this,kg)===FV.ENABLE_FORMS&&(e.annotationMode=FV.ENABLE)),e},nE=async function(t){if("hidden"===document.visibilityState||!this.container.offsetParent||0===this._getVisiblePages().views.length)return;const e=Promise.withResolvers(),n=new AbortController;document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&e.resolve()}),{signal:"function"==typeof AbortSignal.any?AbortSignal.any([t,n.signal]):t}),await Promise.race([this._onePageRenderedCapability.promise,e.promise]),n.abort()},lE=function(t,e){const n=document.getSelection(),{focusNode:l,anchorNode:i}=n;if(i&&l&&n.containsNode($i(this,_g))){if($i(this,Og)||t===MS.ENABLE_PERMISSIONS)return void jV(e);ea(this,Og,!0);const{classList:n}=this.viewer;n.add("copyAll");const l=new AbortController;window.addEventListener("keydown",(t=>ea(this,jg,"Escape"===t.key)),{signal:l.signal}),this.getAllText().then((async t=>{null!==t&&await navigator.clipboard.writeText(t)})).catch((t=>{console.warn(`Something goes wrong when extracting the text: ${t.message}`)})).finally((()=>{ea(this,Og,!1),ea(this,jg,!1),l.abort(),n.remove("copyAll")})),jV(e)}},iE=function(){if(this._scrollMode!==gS.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const t=this._currentPageNumber,e=$i(this,Ag),n=this.viewer;if(n.textContent="",e.pages.length=0,this._spreadMode!==ES.NONE||this.isInPresentationMode){const l=new Set,i=this._spreadMode-1;-1===i?l.add(t-1):t%2!==i?(l.add(t-1),l.add(t)):(l.add(t-2),l.add(t-1));const a=document.createElement("div");if(a.className="spread",this.isInPresentationMode){const t=document.createElement("div");t.className="dummyPage",a.append(t)}for(const t of l){const n=this._pages[t];n&&(a.append(n.div),e.pages.push(n))}n.append(a)}else{const l=this._pages[t-1];n.append(l.div),e.pages.push(l)}e.scrollDown=t>=e.previousPageNumber,e.previousPageNumber=t},aE=function(t,e=null){const{div:n,id:l}=t;if(this._currentPageNumber!==l&&this._setCurrentPageNumber(l),this._scrollMode===gS.PAGE&&(na(this,tE,iE).call(this),this.update()),!e&&!this.isInPresentationMode){const t=n.offsetLeft+n.clientLeft,l=t+n.clientWidth,{scrollLeft:i,clientWidth:a}=this.container;(this._scrollMode===gS.HORIZONTAL||ti+a)&&(e={left:0,top:0})}GS(n,e),!this._currentScaleValue&&this._location&&(this._location=null)},sE=function(t){return t===this._currentScale||Math.abs(t-this._currentScale)<1e-15},rE=function(t,e,{noScroll:n=!1,preset:l=!1,drawingDelay:i=-1,origin:a=null}){if(this._currentScaleValue=e.toString(),na(this,tE,sE).call(this,t))return void(l&&this.eventBus.dispatch("scalechanging",{source:this,scale:t,presetValue:e}));this.viewer.style.setProperty("--scale-factor",t*zV.PDF_TO_CSS_UNITS);const s=i>=0&&i<1e3;this.refresh(!0,{scale:t,drawingDelay:s?i:-1}),s&&ea(this,Hg,setTimeout((()=>{ea(this,Hg,null),this.refresh()}),i));const r=this._currentScale;if(this._currentScale=t,!n){let e,n=this._currentPageNumber;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(n=this._location.pageNumber,e=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:n,destArray:e,allowNegativeOffset:!0}),Array.isArray(a)){const e=t/r-1,[n,l]=this.containerTopLeft;this.container.scrollLeft+=(a[0]-l)*e,this.container.scrollTop+=(a[1]-n)*e}}this.eventBus.dispatch("scalechanging",{source:this,scale:t,presetValue:l?e:void 0}),this.defaultRenderingQueue&&this.update()},oE=function(){return this._spreadMode!==ES.NONE&&this._scrollMode!==gS.HORIZONTAL?2:1},cE=function(t,e){let n=parseFloat(t);if(n>0)e.preset=!1,na(this,tE,rE).call(this,n,t,e);else{const l=this._pages[this._currentPageNumber-1];if(!l)return;let i=VS,a=QS;this.isInPresentationMode?(i=a=4,this._spreadMode!==ES.NONE&&(i*=2)):this.removePageBorders?i=a=0:this._scrollMode===gS.HORIZONTAL&&([i,a]=[a,i]);const s=(this.container.clientWidth-i)/l.width*l.scale/$i(this,tE,oE),r=(this.container.clientHeight-a)/l.height*l.scale;switch(t){case"page-actual":n=1;break;case"page-width":n=s;break;case"page-height":n=r;break;case"page-fit":n=Math.min(s,r);break;case"auto":const e=zS(l)?s:Math.min(r,s);n=Math.min(WS,e);break;default:return void console.error(`#setScale: "${t}" is an unknown zoom value.`)}e.preset=!0,na(this,tE,rE).call(this,n,t,e)}},dE=function(){const t=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),na(this,tE,aE).call(this,t)},uE=function(){const t=this._getVisiblePages(),e=[],{ids:n,views:l}=t;for(const i of l){const{view:t}=i;t.hasEditableAnnotations()?e.push(i):n.delete(t.id)}return 0===e.length?null:(this.renderingQueue.renderHighestPriority({first:e[0],last:e.at(-1),views:e,ids:n}),n)},hE=async function(t){if(t.pdfPage)return t.pdfPage;try{const e=await this.pdfDocument.getPage(t.id);return t.pdfPage||t.setPdfPage(e),e}catch(TB){return console.error("Unable to get page for page view",TB),null}},mE=function(t){var e,n;if(1===(null==(e=t.first)?void 0:e.id))return!0;if((null==(n=t.last)?void 0:n.id)===this.pagesCount)return!1;switch(this._scrollMode){case gS.PAGE:return $i(this,Ag).scrollDown;case gS.HORIZONTAL:return this.scroll.right}return this.scroll.down},UE=function(t=this.container.clientHeight){t!==$i(this,Kg)&&(ea(this,Kg,t),vS.setProperty("--viewer-container-height",`${t}px`))},pE=function(t){for(const e of t)if(e.target===this.container){na(this,tE,UE).call(this,Math.floor(e.borderBoxSize[0].blockSize)),ea(this,Yg,null);break}},FE=function(){var t;null==(t=$i(this,zg))||t.abort(),ea(this,zg,null),null!==$i(this,vg)&&(clearTimeout($i(this,vg)),ea(this,vg,null))};class NE extends ZE{_resetView(){super._resetView(),this._scrollMode=gS.PAGE,this._spreadMode=ES.NONE}set scrollMode(t){}_updateScrollMode(){}set spreadMode(t){}_updateSpreadMode(){}}pS.AnnotationLayerBuilder,pS.DownloadManager,pS.EventBus,pS.FindState,pS.GenericL10n,pS.LinkTarget,pS.PDFFindController,pS.PDFHistory;var RE=pS.PDFLinkService;pS.PDFPageView,pS.PDFScriptingManager,pS.PDFSinglePageViewer,pS.PDFViewer,pS.ProgressBar,pS.RenderingStates,pS.ScrollMode,pS.SimpleLinkService,pS.SpreadMode,pS.StructTreeLayerBuilder,pS.TextLayerBuilder,pS.XfaLayerBuilder,pS.parseQueryString;const SE=["id"],WE=["id"],VE=(0,r.Lk)("canvas",null,null,-1),QE={key:0,class:"textLayer"},yE={key:1,class:"annotationLayer"},TE=(0,r.pM)({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},linkService:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(t,{expose:e,emit:n}){const l=t,i=(0,ji.IJ)([]),a=(0,ji.KR)([]),s=(0,ji.IJ)(null);let c=null;const{doc:d}=mS({onError:t=>{i.value=[],n("loading-failed",t)},onPasswordRequest({callback:t,isWrongPassword:e}){n("password-requested",{callback:t,isWrongPassword:e})},onProgress:t=>{n("progress",t)},source:(0,ji.lW)(l,"source")}),u=(0,r.EW)((()=>{if(!d.value||!l.annotationLayer)return null;if(l.linkService)return l.linkService;const t=new RE;return t.setDocument(d.value),t.setViewer({scrollPageIntoView:({pageNumber:t})=>{n("internal-link-clicked",t)}}),t})),h=async t=>{if(!d.value)return;const e=await d.value.getData(),n=await d.value.getMetadata(),l=t??n.contentDispositionFilename??"";cS(e,l)},m=t=>{let e,n;return l.height&&!l.width?(n=l.height,e=n/t):(e=l.width??s.value.clientWidth,n=e*t),[e,n]},U=async(t=300,e="",n=!1)=>{var i,a,s;if(!d.value)return;const r=t/72,o=96/72;let c,u,h;try{c=window.document.createElement("div"),c.style.display="none",window.document.body.appendChild(c),u=await oS(c);const t=l.page&&!n?[l.page]:[...Array(d.value.numPages+1).keys()].slice(1);await Promise.all(t.map((async(t,e)=>{const n=await d.value.getPage(t),l=n.getViewport({scale:1,rotation:0});if(0===e){const t=l.width*r/o,e=l.height*r/o;rS(u,t,e)}const i=window.document.createElement("canvas");i.width=l.width*r,i.height=l.height*r,c.appendChild(i);const a=i.cloneNode();u.contentWindow.document.body.appendChild(a),await n.render({canvasContext:i.getContext("2d"),intent:"print",transform:[r,0,0,r,0,0],viewport:l}).promise,a.getContext("2d").drawImage(i,0,0)}))),e&&(h=window.document.title,window.document.title=e),null==(i=u.contentWindow)||i.focus(),null==(a=u.contentWindow)||a.print()}finally{h&&(window.document.title=h),uS(c),null==(s=c.parentNode)||s.removeChild(c)}},p=async()=>{if(d.value&&(null==c||!c.isAborted))try{i.value=l.page?[l.page]:[...Array(d.value.numPages+1).keys()].slice(1),a.value=Array(i.value.length).fill(1),await Promise.all(i.value.map((async(t,e)=>{const n=await d.value.getPage(t);if(null!=c&&c.isAborted)return;const i=((l.rotation%90===0?l.rotation:0)+n.rotate)%360,[r,o,u]=Array.from(s.value.getElementsByClassName("vue-pdf-embed__page")[e].children),h=!!(i/90%2),U=n.view[2]-n.view[0],p=n.view[3]-n.view[1],[N,R]=m(h?U/p:p/U),S=`${Math.floor(N)}px`,W=`${Math.floor(R)}px`,V=N/(h?p:U),Q=n.getViewport({scale:V,rotation:i});a.value[e]=V,r.style.display="block",r.style.width=S,r.style.height=W;const y=[F(n,Q.clone({scale:Q.scale*window.devicePixelRatio*l.scale}),r)];return l.textLayer&&y.push(Z(n,Q.clone({dontFlip:!0}),o)),l.annotationLayer&&y.push(b(n,Q.clone({dontFlip:!0}),u||o)),Promise.all(y)}))),null!=c&&c.isAborted||n("rendered")}catch(t){i.value=[],a.value=[],null!=c&&c.isAborted||n("rendering-failed",t)}},F=async(t,e,n)=>{n.width=e.width,n.height=e.height,await t.render({canvasContext:n.getContext("2d"),viewport:e}).promise},b=async(t,e,n)=>{dS(n),new eS({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:n,page:t,structTreeLayer:null,viewport:e}).render({annotations:await t.getAnnotations(),div:n,imageResourcesPath:l.imageResourcesPath,linkService:u.value,page:t,renderForms:!1,viewport:e})},Z=async(t,e,n)=>{dS(n),new iS({container:n,textContentSource:await t.getTextContent(),viewport:e}).render()};return(0,r.wB)(d,(t=>{t&&n("loaded",t)}),{immediate:!0}),(0,r.wB)((()=>[d.value,l.annotationLayer,l.height,l.imageResourcesPath,l.page,l.rotation,l.scale,l.textLayer,l.width]),(async([t])=>{t&&(c&&(c.isAborted=!0,await c.promise),uS(s.value),c={isAborted:!1,promise:p()},await c.promise,c=null)}),{immediate:!0}),(0,r.xo)((()=>{uS(s.value)})),e({doc:d,download:h,print:U}),(t,e)=>((0,r.uX)(),(0,r.CE)("div",{id:t.id,ref_key:"root",ref:s,class:"vue-pdf-embed"},[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.value,((e,n)=>((0,r.uX)(),(0,r.CE)("div",{key:e},[(0,r.RG)(t.$slots,"before-page",{page:e}),(0,r.Lk)("div",{id:t.id&&`${t.id}-${e}`,class:"vue-pdf-embed__page",style:(0,o.Tr)({"--scale-factor":a.value[n],position:"relative"})},[VE,t.textLayer?((0,r.uX)(),(0,r.CE)("div",QE)):(0,r.Q3)("",!0),t.annotationLayer?((0,r.uX)(),(0,r.CE)("div",yE)):(0,r.Q3)("",!0)],12,WE),(0,r.RG)(t.$slots,"after-page",{page:e})])))),128))],8,SE))}});null!=window&&window.Vue&&(window.VuePdfEmbed=TE,window.useVuePdfEmbed=mS),null!=nS&&nS.workerSrc||(nS.workerSrc=sS);var ME=n(8704),gE=n(6965),EE=n(6253),GE={name:"Attachment",components:{VuePdfEmbed:TE},props:{id:{type:String,default:""},size:{type:String,required:!0},type:{type:String,required:!0},path:{type:String,default:""},filename:{type:String,default:""},coin:{type:[Number,String],default:0},locked:{type:[Boolean,String,Number],default:!1}},data(){return{isPdfPreviewOpen:!1,pdfSrc:null,pdfWidth:0,pdfHeight:0,token:""}},mounted(){this.token=this.getToken()},computed:{isLocked(){return"boolean"===typeof this.locked?this.locked:"string"===typeof this.locked?"1"===this.locked||"true"===this.locked:"number"===typeof this.locked&&1===this.locked},hasCoin(){return this.coin&&parseInt(this.coin)>0},hasValidId(){return!!this.id&&""!==this.id.trim()},displayFilename(){return this.filename?this.filename:this.path?this.getFileName(this.path):"未知文件名"},downloadUrl(){return this.hasValidId?`/attachment/download/${this.id}`:this.path||"#"},showPreview(){return"pdf"===this.type.toLowerCase()&&!this.isLocked&&!(this.coin&&parseInt(this.coin)>0)}},methods:{getFileName(t){if(!t)return"";const e=t.split("/");return e[e.length-1]},getToken(){return ME.A.get("token")},async openPreview(){if(!this.token)return void EE.A.alert("您未登录,无法预览文件!","提示");if(this.isLocked)return void alert("非法操作!");if(this.coin&&parseInt(this.coin)>0)return void alert("非法操作!");const t=parseFloat(this.size);if(!isNaN(t)&&t>15)try{await EE.A.confirm("该文件较大,预览大文件可能消耗较多流量,并可能造成浏览器卡顿。确定要继续吗?","大文件预览提示")}catch(nG){return}this.isPdfPreviewOpen=!0,document.body.style.overflow="hidden",this.updatePdfViewerSize(),window.addEventListener("resize",this.updatePdfViewerSize);try{this.hasValidId?(this.isLoading=!0,fetch("https://newfront.xn--xhq44jb2fzpc.com/download/geturl",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{this.pdfSrc=t.url,this.isLoading=!1}))):(console.error("无有效的PDF源"),EE.A.alert("无法预览,文件路径无效","错误"))}catch($l){console.error("无法加载PDF:",$l),EE.A.alert("无法加载PDF","错误")}},closePdfPreview(){this.isPdfPreviewOpen=!1,document.body.style.overflow="",window.removeEventListener("resize",this.updatePdfViewerSize)},updatePdfViewerSize(){this.pdfWidth=window.innerWidth-40,this.pdfHeight=window.innerHeight-120},handleDownload(t){if(this.isLocked)return t.preventDefault(),void(this.token?(0,EE.A)({title:"输入密钥",message:"此文件已加密,请输入密钥:",showInput:!0,inputPlaceholder:"请输入密钥",confirmText:"确认",cancelText:"取消",cancel:!0}).then((({value:t})=>{t?fetch("https://newfront.xn--xhq44jb2fzpc.com/download/get-encrypt",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id,code:t})}).then((t=>t.json())).then((t=>{if(!t.url)throw new Error(t.message||"获取下载链接失败");window.open(t.url,"_blank")})).catch((t=>{console.error("下载加密文件失败:",t),EE.A.alert(t.message||"密钥验证失败","错误")})):EE.A.alert("密钥不能为空","提示")})).catch((()=>{})):EE.A.alert("您未登录,无法下载加密文件!","提示"));this.hasValidId?this.token?fetch("https://newfront.xn--xhq44jb2fzpc.com/download/check-download",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{switch(t.code){case 0:this.getDownloadUrl();break;case 1:if(!t?.remaining_coin)return void EE.A.alert("您未激活东币系统,无法下载文件!","提示");EE.A.confirm(`下载此文件需要 ${t.cost} 东币,您当前余额为 ${t.remaining_coin} 东币,是否确认下载?`,"确认下载").then((()=>{this.getDownloadUrl()})).catch((()=>{}));break;case-1:if(!t?.remaining_coin)return void EE.A.alert("您未激活东币系统,无法下载文件!","提示");EE.A.alert(`下载此文件需要 ${t.cost} 东币,您当前余额为 ${t.remaining_coin} 东币,余额不足!`,"余额不足");break;default:EE.A.alert("检查下载条件时发生错误","错误")}})).catch((t=>{console.error("检查下载条件失败:",t),EE.A.alert("检查下载条件时发生错误","错误")})):EE.A.alert("您未登录,无法下载文件!","提示"):EE.A.alert("无法下载,文件路径无效","错误")},getDownloadUrl(){fetch("https://newfront.xn--xhq44jb2fzpc.com/download/geturl",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{t.url?window.open(t.url,"_blank"):EE.A.alert("获取下载链接失败","错误")})).catch((t=>{console.error("获取下载链接失败:",t),EE.A.alert("获取下载链接失败","错误")}))}}},BE=n(1241);const JE=(0,BE.A)(GE,[["render",_i],["__scopeId","data-v-324aeea8"]]);var kE=JE;const YE={key:0,class:"loading-spinner"},CE={key:1,class:"error-message"},XE={key:2,class:"course-content"},IE={class:"course-header"},DE={class:"course-title"},fE={class:"course-tags"},LE={class:"course-info"},wE={class:"course-category"},xE={class:"course-teachers"},zE={class:"course-rating-container"},vE={class:"course-rating"},OE={class:"rating-number"},_E={class:"rating-stars"},jE={class:"rating-count"},KE={class:"course-actions"};function PE(t,e,n,l,i,a){return(0,r.uX)(),(0,r.CE)("div",{class:(0,o.C4)(["course-card",{loading:i.isLoading}])},[e[2]||(e[2]=(0,r.Lk)("div",{class:"course-card-header"},"相关课程",-1)),i.isLoading?((0,r.uX)(),(0,r.CE)("div",YE,e[1]||(e[1]=[(0,r.Lk)("div",{class:"spinner"},null,-1)]))):i.error?((0,r.uX)(),(0,r.CE)("div",CE," 当前课程似乎不存在呢~ ")):i.course?((0,r.uX)(),(0,r.CE)("div",XE,[(0,r.Lk)("div",IE,[(0,r.Lk)("h3",DE,(0,o.v_)(i.course.course_name),1),(0,r.Lk)("div",fE,[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.course.titles,((t,e)=>((0,r.uX)(),(0,r.CE)("span",{key:e,class:"course-tag",style:(0,o.Tr)({backgroundColor:t.color})},(0,o.v_)(t.title),5)))),128))])]),(0,r.Lk)("div",LE,[(0,r.Lk)("div",wE,(0,o.v_)(a.getCategoryName(i.course.category_id)),1),(0,r.Lk)("div",xE,(0,o.v_)(i.course.teachers),1)]),(0,r.Lk)("div",zE,[(0,r.Lk)("div",vE,[(0,r.Lk)("span",OE,(0,o.v_)(i.course.rating),1),(0,r.Lk)("div",_E,[(0,r.Lk)("span",{class:"stars",style:(0,o.Tr)({width:parseFloat(i.course.rating)/5*100+"%"})},null,4)]),(0,r.Lk)("span",jE,"("+(0,o.v_)(i.course.rating_count)+"人评)",1)])]),(0,r.Lk)("div",KE,[(0,r.Lk)("button",{class:"view-detail-button",onClick:e[0]||(e[0]=(...t)=>a.viewCourseDetail&&a.viewCourseDetail(...t))},"查看详情")])])):(0,r.Q3)("",!0)],2)}var AE={name:"CourseCard",props:{courseId:{type:[Number,String],required:!0}},data(){return{course:null,isLoading:!0,error:null,categoryMap:{1:"通识选修类",2:"人文选修类",3:"专业方向类",4:"体育类",5:"学科基础类",6:"暑期国际课",7:"数学与自然科学类",8:"重修专栏",9:"数学与自然科学类(必修)",10:"人文社会科学类(必修)",11:"学科基础类(必修)",12:"专业方向类(必修)",13:"实践类(必修)"}}},mounted(){this.fetchCourseDetails()},methods:{async fetchCourseDetails(){this.isLoading=!0,this.error=null;try{const t=await fetch(`https://coursesystem.xn--xhq44jb2fzpc.com/course-detail?course_id=${this.courseId}`);if(!t.ok)throw new Error("获取课程信息失败");this.course=await t.json()}catch(t){this.error=t.message,console.error("获取课程详情出错:",t)}finally{this.isLoading=!1}},getCategoryName(t){return this.categoryMap[t]||"未知类别"},viewCourseDetail(){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;if(t)EE.A.confirm("建议在电脑端查看课程评分系统以获得最佳体验。仍要继续吗?","提示").then((()=>{const t=btoa(String(this.courseId)),e=`https://course.东北大学.com/courses?c=${t}`;window.open(e,"_blank")})).catch((()=>{console.log("用户取消了在移动端查看课程评分系统")}));else{const t=btoa(String(this.courseId)),e=`https://course.东北大学.com/courses?c=${t}`;window.open(e,"_blank")}}}};const HE=(0,BE.A)(AE,[["render",PE],["__scopeId","data-v-141565b1"]]);var qE=HE,$E=n(7943),tG=n.n($E),eG=(n(116),n(1806),{1362:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,6],n=[1,7],l=[1,8],i=[1,9],a=[1,12],s=[1,11],r=[1,15,24],o=[1,19],c=[1,31],d=[1,34],u=[1,32],h=[1,33],m=[1,35],U=[1,36],p=[1,37],F=[1,38],b=[1,41],Z=[1,42],N=[1,43],R=[1,44],S=[15,24],W=[1,56],V=[1,57],Q=[1,58],y=[1,59],T=[1,60],M=[1,61],g=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],E=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],G=[7,8,9,10,15,18,22,24],B=[47,77,78,79,80],J=[47,54,55,77,78,79,80],k=[47,50,51,52,53,77,78,79,80],Y=[15,24,31],C=[1,93],X={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,CLASS_DIAGRAM:22,statements:23,EOF:24,statement:25,className:26,alphaNumToken:27,classLiteralName:28,GENERICTYPE:29,relationStatement:30,LABEL:31,classStatement:32,methodStatement:33,annotationStatement:34,clickStatement:35,cssClassStatement:36,CLASS:37,STYLE_SEPARATOR:38,STRUCT_START:39,members:40,STRUCT_STOP:41,ANNOTATION_START:42,ANNOTATION_END:43,MEMBER:44,SEPARATOR:45,relation:46,STR:47,relationType:48,lineType:49,AGGREGATION:50,EXTENSION:51,COMPOSITION:52,DEPENDENCY:53,LINE:54,DOTTED_LINE:55,CALLBACK:56,LINK:57,LINK_TARGET:58,CLICK:59,CALLBACK_NAME:60,CALLBACK_ARGS:61,HREF:62,CSSCLASS:63,commentToken:64,textToken:65,graphCodeTokens:66,textNoTagsToken:67,TAGSTART:68,TAGEND:69,"==":70,"--":71,PCT:72,DEFAULT:73,SPACE:74,MINUS:75,keywords:76,UNICODE_TEXT:77,NUM:78,ALPHA:79,BQUOTE_STR:80,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"CLASS_DIAGRAM",24:"EOF",29:"GENERICTYPE",31:"LABEL",37:"CLASS",38:"STYLE_SEPARATOR",39:"STRUCT_START",41:"STRUCT_STOP",42:"ANNOTATION_START",43:"ANNOTATION_END",44:"MEMBER",45:"SEPARATOR",47:"STR",50:"AGGREGATION",51:"EXTENSION",52:"COMPOSITION",53:"DEPENDENCY",54:"LINE",55:"DOTTED_LINE",56:"CALLBACK",57:"LINK",58:"LINK_TARGET",59:"CLICK",60:"CALLBACK_NAME",61:"CALLBACK_ARGS",62:"HREF",63:"CSSCLASS",66:"graphCodeTokens",68:"TAGSTART",69:"TAGEND",70:"==",71:"--",72:"PCT",73:"DEFAULT",74:"SPACE",75:"MINUS",76:"keywords",77:"UNICODE_TEXT",78:"NUM",79:"ALPHA",80:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:l.setDirection("TB");break;case 5:l.setDirection("BT");break;case 6:l.setDirection("RL");break;case 7:l.setDirection("LR");break;case 11:l.parseDirective("%%{","open_directive");break;case 12:l.parseDirective(a[r],"type_directive");break;case 13:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 14:l.parseDirective("}%%","close_directive","class");break;case 19:case 20:this.$=a[r];break;case 21:this.$=a[r-1]+a[r];break;case 22:case 23:this.$=a[r-1]+"~"+a[r];break;case 24:l.addRelation(a[r]);break;case 25:a[r-1].title=l.cleanupLabel(a[r]),l.addRelation(a[r-1]);break;case 33:l.addClass(a[r]);break;case 34:l.addClass(a[r-2]),l.setCssClass(a[r-2],a[r]);break;case 35:l.addClass(a[r-3]),l.addMembers(a[r-3],a[r-1]);break;case 36:l.addClass(a[r-5]),l.setCssClass(a[r-5],a[r-3]),l.addMembers(a[r-5],a[r-1]);break;case 37:l.addAnnotation(a[r],a[r-2]);break;case 38:this.$=[a[r]];break;case 39:a[r].push(a[r-1]),this.$=a[r];break;case 40:case 42:case 43:break;case 41:l.addMember(a[r-1],l.cleanupLabel(a[r]));break;case 44:this.$={id1:a[r-2],id2:a[r],relation:a[r-1],relationTitle1:"none",relationTitle2:"none"};break;case 45:this.$={id1:a[r-3],id2:a[r],relation:a[r-1],relationTitle1:a[r-2],relationTitle2:"none"};break;case 46:this.$={id1:a[r-3],id2:a[r],relation:a[r-2],relationTitle1:"none",relationTitle2:a[r-1]};break;case 47:this.$={id1:a[r-4],id2:a[r],relation:a[r-2],relationTitle1:a[r-3],relationTitle2:a[r-1]};break;case 48:this.$={type1:a[r-2],type2:a[r],lineType:a[r-1]};break;case 49:this.$={type1:"none",type2:a[r],lineType:a[r-1]};break;case 50:this.$={type1:a[r-1],type2:"none",lineType:a[r]};break;case 51:this.$={type1:"none",type2:"none",lineType:a[r]};break;case 52:this.$=l.relationType.AGGREGATION;break;case 53:this.$=l.relationType.EXTENSION;break;case 54:this.$=l.relationType.COMPOSITION;break;case 55:this.$=l.relationType.DEPENDENCY;break;case 56:this.$=l.lineType.LINE;break;case 57:this.$=l.lineType.DOTTED_LINE;break;case 58:case 64:this.$=a[r-2],l.setClickEvent(a[r-1],a[r]);break;case 59:case 65:this.$=a[r-3],l.setClickEvent(a[r-2],a[r-1]),l.setTooltip(a[r-2],a[r]);break;case 60:case 68:this.$=a[r-2],l.setLink(a[r-1],a[r]);break;case 61:case 69:this.$=a[r-3],l.setLink(a[r-2],a[r-1],a[r]);break;case 62:case 70:this.$=a[r-3],l.setLink(a[r-2],a[r-1]),l.setTooltip(a[r-2],a[r]);break;case 63:case 71:this.$=a[r-4],l.setLink(a[r-3],a[r-2],a[r]),l.setTooltip(a[r-3],a[r-1]);break;case 66:this.$=a[r-3],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 67:this.$=a[r-4],l.setClickEvent(a[r-3],a[r-2],a[r-1]),l.setTooltip(a[r-3],a[r]);break;case 72:l.setCssClass(a[r-1],a[r])}},table:[{3:1,4:2,5:3,6:4,7:e,8:n,9:l,10:i,11:5,12:10,18:a,22:s},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:e,8:n,9:l,10:i,11:5,12:10,18:a,22:s},{1:[2,8]},t(r,[2,4]),t(r,[2,5]),t(r,[2,6]),t(r,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:o},t([16,21],[2,12]),{5:29,6:28,7:e,8:n,9:l,10:i,12:10,18:a,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:c,42:d,44:u,45:h,56:m,57:U,59:p,63:F,77:b,78:Z,79:N,80:R},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},t(S,[2,24],{31:[1,50]}),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),t(S,[2,31]),t(S,[2,32]),t(S,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:W,51:V,52:Q,53:y,54:T,55:M}),{26:62,27:39,28:40,77:b,78:Z,79:N,80:R},t(S,[2,42]),t(S,[2,43]),{27:63,77:b,78:Z,79:N},{26:64,27:39,28:40,77:b,78:Z,79:N,80:R},{26:65,27:39,28:40,77:b,78:Z,79:N,80:R},{26:66,27:39,28:40,77:b,78:Z,79:N,80:R},{47:[1,67]},t(g,[2,19],{27:39,28:40,26:68,29:[1,69],77:b,78:Z,79:N,80:R}),t(g,[2,20],{29:[1,70]}),t(E,[2,86]),t(E,[2,87]),t(E,[2,88]),t([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),t(G,[2,9]),{14:71,21:o},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:e,8:n,9:l,10:i,12:10,18:a,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:c,42:d,44:u,45:h,56:m,57:U,59:p,63:F,77:b,78:Z,79:N,80:R},t(S,[2,25]),{26:73,27:39,28:40,47:[1,74],77:b,78:Z,79:N,80:R},{46:75,48:54,49:55,50:W,51:V,52:Q,53:y,54:T,55:M},t(S,[2,41]),{49:76,54:T,55:M},t(B,[2,51],{48:77,50:W,51:V,52:Q,53:y}),t(J,[2,52]),t(J,[2,53]),t(J,[2,54]),t(J,[2,55]),t(k,[2,56]),t(k,[2,57]),t(S,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:b,78:Z,79:N},t(g,[2,21]),t(g,[2,22]),t(g,[2,23]),{15:[1,86]},{24:[2,18]},t(Y,[2,44]),{26:87,27:39,28:40,77:b,78:Z,79:N,80:R},{26:88,27:39,28:40,47:[1,89],77:b,78:Z,79:N,80:R},t(B,[2,50],{48:90,50:W,51:V,52:Q,53:y}),t(B,[2,49]),{27:91,77:b,78:Z,79:N},{40:92,44:C},{26:94,27:39,28:40,77:b,78:Z,79:N,80:R},t(S,[2,58],{47:[1,95]}),t(S,[2,60],{47:[1,97],58:[1,96]}),t(S,[2,64],{47:[1,98],61:[1,99]}),t(S,[2,68],{47:[1,101],58:[1,100]}),t(S,[2,72]),t(G,[2,10]),t(Y,[2,46]),t(Y,[2,45]),{26:102,27:39,28:40,77:b,78:Z,79:N,80:R},t(B,[2,48]),t(S,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:C},t(S,[2,37]),t(S,[2,59]),t(S,[2,61]),t(S,[2,62],{58:[1,106]}),t(S,[2,65]),t(S,[2,66],{47:[1,107]}),t(S,[2,69]),t(S,[2,70],{58:[1,108]}),t(Y,[2,47]),{40:109,44:C},t(S,[2,35]),{41:[2,39]},t(S,[2,63]),t(S,[2,67]),t(S,[2,71]),{41:[1,110]},t(S,[2,36])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},I={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:case 10:case 12:case 19:break;case 11:return 15;case 13:case 14:return 22;case 15:return this.begin("struct"),39;case 16:return"EOF_IN_STRUCT";case 17:return"OPEN_IN_STRUCT";case 18:return this.popState(),41;case 20:return"MEMBER";case 21:return 37;case 22:return 63;case 23:return 56;case 24:return 57;case 25:return 59;case 26:return 42;case 27:return 43;case 28:this.begin("generic");break;case 29:case 32:case 35:case 38:case 41:case 44:this.popState();break;case 30:return"GENERICTYPE";case 31:this.begin("string");break;case 33:return"STR";case 34:this.begin("bqstring");break;case 36:return"BQUOTE_STR";case 37:this.begin("href");break;case 39:return 62;case 40:this.begin("callback_name");break;case 42:this.popState(),this.begin("callback_args");break;case 43:return 60;case 45:return 61;case 46:case 47:case 48:case 49:return 58;case 50:case 51:return 51;case 52:case 53:return 53;case 54:return 52;case 55:return 50;case 56:return 54;case 57:return 55;case 58:return 31;case 59:return 38;case 60:return 75;case 61:return"DOT";case 62:return"PLUS";case 63:return 72;case 64:case 65:return"EQUALS";case 66:return 79;case 67:return"PUNCTUATION";case 68:return 78;case 69:return 77;case 70:return 74;case 71:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[44,45],inclusive:!1},callback_name:{rules:[41,42,43],inclusive:!1},href:{rules:[38,39],inclusive:!1},struct:{rules:[16,17,18,19,20],inclusive:!1},generic:{rules:[29,30],inclusive:!1},bqstring:{rules:[35,36],inclusive:!1},string:{rules:[32,33],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],inclusive:!0}}};function D(){this.yy={}}return X.lexer=I,D.prototype=X,X.Parser=D,new D}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8218).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},5890:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,5],l=[6,9,11,23,41],i=[1,17],a=[1,20],s=[1,25],r=[1,26],o=[1,27],c=[1,28],d=[1,37],u=[23,38,39],h=[4,6,9,11,23,41],m=[34,35,36,37],U=[22,29],p=[1,55],F={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,attributeKeyType:27,attributeComment:28,ATTRIBUTE_WORD:29,ATTRIBUTE_KEY:30,COMMENT:31,cardinality:32,relType:33,ZERO_OR_ONE:34,ZERO_OR_MORE:35,ONE_OR_MORE:36,ONLY_ONE:37,NON_IDENTIFYING:38,IDENTIFYING:39,WORD:40,open_directive:41,type_directive:42,arg_directive:43,close_directive:44,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",29:"ATTRIBUTE_WORD",30:"ATTRIBUTE_KEY",31:"COMMENT",34:"ZERO_OR_ONE",35:"ZERO_OR_MORE",36:"ONE_OR_MORE",37:"ONLY_ONE",38:"NON_IDENTIFYING",39:"IDENTIFYING",40:"WORD",41:"open_directive",42:"type_directive",43:"arg_directive",44:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[28,1],[18,3],[32,1],[32,1],[32,1],[32,1],[33,1],[33,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:case 16:case 23:case 24:case 25:case 35:this.$=a[r];break;case 12:l.addEntity(a[r-4]),l.addEntity(a[r-2]),l.addRelationship(a[r-4],a[r],a[r-2],a[r-3]);break;case 13:l.addEntity(a[r-3]),l.addAttributes(a[r-3],a[r-1]);break;case 14:l.addEntity(a[r-2]);break;case 15:l.addEntity(a[r]);break;case 17:this.$=[a[r]];break;case 18:a[r].push(a[r-1]),this.$=a[r];break;case 19:this.$={attributeType:a[r-1],attributeName:a[r]};break;case 20:this.$={attributeType:a[r-2],attributeName:a[r-1],attributeKeyType:a[r]};break;case 21:this.$={attributeType:a[r-2],attributeName:a[r-1],attributeComment:a[r]};break;case 22:this.$={attributeType:a[r-3],attributeName:a[r-2],attributeKeyType:a[r-1],attributeComment:a[r]};break;case 26:case 34:this.$=a[r].replace(/"/g,"");break;case 27:this.$={cardA:a[r],relType:a[r-1],cardB:a[r-2]};break;case 28:this.$=l.Cardinality.ZERO_OR_ONE;break;case 29:this.$=l.Cardinality.ZERO_OR_MORE;break;case 30:this.$=l.Cardinality.ONE_OR_MORE;break;case 31:this.$=l.Cardinality.ONLY_ONE;break;case 32:this.$=l.Identification.NON_IDENTIFYING;break;case 33:this.$=l.Identification.IDENTIFYING;break;case 36:l.parseDirective("%%{","open_directive");break;case 37:l.parseDirective(a[r],"type_directive");break;case 38:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 39:l.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,41:n},{1:[3]},t(l,[2,3],{5:6}),{3:7,4:e,7:3,12:4,41:n},{13:8,42:[1,9]},{42:[2,36]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,41:n},{1:[2,2]},{14:18,15:[1,19],44:a},t([15,44],[2,37]),t(l,[2,8],{1:[2,1]}),t(l,[2,4]),{7:15,10:21,12:4,17:16,23:i,41:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,11]),t(l,[2,15],{18:22,32:24,20:[1,23],34:s,35:r,36:o,37:c}),t([6,9,11,15,20,23,34,35,36,37,41],[2,16]),{11:[1,29]},{16:30,43:[1,31]},{11:[2,39]},t(l,[2,5]),{17:32,23:i},{21:33,22:[1,34],24:35,25:36,29:d},{33:38,38:[1,39],39:[1,40]},t(u,[2,28]),t(u,[2,29]),t(u,[2,30]),t(u,[2,31]),t(h,[2,9]),{14:41,44:a},{44:[2,38]},{15:[1,42]},{22:[1,43]},t(l,[2,14]),{21:44,22:[2,17],24:35,25:36,29:d},{26:45,29:[1,46]},{29:[2,23]},{32:47,34:s,35:r,36:o,37:c},t(m,[2,32]),t(m,[2,33]),{11:[1,48]},{19:49,23:[1,51],40:[1,50]},t(l,[2,13]),{22:[2,18]},t(U,[2,19],{27:52,28:53,30:[1,54],31:p}),t([22,29,30,31],[2,24]),{23:[2,27]},t(h,[2,10]),t(l,[2,12]),t(l,[2,34]),t(l,[2,35]),t(U,[2,20],{28:56,31:p}),t(U,[2,21]),t([22,29,31],[2,25]),t(U,[2,26]),t(U,[2,22])],defaultActions:{5:[2,36],7:[2,2],20:[2,39],31:[2,38],37:[2,23],44:[2,18],47:[2,27]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},b={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),41;case 1:return this.begin("type_directive"),42;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),44;case 4:return 43;case 5:case 6:case 8:case 13:case 17:break;case 7:return 11;case 9:return 9;case 10:return 40;case 11:return 4;case 12:return this.begin("block"),20;case 14:return 30;case 15:return 29;case 16:return 31;case 18:return this.popState(),22;case 19:case 32:return e.yytext[0];case 20:case 24:return 34;case 21:case 25:return 35;case 22:case 26:return 36;case 23:return 37;case 27:case 29:case 30:return 38;case 28:return 39;case 31:return 23;case 33:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17,18,19],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0}}};function Z(){this.yy={}}return F.lexer=b,Z.prototype=F,F.Parser=Z,new Z}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8009).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3602:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,9],n=[1,7],l=[1,6],i=[1,8],a=[1,20,21,22,23,38,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],s=[2,10],r=[1,20],o=[1,21],c=[1,22],d=[1,23],u=[1,30],h=[1,59],m=[1,45],U=[1,49],p=[1,33],F=[1,34],b=[1,35],Z=[1,36],N=[1,37],R=[1,53],S=[1,60],W=[1,48],V=[1,50],Q=[1,52],y=[1,56],T=[1,57],M=[1,38],g=[1,39],E=[1,40],G=[1,41],B=[1,58],J=[1,47],k=[1,51],Y=[1,54],C=[1,55],X=[1,46],I=[1,63],D=[1,68],f=[1,20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],L=[1,72],w=[1,71],x=[1,73],z=[20,21,23,74,75],v=[1,94],O=[1,99],_=[1,102],j=[1,103],K=[1,96],P=[1,101],A=[1,104],H=[1,97],q=[1,109],$=[1,108],tt=[1,98],et=[1,100],nt=[1,105],lt=[1,106],it=[1,107],at=[1,110],st=[20,21,22,23,74,75],rt=[20,21,22,23,48,74,75],ot=[20,21,22,23,40,47,48,50,52,54,56,58,59,60,62,64,66,67,69,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],ct=[20,21,23],dt=[20,21,23,47,59,60,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],ut=[1,12,20,21,22,23,24,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],ht=[47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],mt=[1,143],Ut=[1,151],pt=[1,152],Ft=[1,153],bt=[1,154],Zt=[1,138],Nt=[1,139],Rt=[1,135],St=[1,146],Wt=[1,147],Vt=[1,148],Qt=[1,149],yt=[1,150],Tt=[1,155],Mt=[1,156],gt=[1,141],Et=[1,144],Gt=[1,140],Bt=[1,137],Jt=[20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],kt=[1,159],Yt=[20,21,22,23,26,47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],Ct=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,60,61,63,65,66,68,70,74,75,79,80,81,82,83,84,85,88,98,99,102,104,105,106,107,115,116,117,118,119,120],Xt=[12,21,22,24],It=[22,99],Dt=[1,242],ft=[1,237],Lt=[1,238],wt=[1,246],xt=[1,243],zt=[1,240],vt=[1,239],Ot=[1,241],_t=[1,244],jt=[1,245],Kt=[1,247],Pt=[1,265],At=[20,21,23,99],Ht=[20,21,22,23,59,60,79,95,98,99,102,103,104,105,106],qt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,link:44,node:45,vertex:46,AMP:47,STYLE_SEPARATOR:48,idString:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,ALPHA:59,COLON:60,PIPE:61,CYLINDERSTART:62,CYLINDEREND:63,DIAMOND_START:64,DIAMOND_STOP:65,TAGEND:66,TRAPSTART:67,TRAPEND:68,INVTRAPSTART:69,INVTRAPEND:70,linkStatement:71,arrowText:72,TESTSTR:73,START_LINK:74,LINK:75,textToken:76,STR:77,keywords:78,STYLE:79,LINKSTYLE:80,CLASSDEF:81,CLASS:82,CLICK:83,DOWN:84,UP:85,textNoTags:86,textNoTagsToken:87,DEFAULT:88,stylesOpt:89,alphaNum:90,CALLBACKNAME:91,CALLBACKARGS:92,HREF:93,LINK_TARGET:94,HEX:95,numList:96,INTERPOLATE:97,NUM:98,COMMA:99,style:100,styleComponent:101,MINUS:102,UNIT:103,BRKT:104,DOT:105,PCT:106,TAGSTART:107,alphaNumToken:108,idStringToken:109,alphaNumStatement:110,direction_tb:111,direction_bt:112,direction_rl:113,direction_lr:114,PUNCTUATION:115,UNICODE_TEXT:116,PLUS:117,EQUALS:118,MULT:119,UNDERSCORE:120,graphCodeTokens:121,ARROW_CROSS:122,ARROW_POINT:123,ARROW_CIRCLE:124,ARROW_OPEN:125,QUOTE:126,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",47:"AMP",48:"STYLE_SEPARATOR",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"ALPHA",60:"COLON",61:"PIPE",62:"CYLINDERSTART",63:"CYLINDEREND",64:"DIAMOND_START",65:"DIAMOND_STOP",66:"TAGEND",67:"TRAPSTART",68:"TRAPEND",69:"INVTRAPSTART",70:"INVTRAPEND",73:"TESTSTR",74:"START_LINK",75:"LINK",77:"STR",79:"STYLE",80:"LINKSTYLE",81:"CLASSDEF",82:"CLASS",83:"CLICK",84:"DOWN",85:"UP",88:"DEFAULT",91:"CALLBACKNAME",92:"CALLBACKARGS",93:"HREF",94:"LINK_TARGET",95:"HEX",97:"INTERPOLATE",98:"NUM",99:"COMMA",102:"MINUS",103:"UNIT",104:"BRKT",105:"DOT",106:"PCT",107:"TAGSTART",111:"direction_tb",112:"direction_bt",113:"direction_rl",114:"direction_lr",115:"PUNCTUATION",116:"UNICODE_TEXT",117:"PLUS",118:"EQUALS",119:"MULT",120:"UNDERSCORE",122:"ARROW_CROSS",123:"ARROW_POINT",124:"ARROW_CIRCLE",125:"ARROW_OPEN",126:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[71,1],[72,3],[39,1],[39,2],[39,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[86,1],[86,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[96,1],[96,3],[89,1],[89,3],[100,1],[100,2],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[87,1],[87,1],[87,1],[87,1],[49,1],[49,2],[90,1],[90,2],[110,1],[110,1],[110,1],[110,1],[43,1],[43,1],[43,1],[43,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 5:l.parseDirective("%%{","open_directive");break;case 6:l.parseDirective(a[r],"type_directive");break;case 7:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 8:l.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:a[r]!==[]&&a[r-1].push(a[r]),this.$=a[r-1];break;case 12:case 78:case 80:case 92:case 148:case 150:case 151:case 74:case 146:this.$=a[r];break;case 19:l.setDirection("TB"),this.$="TB";break;case 20:l.setDirection(a[r-1]),this.$=a[r-1];break;case 35:this.$=a[r-1].nodes;break;case 41:this.$=l.addSubGraph(a[r-6],a[r-1],a[r-4]);break;case 42:this.$=l.addSubGraph(a[r-3],a[r-1],a[r-3]);break;case 43:this.$=l.addSubGraph(void 0,a[r-1],void 0);break;case 48:l.addLink(a[r-2].stmt,a[r],a[r-1]),this.$={stmt:a[r],nodes:a[r].concat(a[r-2].nodes)};break;case 49:l.addLink(a[r-3].stmt,a[r-1],a[r-2]),this.$={stmt:a[r-1],nodes:a[r-1].concat(a[r-3].nodes)};break;case 50:this.$={stmt:a[r-1],nodes:a[r-1]};break;case 51:this.$={stmt:a[r],nodes:a[r]};break;case 52:case 119:case 121:this.$=[a[r]];break;case 53:this.$=a[r-4].concat(a[r]);break;case 54:this.$=[a[r-2]],l.setClass(a[r-2],a[r]);break;case 55:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"square");break;case 56:this.$=a[r-5],l.addVertex(a[r-5],a[r-2],"circle");break;case 57:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"ellipse");break;case 58:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"stadium");break;case 59:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"subroutine");break;case 60:this.$=a[r-7],l.addVertex(a[r-7],a[r-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[r-5],a[r-3]]]));break;case 61:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"cylinder");break;case 62:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"round");break;case 63:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"diamond");break;case 64:this.$=a[r-5],l.addVertex(a[r-5],a[r-2],"hexagon");break;case 65:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"odd");break;case 66:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"trapezoid");break;case 67:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"inv_trapezoid");break;case 68:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"lean_right");break;case 69:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"lean_left");break;case 70:this.$=a[r],l.addVertex(a[r]);break;case 71:a[r-1].text=a[r],this.$=a[r-1];break;case 72:case 73:a[r-2].text=a[r-1],this.$=a[r-2];break;case 75:var o=l.destructLink(a[r],a[r-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:a[r-1]};break;case 76:o=l.destructLink(a[r]),this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 77:this.$=a[r-1];break;case 79:case 93:case 149:case 147:this.$=a[r-1]+""+a[r];break;case 94:case 95:this.$=a[r-4],l.addClass(a[r-2],a[r]);break;case 96:this.$=a[r-4],l.setClass(a[r-2],a[r]);break;case 97:case 105:this.$=a[r-1],l.setClickEvent(a[r-1],a[r]);break;case 98:case 106:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-2]),l.setTooltip(a[r-3],a[r]);break;case 99:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 100:this.$=a[r-4],l.setClickEvent(a[r-4],a[r-3],a[r-2]),l.setTooltip(a[r-4],a[r]);break;case 101:case 107:this.$=a[r-1],l.setLink(a[r-1],a[r]);break;case 102:case 108:this.$=a[r-3],l.setLink(a[r-3],a[r-2]),l.setTooltip(a[r-3],a[r]);break;case 103:case 109:this.$=a[r-3],l.setLink(a[r-3],a[r-2],a[r]);break;case 104:case 110:this.$=a[r-5],l.setLink(a[r-5],a[r-4],a[r]),l.setTooltip(a[r-5],a[r-2]);break;case 111:this.$=a[r-4],l.addVertex(a[r-2],void 0,void 0,a[r]);break;case 112:case 114:this.$=a[r-4],l.updateLink(a[r-2],a[r]);break;case 113:this.$=a[r-4],l.updateLink([a[r-2]],a[r]);break;case 115:this.$=a[r-8],l.updateLinkInterpolate([a[r-6]],a[r-2]),l.updateLink([a[r-6]],a[r]);break;case 116:this.$=a[r-8],l.updateLinkInterpolate(a[r-6],a[r-2]),l.updateLink(a[r-6],a[r]);break;case 117:this.$=a[r-6],l.updateLinkInterpolate([a[r-4]],a[r]);break;case 118:this.$=a[r-6],l.updateLinkInterpolate(a[r-4],a[r]);break;case 120:case 122:a[r-2].push(a[r]),this.$=a[r-2];break;case 124:this.$=a[r-1]+a[r];break;case 152:this.$="v";break;case 153:this.$="-";break;case 154:this.$={stmt:"dir",value:"TB"};break;case 155:this.$={stmt:"dir",value:"BT"};break;case 156:this.$={stmt:"dir",value:"RL"};break;case 157:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:l,24:i},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:l,24:i},t(a,s,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:l,24:i},{16:15,21:n,22:l,24:i},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{8:61,10:[1,62],15:I},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,65],21:[1,66],22:D,27:64,30:67},t(f,[2,11]),t(f,[2,12]),t(f,[2,13]),t(f,[2,14]),t(f,[2,15]),t(f,[2,16]),{9:69,20:L,21:w,23:x,44:70,71:74,74:[1,75],75:[1,76]},{9:77,20:L,21:w,23:x},{9:78,20:L,21:w,23:x},{9:79,20:L,21:w,23:x},{9:80,20:L,21:w,23:x},{9:81,20:L,21:w,23:x},{9:83,20:L,21:w,22:[1,82],23:x},t(f,[2,44]),t(z,[2,51],{30:84,22:D}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:v,47:O,59:_,60:j,77:[1,92],84:K,90:91,91:[1,89],93:[1,90],98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(f,[2,154]),t(f,[2,155]),t(f,[2,156]),t(f,[2,157]),t(st,[2,52],{48:[1,111]}),t(rt,[2,70],{109:123,40:[1,112],47:h,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],59:m,60:U,62:[1,118],64:[1,119],66:[1,120],67:[1,121],69:[1,122],84:R,88:S,98:W,99:V,102:Q,104:y,105:T,115:B,116:J,117:k,118:Y,119:C,120:X}),t(ot,[2,146]),t(ot,[2,171]),t(ot,[2,172]),t(ot,[2,173]),t(ot,[2,174]),t(ot,[2,175]),t(ot,[2,176]),t(ot,[2,177]),t(ot,[2,178]),t(ot,[2,179]),t(ot,[2,180]),t(ot,[2,181]),t(ot,[2,182]),t(ot,[2,183]),t(ot,[2,184]),t(ot,[2,185]),t(ot,[2,186]),{9:124,20:L,21:w,23:x},{11:125,14:[1,126]},t(ct,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,127]},t(dt,[2,34],{30:128,22:D}),t(f,[2,35]),{45:129,46:42,47:h,49:43,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},t(ut,[2,45]),t(ut,[2,46]),t(ut,[2,47]),t(ht,[2,74],{72:130,61:[1,132],73:[1,131]}),{22:mt,24:Ut,26:pt,38:Ft,39:133,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t([47,59,60,61,73,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,76]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),t(f,[2,39]),t(f,[2,40]),{22:mt,24:Ut,26:pt,38:Ft,39:157,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Jt,s,{17:158}),t(z,[2,50],{47:kt}),{26:v,47:O,59:_,60:j,84:K,90:160,95:[1,161],98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{88:[1,162],96:163,98:[1,164]},{26:v,47:O,59:_,60:j,84:K,88:[1,165],90:166,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{26:v,47:O,59:_,60:j,84:K,90:167,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,97],{22:[1,168],92:[1,169]}),t(ct,[2,101],{22:[1,170]}),t(ct,[2,105],{108:95,110:172,22:[1,171],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,107],{22:[1,173]}),t(Yt,[2,148]),t(Yt,[2,150]),t(Yt,[2,151]),t(Yt,[2,152]),t(Yt,[2,153]),t(Ct,[2,158]),t(Ct,[2,159]),t(Ct,[2,160]),t(Ct,[2,161]),t(Ct,[2,162]),t(Ct,[2,163]),t(Ct,[2,164]),t(Ct,[2,165]),t(Ct,[2,166]),t(Ct,[2,167]),t(Ct,[2,168]),t(Ct,[2,169]),t(Ct,[2,170]),{47:h,49:174,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},{22:mt,24:Ut,26:pt,38:Ft,39:175,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:177,42:bt,47:O,50:[1,176],59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:178,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:179,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:180,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{59:[1,181]},{22:mt,24:Ut,26:pt,38:Ft,39:182,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:183,42:bt,47:O,59:_,60:j,64:[1,184],66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:185,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:186,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:187,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ot,[2,147]),t(Xt,[2,3]),{8:188,15:I},{15:[2,7]},t(a,[2,28]),t(dt,[2,33]),t(z,[2,48],{30:189,22:D}),t(ht,[2,71],{22:[1,190]}),{22:[1,191]},{22:mt,24:Ut,26:pt,38:Ft,39:192,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,75:[1,193],76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Ct,[2,78]),t(Ct,[2,80]),t(Ct,[2,136]),t(Ct,[2,137]),t(Ct,[2,138]),t(Ct,[2,139]),t(Ct,[2,140]),t(Ct,[2,141]),t(Ct,[2,142]),t(Ct,[2,143]),t(Ct,[2,144]),t(Ct,[2,145]),t(Ct,[2,81]),t(Ct,[2,82]),t(Ct,[2,83]),t(Ct,[2,84]),t(Ct,[2,85]),t(Ct,[2,86]),t(Ct,[2,87]),t(Ct,[2,88]),t(Ct,[2,89]),t(Ct,[2,90]),t(Ct,[2,91]),{9:196,20:L,21:w,22:mt,23:x,24:Ut,26:pt,38:Ft,40:[1,195],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,197],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{22:D,30:198},{22:[1,199],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:[1,200]},{22:[1,201]},{22:[1,202],99:[1,203]},t(It,[2,119]),{22:[1,204]},{22:[1,205],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:[1,206],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{77:[1,207]},t(ct,[2,99],{22:[1,208]}),{77:[1,209],94:[1,210]},{77:[1,211]},t(Yt,[2,149]),{77:[1,212],94:[1,213]},t(st,[2,54],{109:123,47:h,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,115:B,116:J,117:k,118:Y,119:C,120:X}),{22:mt,24:Ut,26:pt,38:Ft,41:[1,214],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:215,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,51:[1,216],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,53:[1,217],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,55:[1,218],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,57:[1,219],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{60:[1,220]},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,63:[1,221],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,65:[1,222],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:223,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,41:[1,224],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,68:[1,225],70:[1,226],74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,68:[1,228],70:[1,227],74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{9:229,20:L,21:w,23:x},t(z,[2,49],{47:kt}),t(ht,[2,73]),t(ht,[2,72]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,61:[1,230],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ht,[2,75]),t(Ct,[2,79]),{22:mt,24:Ut,26:pt,38:Ft,39:231,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Jt,s,{17:232}),t(f,[2,43]),{46:233,47:h,49:43,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},{22:Dt,59:ft,60:Lt,79:wt,89:234,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:248,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:249,95:xt,97:[1,250],98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:251,95:xt,97:[1,252],98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{98:[1,253]},{22:Dt,59:ft,60:Lt,79:wt,89:254,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:255,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{26:v,47:O,59:_,60:j,84:K,90:256,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,98]),{77:[1,257]},t(ct,[2,102],{22:[1,258]}),t(ct,[2,103]),t(ct,[2,106]),t(ct,[2,108],{22:[1,259]}),t(ct,[2,109]),t(rt,[2,55]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,51:[1,260],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,62]),t(rt,[2,57]),t(rt,[2,58]),t(rt,[2,59]),{59:[1,261]},t(rt,[2,61]),t(rt,[2,63]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,65:[1,262],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,65]),t(rt,[2,66]),t(rt,[2,68]),t(rt,[2,67]),t(rt,[2,69]),t(Xt,[2,4]),t([22,47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,77]),{22:mt,24:Ut,26:pt,38:Ft,41:[1,263],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,264],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},t(st,[2,53]),t(ct,[2,111],{99:Pt}),t(At,[2,121],{101:266,22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,102:vt,103:Ot,104:_t,105:jt,106:Kt}),t(Ht,[2,123]),t(Ht,[2,125]),t(Ht,[2,126]),t(Ht,[2,127]),t(Ht,[2,128]),t(Ht,[2,129]),t(Ht,[2,130]),t(Ht,[2,131]),t(Ht,[2,132]),t(Ht,[2,133]),t(Ht,[2,134]),t(Ht,[2,135]),t(ct,[2,112],{99:Pt}),t(ct,[2,113],{99:Pt}),{22:[1,267]},t(ct,[2,114],{99:Pt}),{22:[1,268]},t(It,[2,120]),t(ct,[2,94],{99:Pt}),t(ct,[2,95],{99:Pt}),t(ct,[2,96],{108:95,110:172,26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,100]),{94:[1,269]},{94:[1,270]},{51:[1,271]},{61:[1,272]},{65:[1,273]},{9:274,20:L,21:w,23:x},t(f,[2,42]),{22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,100:275,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},t(Ht,[2,124]),{26:v,47:O,59:_,60:j,84:K,90:276,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{26:v,47:O,59:_,60:j,84:K,90:277,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,104]),t(ct,[2,110]),t(rt,[2,56]),{22:mt,24:Ut,26:pt,38:Ft,39:278,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,64]),t(Jt,s,{17:279}),t(At,[2,122],{101:266,22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,102:vt,103:Ot,104:_t,105:jt,106:Kt}),t(ct,[2,117],{108:95,110:172,22:[1,280],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,118],{108:95,110:172,22:[1,281],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),{22:mt,24:Ut,26:pt,38:Ft,41:[1,282],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,283],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{22:Dt,59:ft,60:Lt,79:wt,89:284,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:285,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},t(rt,[2,60]),t(f,[2,41]),t(ct,[2,115],{99:Pt}),t(ct,[2,116],{99:Pt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],126:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},$t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:case 17:case 20:case 23:case 26:this.popState();break;case 9:return"STR";case 10:return 79;case 11:return 88;case 12:return 80;case 13:return 97;case 14:return 81;case 15:return 82;case 16:this.begin("href");break;case 18:return 93;case 19:this.begin("callbackname");break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 91;case 24:return 92;case 25:this.begin("click");break;case 27:return 83;case 28:case 29:return t.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 94;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 111;case 48:return 112;case 49:return 113;case 50:return 114;case 51:return 98;case 52:return 104;case 53:return 48;case 54:return 60;case 55:return 47;case 56:return 20;case 57:return 99;case 58:return 119;case 59:case 60:case 61:return 75;case 62:case 63:case 64:return 74;case 65:return 52;case 66:return 53;case 67:return 54;case 68:return 55;case 69:return 56;case 70:return 57;case 71:return 58;case 72:return 62;case 73:return 63;case 74:return 102;case 75:return 105;case 76:return 120;case 77:return 117;case 78:return 106;case 79:case 80:return 118;case 81:return 107;case 82:return 66;case 83:return 85;case 84:return"SEP";case 85:return 84;case 86:return 59;case 87:return 68;case 88:return 67;case 89:return 70;case 90:return 69;case 91:return 115;case 92:return 116;case 93:return 61;case 94:return 50;case 95:return 51;case 96:return 40;case 97:return 41;case 98:return 64;case 99:return 65;case 100:return 126;case 101:return 21;case 102:return 22;case 103:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],inclusive:!0}}};function te(){this.yy={}}return qt.lexer=$t,te.prototype=qt,qt.Parser=te,new te}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(5354).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9959:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,3],n=[1,5],l=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],i=[1,15],a=[1,16],s=[1,17],r=[1,18],o=[1,19],c=[1,20],d=[1,21],u=[1,22],h=[1,23],m=[1,25],U=[1,27],p=[1,30],F=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],b={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,excludes:16,includes:17,todayMarker:18,title:19,section:20,clickStatement:21,taskTxt:22,taskData:23,openDirective:24,typeDirective:25,closeDirective:26,":":27,argDirective:28,click:29,callbackname:30,callbackargs:31,href:32,clickStatementDebug:33,open_directive:34,type_directive:35,arg_directive:36,close_directive:37,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"excludes",17:"includes",18:"todayMarker",19:"title",20:"section",22:"taskTxt",23:"taskData",27:":",29:"click",30:"callbackname",31:"callbackargs",32:"href",34:"open_directive",35:"type_directive",36:"arg_directive",37:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 2:return a[r-1];case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:this.$=a[r];break;case 9:l.setDateFormat(a[r].substr(11)),this.$=a[r].substr(11);break;case 10:l.enableInclusiveEndDates(),this.$=a[r].substr(18);break;case 11:l.TopAxis(),this.$=a[r].substr(8);break;case 12:l.setAxisFormat(a[r].substr(11)),this.$=a[r].substr(11);break;case 13:l.setExcludes(a[r].substr(9)),this.$=a[r].substr(9);break;case 14:l.setIncludes(a[r].substr(9)),this.$=a[r].substr(9);break;case 15:l.setTodayMarker(a[r].substr(12)),this.$=a[r].substr(12);break;case 16:l.setTitle(a[r].substr(6)),this.$=a[r].substr(6);break;case 17:l.addSection(a[r].substr(8)),this.$=a[r].substr(8);break;case 19:l.addTask(a[r-1],a[r]),this.$="task";break;case 23:this.$=a[r-1],l.setClickEvent(a[r-1],a[r],null);break;case 24:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 25:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],null),l.setLink(a[r-2],a[r]);break;case 26:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-2],a[r-1]),l.setLink(a[r-3],a[r]);break;case 27:this.$=a[r-2],l.setClickEvent(a[r-2],a[r],null),l.setLink(a[r-2],a[r-1]);break;case 28:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-1],a[r]),l.setLink(a[r-3],a[r-2]);break;case 29:this.$=a[r-1],l.setLink(a[r-1],a[r]);break;case 30:case 36:this.$=a[r-1]+" "+a[r];break;case 31:case 32:case 34:this.$=a[r-2]+" "+a[r-1]+" "+a[r];break;case 33:case 35:this.$=a[r-3]+" "+a[r-2]+" "+a[r-1]+" "+a[r];break;case 37:l.parseDirective("%%{","open_directive");break;case 38:l.parseDirective(a[r],"type_directive");break;case 39:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 40:l.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,24:4,34:n},{1:[3]},{3:6,4:2,5:e,24:4,34:n},t(l,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:s,15:r,16:o,17:c,18:d,19:u,20:h,21:24,22:m,24:4,29:U,34:n},{26:28,27:[1,29],37:p},t([27,37],[2,38]),t(l,[2,8],{1:[2,2]}),t(l,[2,4]),{4:26,10:31,12:i,13:a,14:s,15:r,16:o,17:c,18:d,19:u,20:h,21:24,22:m,24:4,29:U,34:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,9]),t(l,[2,10]),t(l,[2,11]),t(l,[2,12]),t(l,[2,13]),t(l,[2,14]),t(l,[2,15]),t(l,[2,16]),t(l,[2,17]),t(l,[2,18]),{23:[1,32]},t(l,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},t(l,[2,5]),t(l,[2,19]),t(l,[2,23],{31:[1,38],32:[1,39]}),t(l,[2,29],{30:[1,40]}),t(F,[2,21]),{26:41,37:p},{37:[2,39]},t(l,[2,24],{32:[1,42]}),t(l,[2,25]),t(l,[2,27],{31:[1,43]}),{11:[1,44]},t(l,[2,26]),t(l,[2,28]),t(F,[2,22])],defaultActions:{5:[2,37],6:[2,1],30:[2,40],37:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},Z={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),34;case 1:return this.begin("type_directive"),35;case 2:return this.popState(),this.begin("arg_directive"),27;case 3:return this.popState(),this.popState(),37;case 4:return 36;case 5:case 6:case 7:case 9:case 10:case 11:break;case 8:return 11;case 12:this.begin("href");break;case 13:case 16:case 19:case 22:this.popState();break;case 14:return 32;case 15:this.begin("callbackname");break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 30;case 20:return 31;case 21:this.begin("click");break;case 23:return 29;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 17;case 30:return 16;case 31:return 18;case 32:return"date";case 33:return 19;case 34:return 20;case 35:return 22;case 36:return 23;case 37:return 27;case 38:return 7;case 39:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],inclusive:!0}}};function N(){this.yy={}}return b.lexer=Z,N.prototype=b,b.Parser=N,new N}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(6878).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},2553:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[2,3],n=[1,7],l=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],s=[1,32],r={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:return a[r-1];case 2:return l.setDirection(a[r-3]),a[r-1];case 4:l.setOptions(a[r-1]),this.$=a[r];break;case 5:a[r-1]+=a[r],this.$=a[r-1];break;case 7:this.$=[];break;case 8:a[r-1].push(a[r]),this.$=a[r-1];break;case 9:this.$=a[r-1];break;case 11:l.commit(a[r]);break;case 12:l.branch(a[r]);break;case 13:l.checkout(a[r]);break;case 14:l.merge(a[r]);break;case 15:l.reset(a[r]);break;case 16:this.$="";break;case 17:this.$=a[r];break;case 18:this.$=a[r-1]+":"+a[r];break;case 19:this.$=a[r-1]+":"+l.count,l.count=0;break;case 20:l.count=0;break;case 21:l.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(l,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(l,[2,8]),{12:[1,22]},t(l,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(l,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:s},{12:a,25:33,26:s},{12:[2,18]},{12:a,25:34,26:s},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},o={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:case 18:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return r.lexer=o,c.prototype=r,r.Parser=c,new c}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8183).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6765:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,l,i,a,s){switch(a.length,i){case 1:return l;case 4:break;case 6:l.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=l,i.prototype=n,n.Parser=i,new i}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(1428).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},7062:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,4],n=[1,5],l=[1,6],i=[1,7],a=[1,9],s=[1,11,13,20,21,22,23],r=[2,5],o=[1,6,11,13,20,21,22,23],c=[20,21,22],d=[2,8],u=[1,18],h=[1,19],m=[1,24],U=[6,20,21,22,23],p={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,openDirective:15,typeDirective:16,closeDirective:17,":":18,argDirective:19,NEWLINE:20,";":21,EOF:22,open_directive:23,type_directive:24,arg_directive:25,close_directive:26,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",18:":",20:"NEWLINE",21:";",22:"EOF",23:"open_directive",24:"type_directive",25:"arg_directive",26:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:l.setShowData(!0);break;case 7:this.$=a[r-1];break;case 9:l.addSection(a[r-1],l.cleanupValue(a[r]));break;case 10:this.$=a[r].trim(),l.setTitle(this.$);break;case 17:l.parseDirective("%%{","open_directive");break;case 18:l.parseDirective(a[r],"type_directive");break;case 19:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 20:l.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},{1:[3]},{3:10,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},{3:11,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},t(s,r,{7:12,8:[1,13]}),t(o,[2,14]),t(o,[2,15]),t(o,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},t(c,d,{15:8,9:16,10:17,5:20,1:[2,3],11:u,13:h,23:a}),t(s,r,{7:21}),{17:22,18:[1,23],26:m},t([18,26],[2,18]),t(s,[2,6]),{4:25,20:n,21:l,22:i},{12:[1,26]},{14:[1,27]},t(c,[2,11]),t(c,d,{15:8,9:16,10:17,5:20,1:[2,4],11:u,13:h,23:a}),t(U,[2,12]),{19:28,25:[1,29]},t(U,[2,20]),t(s,[2,7]),t(c,[2,9]),t(c,[2,10]),{17:30,26:m},{26:[2,19]},t(U,[2,13])],defaultActions:{9:[2,17],10:[2,1],11:[2,2],29:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},F={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),23;case 1:return this.begin("type_directive"),24;case 2:return this.popState(),this.begin("arg_directive"),18;case 3:return this.popState(),this.popState(),26;case 4:return 25;case 5:case 6:case 8:case 9:break;case 7:return 20;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return 8;case 17:return"value";case 18:return 22}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17,18],inclusive:!0}}};function b(){this.yy={}}return p.lexer=F,b.prototype=p,p.Parser=b,new b}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(4551).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3176:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,3],n=[1,5],l=[1,17],i=[2,10],a=[1,21],s=[1,22],r=[1,23],o=[1,24],c=[1,25],d=[1,26],u=[1,19],h=[1,27],m=[1,28],U=[1,31],p=[66,67],F=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],b=[5,6,8,14,35,36,37,38,39,40,48,66,67],Z=[1,51],N=[1,52],R=[1,53],S=[1,54],W=[1,55],V=[1,56],Q=[1,57],y=[57,58],T=[1,69],M=[1,65],g=[1,66],E=[1,67],G=[1,68],B=[1,70],J=[1,74],k=[1,75],Y=[1,72],C=[1,73],X=[5,8,14,35,36,37,38,39,40,48,66,67],I={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,open_directive:14,type_directive:15,arg_directive:16,close_directive:17,requirementDef:18,elementDef:19,relationshipDef:20,requirementType:21,requirementName:22,STRUCT_START:23,requirementBody:24,ID:25,COLONSEP:26,id:27,TEXT:28,text:29,RISK:30,riskLevel:31,VERIFYMTHD:32,verifyType:33,STRUCT_STOP:34,REQUIREMENT:35,FUNCTIONAL_REQUIREMENT:36,INTERFACE_REQUIREMENT:37,PERFORMANCE_REQUIREMENT:38,PHYSICAL_REQUIREMENT:39,DESIGN_CONSTRAINT:40,LOW_RISK:41,MED_RISK:42,HIGH_RISK:43,VERIFY_ANALYSIS:44,VERIFY_DEMONSTRATION:45,VERIFY_INSPECTION:46,VERIFY_TEST:47,ELEMENT:48,elementName:49,elementBody:50,TYPE:51,type:52,DOCREF:53,ref:54,END_ARROW_L:55,relationship:56,LINE:57,END_ARROW_R:58,CONTAINS:59,COPIES:60,DERIVES:61,SATISFIES:62,VERIFIES:63,REFINES:64,TRACES:65,unqString:66,qString:67,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"open_directive",15:"type_directive",16:"arg_directive",17:"close_directive",23:"STRUCT_START",25:"ID",26:"COLONSEP",28:"TEXT",30:"RISK",32:"VERIFYMTHD",34:"STRUCT_STOP",35:"REQUIREMENT",36:"FUNCTIONAL_REQUIREMENT",37:"INTERFACE_REQUIREMENT",38:"PERFORMANCE_REQUIREMENT",39:"PHYSICAL_REQUIREMENT",40:"DESIGN_CONSTRAINT",41:"LOW_RISK",42:"MED_RISK",43:"HIGH_RISK",44:"VERIFY_ANALYSIS",45:"VERIFY_DEMONSTRATION",46:"VERIFY_INSPECTION",47:"VERIFY_TEST",48:"ELEMENT",51:"TYPE",53:"DOCREF",55:"END_ARROW_L",57:"LINE",58:"END_ARROW_R",59:"CONTAINS",60:"COPIES",61:"DERIVES",62:"SATISFIES",63:"VERIFIES",64:"REFINES",65:"TRACES",66:"unqString",67:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 6:l.parseDirective("%%{","open_directive");break;case 7:l.parseDirective(a[r],"type_directive");break;case 8:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 9:l.parseDirective("}%%","close_directive","pie");break;case 10:this.$=[];break;case 16:l.addRequirement(a[r-3],a[r-4]);break;case 17:l.setNewReqId(a[r-2]);break;case 18:l.setNewReqText(a[r-2]);break;case 19:l.setNewReqRisk(a[r-2]);break;case 20:l.setNewReqVerifyMethod(a[r-2]);break;case 23:this.$=l.RequirementType.REQUIREMENT;break;case 24:this.$=l.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 25:this.$=l.RequirementType.INTERFACE_REQUIREMENT;break;case 26:this.$=l.RequirementType.PERFORMANCE_REQUIREMENT;break;case 27:this.$=l.RequirementType.PHYSICAL_REQUIREMENT;break;case 28:this.$=l.RequirementType.DESIGN_CONSTRAINT;break;case 29:this.$=l.RiskLevel.LOW_RISK;break;case 30:this.$=l.RiskLevel.MED_RISK;break;case 31:this.$=l.RiskLevel.HIGH_RISK;break;case 32:this.$=l.VerifyType.VERIFY_ANALYSIS;break;case 33:this.$=l.VerifyType.VERIFY_DEMONSTRATION;break;case 34:this.$=l.VerifyType.VERIFY_INSPECTION;break;case 35:this.$=l.VerifyType.VERIFY_TEST;break;case 36:l.addElement(a[r-3]);break;case 37:l.setNewElementType(a[r-2]);break;case 38:l.setNewElementDocRef(a[r-2]);break;case 41:l.addRelationship(a[r-2],a[r],a[r-4]);break;case 42:l.addRelationship(a[r-2],a[r-4],a[r]);break;case 43:this.$=l.Relationships.CONTAINS;break;case 44:this.$=l.Relationships.COPIES;break;case 45:this.$=l.Relationships.DERIVES;break;case 46:this.$=l.Relationships.SATISFIES;break;case 47:this.$=l.Relationships.VERIFIES;break;case 48:this.$=l.Relationships.REFINES;break;case 49:this.$=l.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n},{1:[3]},{3:7,4:2,5:[1,6],6:e,9:4,14:n},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:e,9:4,14:n},{1:[2,2]},{4:16,5:l,7:12,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{11:29,12:[1,30],17:U},t([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:l,7:33,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:34,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:35,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:36,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:37,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},t(p,[2,23]),t(p,[2,24]),t(p,[2,25]),t(p,[2,26]),t(p,[2,27]),t(p,[2,28]),t(F,[2,52]),t(F,[2,53]),t(b,[2,4]),{13:46,16:[1,47]},t(b,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:Z,60:N,61:R,62:S,63:W,64:V,65:Q},{56:58,59:Z,60:N,61:R,62:S,63:W,64:V,65:Q},{11:59,17:U},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},t(y,[2,43]),t(y,[2,44]),t(y,[2,45]),t(y,[2,46]),t(y,[2,47]),t(y,[2,48]),t(y,[2,49]),{58:[1,63]},t(b,[2,5]),{5:T,24:64,25:M,28:g,30:E,32:G,34:B},{5:J,34:k,50:71,51:Y,53:C},{27:76,66:h,67:m},{27:77,66:h,67:m},t(X,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:T,24:82,25:M,28:g,30:E,32:G,34:B},t(X,[2,22]),t(X,[2,36]),{26:[1,83]},{26:[1,84]},{5:J,34:k,50:85,51:Y,53:C},t(X,[2,40]),t(X,[2,41]),t(X,[2,42]),{27:86,66:h,67:m},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},t(X,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},t(X,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:T,24:111,25:M,28:g,30:E,32:G,34:B},{5:T,24:112,25:M,28:g,30:E,32:G,34:B},{5:T,24:113,25:M,28:g,30:E,32:G,34:B},{5:T,24:114,25:M,28:g,30:E,32:G,34:B},{5:J,34:k,50:115,51:Y,53:C},{5:J,34:k,50:116,51:Y,53:C},t(X,[2,17]),t(X,[2,18]),t(X,[2,19]),t(X,[2,20]),t(X,[2,37]),t(X,[2,38])],defaultActions:{5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},D={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),14;case 1:return this.begin("type_directive"),15;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),17;case 4:return 16;case 5:return 5;case 6:case 7:case 8:break;case 9:return 8;case 10:return 6;case 11:return 23;case 12:return 34;case 13:return 26;case 14:return 25;case 15:return 28;case 16:return 30;case 17:return 32;case 18:return 35;case 19:return 36;case 20:return 37;case 21:return 38;case 22:return 39;case 23:return 40;case 24:return 41;case 25:return 42;case 26:return 43;case 27:return 44;case 28:return 45;case 29:return 46;case 30:return 47;case 31:return 48;case 32:return 59;case 33:return 60;case 34:return 61;case 35:return 62;case 36:return 63;case 37:return 64;case 38:return 65;case 39:return 51;case 40:return 53;case 41:return 55;case 42:return 58;case 43:return 57;case 44:this.begin("string");break;case 45:this.popState();break;case 46:return"qString";case 47:return e.yytext=e.yytext.trim(),66}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[45,46],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],inclusive:!0}}};function f(){this.yy={}}return I.lexer=D,f.prototype=I,I.Parser=f,new f}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8800).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6876:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,3],l=[1,5],i=[1,7],a=[2,5],s=[1,15],r=[1,17],o=[1,18],c=[1,19],d=[1,21],u=[1,22],h=[1,23],m=[1,29],U=[1,30],p=[1,31],F=[1,32],b=[1,33],Z=[1,34],N=[1,37],R=[1,38],S=[1,39],W=[1,40],V=[1,41],Q=[1,42],y=[1,45],T=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],M=[1,58],g=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],E=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],G=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],B=[55,56,57],J=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],k={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,":":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,participant_actor:20,signal:21,autonumber:22,activate:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,text2:31,loop:32,end:33,rect:34,opt:35,alt:36,else_sections:37,par:38,par_sections:39,and:40,else:41,note:42,placement:43,over:44,actor_pair:45,links:46,link:47,properties:48,details:49,spaceList:50,",":51,left_of:52,right_of:53,signaltype:54,"+":55,"-":56,ACTOR:57,SOLID_OPEN_ARROW:58,DOTTED_OPEN_ARROW:59,SOLID_ARROW:60,DOTTED_ARROW:61,SOLID_CROSS:62,DOTTED_CROSS:63,SOLID_POINT:64,DOTTED_POINT:65,TXT:66,open_directive:67,type_directive:68,arg_directive:69,close_directive:70,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",20:"participant_actor",22:"autonumber",23:"activate",24:"deactivate",30:"title",32:"loop",33:"end",34:"rect",35:"opt",36:"alt",38:"par",40:"and",41:"else",42:"note",44:"over",46:"links",47:"link",48:"properties",49:"details",51:",",52:"left_of",53:"right_of",55:"+",56:"-",57:"ACTOR",58:"SOLID_OPEN_ARROW",59:"DOTTED_OPEN_ARROW",60:"SOLID_ARROW",61:"DOTTED_ARROW",62:"SOLID_CROSS",63:"DOTTED_CROSS",64:"SOLID_POINT",65:"DOTTED_POINT",66:"TXT",67:"open_directive",68:"type_directive",69:"arg_directive",70:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:return l.apply(a[r]),a[r];case 5:case 9:this.$=[];break;case 6:a[r-1].push(a[r]),this.$=a[r-1];break;case 7:case 8:case 45:this.$=a[r];break;case 12:a[r-3].type="addParticipant",a[r-3].description=l.parseMessage(a[r-1]),this.$=a[r-3];break;case 13:a[r-1].type="addParticipant",this.$=a[r-1];break;case 14:a[r-3].type="addActor",a[r-3].description=l.parseMessage(a[r-1]),this.$=a[r-3];break;case 15:a[r-1].type="addActor",this.$=a[r-1];break;case 17:l.enableSequenceNumbers();break;case 18:this.$={type:"activeStart",signalType:l.LINETYPE.ACTIVE_START,actor:a[r-1]};break;case 19:this.$={type:"activeEnd",signalType:l.LINETYPE.ACTIVE_END,actor:a[r-1]};break;case 25:this.$=[{type:"setTitle",text:a[r-1]}];break;case 26:a[r-1].unshift({type:"loopStart",loopText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.LOOP_START}),a[r-1].push({type:"loopEnd",loopText:a[r-2],signalType:l.LINETYPE.LOOP_END}),this.$=a[r-1];break;case 27:a[r-1].unshift({type:"rectStart",color:l.parseMessage(a[r-2]),signalType:l.LINETYPE.RECT_START}),a[r-1].push({type:"rectEnd",color:l.parseMessage(a[r-2]),signalType:l.LINETYPE.RECT_END}),this.$=a[r-1];break;case 28:a[r-1].unshift({type:"optStart",optText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.OPT_START}),a[r-1].push({type:"optEnd",optText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.OPT_END}),this.$=a[r-1];break;case 29:a[r-1].unshift({type:"altStart",altText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.ALT_START}),a[r-1].push({type:"altEnd",signalType:l.LINETYPE.ALT_END}),this.$=a[r-1];break;case 30:a[r-1].unshift({type:"parStart",parText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.PAR_START}),a[r-1].push({type:"parEnd",signalType:l.LINETYPE.PAR_END}),this.$=a[r-1];break;case 33:this.$=a[r-3].concat([{type:"and",parText:l.parseMessage(a[r-1]),signalType:l.LINETYPE.PAR_AND},a[r]]);break;case 35:this.$=a[r-3].concat([{type:"else",altText:l.parseMessage(a[r-1]),signalType:l.LINETYPE.ALT_ELSE},a[r]]);break;case 36:this.$=[a[r-1],{type:"addNote",placement:a[r-2],actor:a[r-1].actor,text:a[r]}];break;case 37:a[r-2]=[].concat(a[r-1],a[r-1]).slice(0,2),a[r-2][0]=a[r-2][0].actor,a[r-2][1]=a[r-2][1].actor,this.$=[a[r-1],{type:"addNote",placement:l.PLACEMENT.OVER,actor:a[r-2].slice(0,2),text:a[r]}];break;case 38:this.$=[a[r-1],{type:"addLinks",actor:a[r-1].actor,text:a[r]}];break;case 39:this.$=[a[r-1],{type:"addALink",actor:a[r-1].actor,text:a[r]}];break;case 40:this.$=[a[r-1],{type:"addProperties",actor:a[r-1].actor,text:a[r]}];break;case 41:this.$=[a[r-1],{type:"addDetails",actor:a[r-1].actor,text:a[r]}];break;case 44:this.$=[a[r-2],a[r]];break;case 46:this.$=l.PLACEMENT.LEFTOF;break;case 47:this.$=l.PLACEMENT.RIGHTOF;break;case 48:this.$=[a[r-4],a[r-1],{type:"addMessage",from:a[r-4].actor,to:a[r-1].actor,signalType:a[r-3],msg:a[r]},{type:"activeStart",signalType:l.LINETYPE.ACTIVE_START,actor:a[r-1]}];break;case 49:this.$=[a[r-4],a[r-1],{type:"addMessage",from:a[r-4].actor,to:a[r-1].actor,signalType:a[r-3],msg:a[r]},{type:"activeEnd",signalType:l.LINETYPE.ACTIVE_END,actor:a[r-4]}];break;case 50:this.$=[a[r-3],a[r-1],{type:"addMessage",from:a[r-3].actor,to:a[r-1].actor,signalType:a[r-2],msg:a[r]}];break;case 51:this.$={type:"addParticipant",actor:a[r]};break;case 52:this.$=l.LINETYPE.SOLID_OPEN;break;case 53:this.$=l.LINETYPE.DOTTED_OPEN;break;case 54:this.$=l.LINETYPE.SOLID;break;case 55:this.$=l.LINETYPE.DOTTED;break;case 56:this.$=l.LINETYPE.SOLID_CROSS;break;case 57:this.$=l.LINETYPE.DOTTED_CROSS;break;case 58:this.$=l.LINETYPE.SOLID_POINT;break;case 59:this.$=l.LINETYPE.DOTTED_POINT;break;case 60:this.$=l.parseMessage(a[r].trim().substring(1));break;case 61:l.parseDirective("%%{","open_directive");break;case 62:l.parseDirective(a[r],"type_directive");break;case 63:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 64:l.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:l,11:6,67:i},{1:[3]},{3:8,4:e,5:n,6:4,7:l,11:6,67:i},{3:9,4:e,5:n,6:4,7:l,11:6,67:i},{3:10,4:e,5:n,6:4,7:l,11:6,67:i},t([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],a,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{13:43,14:[1,44],70:y},t([14,70],[2,62]),t(T,[2,6]),{6:35,10:46,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},t(T,[2,8]),t(T,[2,9]),{17:47,57:Q},{17:48,57:Q},{5:[1,49]},t(T,[2,17]),{17:50,57:Q},{17:51,57:Q},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:M},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},t(T,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:Q},{17:78,57:Q},{17:79,57:Q},{17:80,57:Q},t([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},t(T,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},t(T,[2,16]),{5:[1,88]},{5:[1,89]},t(T,[2,20]),t(T,[2,21]),t(T,[2,22]),t(T,[2,23]),t(T,[2,24]),{5:[1,90]},{5:[2,60]},t(g,a,{8:91}),t(g,a,{8:92}),t(g,a,{8:93}),t(E,a,{37:94,8:95}),t(G,a,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:Q},t(B,[2,52]),t(B,[2,53]),t(B,[2,54]),t(B,[2,55]),t(B,[2,56]),t(B,[2,57]),t(B,[2,58]),t(B,[2,59]),{17:101,57:Q},{17:103,45:102,57:Q},{57:[2,46]},{57:[2,47]},{31:104,66:M},{31:105,66:M},{31:106,66:M},{31:107,66:M},t(J,[2,10]),{13:108,70:y},{70:[2,63]},{19:[1,109]},t(T,[2,13]),{19:[1,110]},t(T,[2,15]),t(T,[2,18]),t(T,[2,19]),t(T,[2,25]),{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,111],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,112],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,113],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{33:[1,114]},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[2,34],34:p,35:F,36:b,38:Z,41:[1,115],42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{33:[1,116]},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[2,32],34:p,35:F,36:b,38:Z,40:[1,117],42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{17:118,57:Q},{17:119,57:Q},{31:120,66:M},{31:121,66:M},{31:122,66:M},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},t(T,[2,26]),t(T,[2,27]),t(T,[2,28]),t(T,[2,29]),{19:[1,127]},t(T,[2,30]),{19:[1,128]},{31:129,66:M},{31:130,66:M},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:Q},t(J,[2,11]),t(T,[2,12]),t(T,[2,14]),t(E,a,{8:95,37:132}),t(G,a,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],defaultActions:{7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},Y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),67;case 1:return this.begin("type_directive"),68;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),70;case 4:return 69;case 5:case 39:case 52:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return this.begin("ID"),20;case 13:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),57;case 14:return this.popState(),this.popState(),this.begin("LINE"),18;case 15:return this.popState(),this.popState(),5;case 16:return this.begin("LINE"),32;case 17:return this.begin("LINE"),34;case 18:return this.begin("LINE"),35;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),38;case 22:return this.begin("LINE"),40;case 23:return this.popState(),19;case 24:return 33;case 25:return 52;case 26:return 53;case 27:return 46;case 28:return 47;case 29:return 48;case 30:return 49;case 31:return 44;case 32:return 42;case 33:return this.begin("ID"),23;case 34:return this.begin("ID"),24;case 35:return 30;case 36:return 7;case 37:return 22;case 38:return 51;case 40:return e.yytext=e.yytext.trim(),57;case 41:return 60;case 42:return 61;case 43:return 58;case 44:return 59;case 45:return 62;case 46:return 63;case 47:return 64;case 48:return 65;case 49:return 66;case 50:return 55;case 51:return 56;case 53:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,13],inclusive:!1},ALIAS:{rules:[7,8,14,15],inclusive:!1},LINE:{rules:[7,8,23],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function C(){this.yy={}}return k.lexer=Y,C.prototype=k,k.Parser=C,new C}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(1993).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3584:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,3],l=[1,5],i=[1,7],a=[2,5],s=[1,15],r=[1,17],o=[1,19],c=[1,20],d=[1,21],u=[1,22],h=[1,30],m=[1,23],U=[1,24],p=[1,25],F=[1,26],b=[1,27],Z=[1,32],N=[1,33],R=[1,34],S=[1,35],W=[1,31],V=[1,38],Q=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],y=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],T=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],M=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],g={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CHOICE:25,CONCURRENT:26,note:27,notePosition:28,NOTE_TEXT:29,direction:30,openDirective:31,typeDirective:32,closeDirective:33,":":34,argDirective:35,direction_tb:36,direction_bt:37,direction_rl:38,direction_lr:39,eol:40,";":41,EDGE_STATE:42,left_of:43,right_of:44,open_directive:45,type_directive:46,arg_directive:47,close_directive:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CHOICE",26:"CONCURRENT",27:"note",29:"NOTE_TEXT",34:":",36:"direction_tb",37:"direction_bt",38:"direction_rl",39:"direction_lr",41:";",42:"EDGE_STATE",43:"left_of",44:"right_of",45:"open_directive",46:"type_directive",47:"arg_directive",48:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:return l.setRootDoc(a[r]),a[r];case 5:this.$=[];break;case 6:"nl"!=a[r]&&(a[r-1].push(a[r]),this.$=a[r-1]);break;case 7:case 8:case 36:case 37:this.$=a[r];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[r],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[r-1],type:"default",description:l.trimColon(a[r])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[r-2],type:"default",description:""},state2:{stmt:"state",id:a[r],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[r-3],type:"default",description:""},state2:{stmt:"state",id:a[r-1],type:"default",description:""},description:a[r].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[r-3],type:"default",description:"",doc:a[r-1]};break;case 18:var o=a[r],c=a[r-2].trim();if(a[r].match(":")){var d=a[r].split(":");o=d[0],c=[c,d[1]]}this.$={stmt:"state",id:o,type:"default",description:c};break;case 19:this.$={stmt:"state",id:a[r-3],type:"default",description:a[r-5],doc:a[r-1]};break;case 20:this.$={stmt:"state",id:a[r],type:"fork"};break;case 21:this.$={stmt:"state",id:a[r],type:"join"};break;case 22:this.$={stmt:"state",id:a[r],type:"choice"};break;case 23:this.$={stmt:"state",id:l.getDividerId(),type:"divider"};break;case 24:this.$={stmt:"state",id:a[r-1].trim(),note:{position:a[r-2].trim(),text:a[r].trim()}};break;case 30:l.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 31:l.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 32:l.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 33:l.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:l.parseDirective("%%{","open_directive");break;case 41:l.parseDirective(a[r],"type_directive");break;case 42:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 43:l.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:l,31:6,45:i},{1:[3]},{3:8,4:e,5:n,6:4,7:l,31:6,45:i},{3:9,4:e,5:n,6:4,7:l,31:6,45:i},{3:10,4:e,5:n,6:4,7:l,31:6,45:i},t([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],a,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},{33:36,34:[1,37],48:V},t([34,48],[2,41]),t(Q,[2,6]),{6:28,10:39,11:18,14:o,15:c,17:d,20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,8]),t(Q,[2,9]),t(Q,[2,10],{12:[1,40],13:[1,41]}),t(Q,[2,14]),{16:[1,42]},t(Q,[2,16],{18:[1,43]}),{21:[1,44]},t(Q,[2,20]),t(Q,[2,21]),t(Q,[2,22]),t(Q,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},t(Q,[2,26]),t(Q,[2,27]),t(y,[2,36]),t(y,[2,37]),t(Q,[2,30]),t(Q,[2,31]),t(Q,[2,32]),t(Q,[2,33]),t(T,[2,28]),{35:49,47:[1,50]},t(T,[2,43]),t(Q,[2,7]),t(Q,[2,11]),{11:51,22:h,42:W},t(Q,[2,15]),t(M,a,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:V},{48:[2,42]},t(Q,[2,12],{12:[1,57]}),{4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,19:[1,58],20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},t(T,[2,29]),t(Q,[2,13]),t(Q,[2,17]),t(M,a,{8:62}),t(Q,[2,24]),t(Q,[2,25]),{4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,19:[1,63],20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,19])],defaultActions:{7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},E={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:case 26:return 36;case 1:case 27:return 37;case 2:case 28:return 38;case 3:case 29:return 39;case 4:return this.begin("open_directive"),45;case 5:return this.begin("type_directive"),46;case 6:return this.popState(),this.begin("arg_directive"),34;case 7:return this.popState(),this.popState(),48;case 8:return 47;case 9:case 10:case 12:case 13:case 14:case 15:case 39:case 45:break;case 11:case 59:return 5;case 16:return this.pushState("SCALE"),15;case 17:return 16;case 18:case 33:case 36:this.popState();break;case 19:this.pushState("STATE");break;case 20:case 23:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 21:case 24:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 22:case 25:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),25;case 30:this.begin("STATE_STRING");break;case 31:return this.popState(),this.pushState("STATE_ID"),"AS";case 32:case 47:return this.popState(),"ID";case 34:return"STATE_DESCR";case 35:return 17;case 37:return this.popState(),this.pushState("struct"),18;case 38:return this.popState(),19;case 40:return this.begin("NOTE"),27;case 41:return this.popState(),this.pushState("NOTE_ID"),43;case 42:return this.popState(),this.pushState("NOTE_ID"),44;case 43:this.popState(),this.pushState("FLOATING_NOTE");break;case 44:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 46:return"NOTE_TEXT";case 48:return this.popState(),this.pushState("NOTE_TEXT"),22;case 49:return this.popState(),e.yytext=e.yytext.substr(2).trim(),29;case 50:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),29;case 51:case 52:return 7;case 53:return 14;case 54:return 42;case 55:return 22;case 56:return e.yytext=e.yytext.trim(),12;case 57:return 13;case 58:return 26;case 60:return"INVALID"}},rules:[/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[13,14],inclusive:!1},close_directive:{rules:[13,14],inclusive:!1},arg_directive:{rules:[7,8,13,14],inclusive:!1},type_directive:{rules:[6,7,13,14],inclusive:!1},open_directive:{rules:[5,13,14],inclusive:!1},struct:{rules:[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],inclusive:!1},FLOATING_NOTE_ID:{rules:[47],inclusive:!1},FLOATING_NOTE:{rules:[44,45,46],inclusive:!1},NOTE_TEXT:{rules:[49,50],inclusive:!1},NOTE_ID:{rules:[48],inclusive:!1},NOTE:{rules:[41,42,43],inclusive:!1},SCALE:{rules:[17,18],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[32],inclusive:!1},STATE_STRING:{rules:[33,34],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[13,14,20,21,22,23,24,25,30,31,35,36,37],inclusive:!1},ID:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],inclusive:!0}}};function G(){this.yy={}}return g.lexer=E,G.prototype=g,g.Parser=G,new G}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(3069).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9763:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,5],l=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],s=[1,17],r=[1,21],o=[4,6,9,11,17,18,19,21],c={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:return a[r-1];case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:this.$=a[r];break;case 11:l.setTitle(a[r].substr(6)),this.$=a[r].substr(6);break;case 12:l.addSection(a[r].substr(8)),this.$=a[r].substr(8);break;case 13:l.addTask(a[r-1],a[r]),this.$="task";break;case 15:l.parseDirective("%%{","open_directive");break;case 16:l.parseDirective(a[r],"type_directive");break;case 17:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 18:l.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(l,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:s,21:n},{1:[2,2]},{14:19,15:[1,20],24:r},t([15,24],[2,16]),t(l,[2,8],{1:[2,1]}),t(l,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:s,21:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,11]),t(l,[2,12]),{20:[1,23]},t(l,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(l,[2,5]),t(l,[2,13]),t(o,[2,9]),{14:27,24:r},{24:[2,17]},{11:[1,28]},t(o,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function u(){this.yy={}}return c.lexer=d,u.prototype=c,c.Parser=u,new u}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(9143).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9609:t=>{var e=/^(%20|\s)*(javascript|data)/im,n=/[^\x20-\x7E]/gim,l=/^([^:]+):/gm,i=[".","/"];t.exports={sanitizeUrl:function(t){if(!t)return"about:blank";var a,s,r=t.replace(n,"").trim();return function(t){return i.indexOf(t[0])>-1}(r)?r:(s=r.match(l))?(a=s[0],e.test(a)?"about:blank":r):"about:blank"}}},3841:t=>{t.exports=function(t,e){return t.intersect(e)}},7458:(t,e,n)=>{n.d(e,{Z:()=>uT});var l=n(1941),i=n.n(l),a={debug:1,info:2,warn:3,error:4,fatal:5},s={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==a[t]&&(t=a[t])),s.trace=function(){},s.debug=function(){},s.info=function(){},s.warn=function(){},s.error=function(){},s.fatal=function(){},t<=a.fatal&&(s.fatal=console.error?console.error.bind(console,o("FATAL"),"color: orange"):console.log.bind(console,"",o("FATAL"))),t<=a.error&&(s.error=console.error?console.error.bind(console,o("ERROR"),"color: orange"):console.log.bind(console,"",o("ERROR"))),t<=a.warn&&(s.warn=console.warn?console.warn.bind(console,o("WARN"),"color: orange"):console.log.bind(console,"",o("WARN"))),t<=a.info&&(s.info=console.info?console.info.bind(console,o("INFO"),"color: lightblue"):console.log.bind(console,"",o("INFO"))),t<=a.debug&&(s.debug=console.debug?console.debug.bind(console,o("DEBUG"),"color: lightgreen"):console.log.bind(console,"",o("DEBUG")))},o=function(t){var e=i()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")};function c(t,e){let n;if(void 0===e)for(const l of t)null!=l&&(n=l)&&(n=l);else{let l=-1;for(let i of t)null!=(i=e(i,++l,t))&&(n=i)&&(n=i)}return n}function d(t,e){let n;if(void 0===e)for(const l of t)null!=l&&(n>l||void 0===n&&l>=l)&&(n=l);else{let l=-1;for(let i of t)null!=(i=e(i,++l,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function u(t){return t}var h=1e-6;function m(t){return"translate("+t+",0)"}function U(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function F(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function b(){return!this.__axis}function Z(t,e){var n=[],l=null,i=null,a=6,s=6,r=3,o="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,c=1===t||4===t?-1:1,d=4===t||2===t?"x":"y",Z=1===t||3===t?m:U;function N(m){var U=null==l?e.ticks?e.ticks.apply(e,n):e.domain():l,N=null==i?e.tickFormat?e.tickFormat.apply(e,n):u:i,R=Math.max(a,0)+r,S=e.range(),W=+S[0]+o,V=+S[S.length-1]+o,Q=(e.bandwidth?F:p)(e.copy(),o),y=m.selection?m.selection():m,T=y.selectAll(".domain").data([null]),M=y.selectAll(".tick").data(U,e).order(),g=M.exit(),E=M.enter().append("g").attr("class","tick"),G=M.select("line"),B=M.select("text");T=T.merge(T.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),M=M.merge(E),G=G.merge(E.append("line").attr("stroke","currentColor").attr(d+"2",c*a)),B=B.merge(E.append("text").attr("fill","currentColor").attr(d,c*R).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),m!==y&&(T=T.transition(m),M=M.transition(m),G=G.transition(m),B=B.transition(m),g=g.transition(m).attr("opacity",h).attr("transform",(function(t){return isFinite(t=Q(t))?Z(t+o):this.getAttribute("transform")})),E.attr("opacity",h).attr("transform",(function(t){var e=this.parentNode.__axis;return Z((e&&isFinite(e=e(t))?e:Q(t))+o)}))),g.remove(),T.attr("d",4===t||2===t?s?"M"+c*s+","+W+"H"+o+"V"+V+"H"+c*s:"M"+o+","+W+"V"+V:s?"M"+W+","+c*s+"V"+o+"H"+V+"V"+c*s:"M"+W+","+o+"H"+V),M.attr("opacity",1).attr("transform",(function(t){return Z(Q(t)+o)})),G.attr(d+"2",c*a),B.attr(d,c*R).text(N),y.filter(b).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),y.each((function(){this.__axis=Q}))}return N.scale=function(t){return arguments.length?(e=t,N):e},N.ticks=function(){return n=Array.from(arguments),N},N.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),N):n.slice()},N.tickValues=function(t){return arguments.length?(l=null==t?null:Array.from(t),N):l&&l.slice()},N.tickFormat=function(t){return arguments.length?(i=t,N):i},N.tickSize=function(t){return arguments.length?(a=s=+t,N):a},N.tickSizeInner=function(t){return arguments.length?(a=+t,N):a},N.tickSizeOuter=function(t){return arguments.length?(s=+t,N):s},N.tickPadding=function(t){return arguments.length?(r=+t,N):r},N.offset=function(t){return arguments.length?(o=+t,N):o},N}function N(){}function R(t){return null==t?N:function(){return this.querySelector(t)}}function S(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function W(){return[]}function V(t){return null==t?W:function(){return this.querySelectorAll(t)}}function Q(t){return function(){return this.matches(t)}}function y(t){return function(e){return e.matches(t)}}var T=Array.prototype.find;function M(){return this.firstElementChild}var g=Array.prototype.filter;function E(){return Array.from(this.children)}function G(t){return new Array(t.length)}function B(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function J(t){return function(){return t}}function k(t,e,n,l,i,a){for(var s,r=0,o=e.length,c=a.length;re?1:t>=e?0:NaN}B.prototype={constructor:B,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var D="http://www.w3.org/1999/xhtml";const f={svg:"http://www.w3.org/2000/svg",xhtml:D,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function L(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),f.hasOwnProperty(e)?{space:f[e],local:t}:t}function w(t){return function(){this.removeAttribute(t)}}function x(t){return function(){this.removeAttributeNS(t.space,t.local)}}function z(t,e){return function(){this.setAttribute(t,e)}}function v(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function O(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function _(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function K(t){return function(){this.style.removeProperty(t)}}function P(t,e,n){return function(){this.style.setProperty(t,e,n)}}function A(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function H(t,e){return t.style.getPropertyValue(e)||j(t).getComputedStyle(t,null).getPropertyValue(e)}function q(t){return function(){delete this[t]}}function $(t,e){return function(){this[t]=e}}function tt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function et(t){return t.trim().split(/^|\s+/)}function nt(t){return t.classList||new lt(t)}function lt(t){this._node=t,this._names=et(t.getAttribute("class")||"")}function it(t,e){for(var n=nt(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function yt(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Jt(){return new Bt([[document.documentElement]],Gt)}Bt.prototype=Jt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=R(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=I);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?K:"function"==typeof e?A:P)(t,e,null==n?"":n)):H(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?q:"function"==typeof e?tt:$)(t,e)):this.node()[t]},classed:function(t,e){var n=et(t+"");if(arguments.length<2){for(var l=nt(this.node()),i=-1,a=n.length;++i{}};function Ct(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Dt(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--zt}()}finally{zt=0,function(){for(var t,e,n=wt,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:wt=e);xt=t,le(l)}(),jt=0}}function ne(){var t=Pt.now(),e=t-_t;e>1e3&&(Kt-=e,_t=t)}function le(t){zt||(vt&&(vt=clearTimeout(vt)),t-jt>24?(t<1/0&&(vt=setTimeout(ee,t-Pt.now()-Kt)),Ot&&(Ot=clearInterval(Ot))):(Ot||(_t=Pt.now(),Ot=setInterval(ne,1e3)),zt=1,At(ee)))}function ie(t,e,n){var l=new $t;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}$t.prototype=te.prototype={constructor:$t,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Ht():+n)+(null==e?0:+e),this._next||xt===this||(xt?xt._next=this:wt=this,xt=this),this._call=t,this._time=n,le()},stop:function(){this._call&&(this._call=null,this._time=1/0,le())}};var ae=Lt("start","end","cancel","interrupt"),se=[];function re(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return ie(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function ce(t,e){var n=de(t,e);if(n.state>3)throw new Error("too late; already running");return n}function de(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ue(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var he,me=180/Math.PI,Ue={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function pe(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:ue(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:ue(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:ue(t,n)},{i:r-2,x:ue(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?xe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?xe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Be.exec(t))?new Oe(e[1],e[2],e[3],1):(e=Je.exec(t))?new Oe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=ke.exec(t))?xe(e[1],e[2],e[3],e[4]):(e=Ye.exec(t))?xe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ce.exec(t))?Pe(e[1],e[2]/100,e[3]/100,1):(e=Xe.exec(t))?Pe(e[1],e[2]/100,e[3]/100,e[4]):Ie.hasOwnProperty(t)?we(Ie[t]):"transparent"===t?new Oe(NaN,NaN,NaN,0):null}function we(t){return new Oe(t>>16&255,t>>8&255,255&t,1)}function xe(t,e,n,l){return l<=0&&(t=e=n=NaN),new Oe(t,e,n,l)}function ze(t){return t instanceof Qe||(t=Le(t)),t?new Oe((t=t.rgb()).r,t.g,t.b,t.opacity):new Oe}function ve(t,e,n,l){return 1===arguments.length?ze(t):new Oe(t,e,n,null==l?1:l)}function Oe(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function _e(){return"#"+Ke(this.r)+Ke(this.g)+Ke(this.b)}function je(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Ke(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Pe(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new He(t,e,n,l)}function Ae(t){if(t instanceof He)return new He(t.h,t.s,t.l,t.opacity);if(t instanceof Qe||(t=Le(t)),!t)return new He;if(t instanceof He)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new He(s,r,o,t.opacity)}function He(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function qe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function $e(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}We(Qe,Le,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:De,formatHex:De,formatHsl:function(){return Ae(this).formatHsl()},formatRgb:fe,toString:fe}),We(Oe,ve,Ve(Qe,{brighter:function(t){return t=null==t?Te:Math.pow(Te,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ye:Math.pow(ye,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_e,formatHex:_e,formatRgb:je,toString:je})),We(He,(function(t,e,n,l){return 1===arguments.length?Ae(t):new He(t,e,n,null==l?1:l)}),Ve(Qe,{brighter:function(t){return t=null==t?Te:Math.pow(Te,t),new He(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ye:Math.pow(ye,t),new He(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new Oe(qe(t>=240?t-240:t+120,i,l),qe(t,i,l),qe(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const tn=t=>()=>t;function en(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):tn(isNaN(t)?e:t)}const nn=function t(e){var n=function(t){return 1==(t=+t)?en:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=ve(t)).r,(e=ve(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=en(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function ln(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:ue(n,l)})),a=sn.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?oe:ce;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var yn=kt.prototype.constructor;function Tn(t){return function(){this.style.removeProperty(t)}}function Mn(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function gn(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&Mn(t,a,n)),l}return a._value=e,a}function En(t){return function(e){this.textContent=t.call(this,e)}}function Gn(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&En(l)),e}return l._value=t,l}var Bn=0;function Jn(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function kn(){return++Bn}var Yn=kt.prototype;Jn.prototype=function(t){return kt().transition(t)}.prototype={constructor:Jn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=R(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},kt.prototype.transition=function(t){var e,n;t instanceof Jn?(e=t._id,t=t._name):(e=kn(),(n=Cn).time=Ht(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;a>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?rl(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?rl(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=An.exec(t))?new dl(e[1],e[2],e[3],1):(e=Hn.exec(t))?new dl(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=qn.exec(t))?rl(e[1],e[2],e[3],e[4]):(e=$n.exec(t))?rl(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=tl.exec(t))?Ul(e[1],e[2]/100,e[3]/100,1):(e=el.exec(t))?Ul(e[1],e[2]/100,e[3]/100,e[4]):nl.hasOwnProperty(t)?sl(nl[t]):"transparent"===t?new dl(NaN,NaN,NaN,0):null}function sl(t){return new dl(t>>16&255,t>>8&255,255&t,1)}function rl(t,e,n,l){return l<=0&&(t=e=n=NaN),new dl(t,e,n,l)}function ol(t){return t instanceof zn||(t=al(t)),t?new dl((t=t.rgb()).r,t.g,t.b,t.opacity):new dl}function cl(t,e,n,l){return 1===arguments.length?ol(t):new dl(t,e,n,null==l?1:l)}function dl(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function ul(){return"#"+ml(this.r)+ml(this.g)+ml(this.b)}function hl(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function ml(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ul(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Fl(t,e,n,l)}function pl(t){if(t instanceof Fl)return new Fl(t.h,t.s,t.l,t.opacity);if(t instanceof zn||(t=al(t)),!t)return new Fl;if(t instanceof Fl)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new Fl(s,r,o,t.opacity)}function Fl(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function bl(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}wn(zn,al,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ll,formatHex:ll,formatHsl:function(){return pl(this).formatHsl()},formatRgb:il,toString:il}),wn(dl,cl,xn(zn,{brighter:function(t){return t=null==t?On:Math.pow(On,t),new dl(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?vn:Math.pow(vn,t),new dl(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ul,formatHex:ul,formatRgb:hl,toString:hl})),wn(Fl,(function(t,e,n,l){return 1===arguments.length?pl(t):new Fl(t,e,n,null==l?1:l)}),xn(zn,{brighter:function(t){return t=null==t?On:Math.pow(On,t),new Fl(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?vn:Math.pow(vn,t),new Fl(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new dl(bl(t>=240?t-240:t+120,i,l),bl(t,i,l),bl(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Zl=Math.PI/180,Nl=180/Math.PI,Rl=.96422,Sl=.82521,Wl=4/29,Vl=6/29,Ql=3*Vl*Vl;function yl(t){if(t instanceof Tl)return new Tl(t.l,t.a,t.b,t.opacity);if(t instanceof kl)return Yl(t);t instanceof dl||(t=ol(t));var e,n,l=Gl(t.r),i=Gl(t.g),a=Gl(t.b),s=Ml((.2225045*l+.7168786*i+.0606169*a)/1);return l===i&&i===a?e=n=s:(e=Ml((.4360747*l+.3850649*i+.1430804*a)/Rl),n=Ml((.0139322*l+.0971045*i+.7141733*a)/Sl)),new Tl(116*s-16,500*(e-s),200*(s-n),t.opacity)}function Tl(t,e,n,l){this.l=+t,this.a=+e,this.b=+n,this.opacity=+l}function Ml(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ql+Wl}function gl(t){return t>Vl?t*t*t:Ql*(t-Wl)}function El(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Gl(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Bl(t){if(t instanceof kl)return new kl(t.h,t.c,t.l,t.opacity);if(t instanceof Tl||(t=yl(t)),0===t.a&&0===t.b)return new kl(NaN,0()=>t;function Xl(t,e){return function(n){return t+n*e}}function Il(t,e){var n=e-t;return n?Xl(t,n):Cl(isNaN(t)?e:t)}function Dl(t){return function(e,n){var l=t((e=Jl(e)).h,(n=Jl(n)).h),i=Il(e.c,n.c),a=Il(e.l,n.l),s=Il(e.opacity,n.opacity);return function(t){return e.h=l(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const fl=Dl((function(t,e){var n=e-t;return n?Xl(t,n>180||n<-180?n-360*Math.round(n/360):n):Cl(isNaN(t)?e:t)}));Dl(Il);var Ll=Math.sqrt(50),wl=Math.sqrt(10),xl=Math.sqrt(2);function zl(t,e,n){var l=(e-t)/Math.max(0,n),i=Math.floor(Math.log(l)/Math.LN10),a=l/Math.pow(10,i);return i>=0?(a>=Ll?10:a>=wl?5:a>=xl?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Ll?10:a>=wl?5:a>=xl?2:1)}function vl(t,e,n){var l=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(l)/Math.LN10)),a=l/i;return a>=Ll?i*=10:a>=wl?i*=5:a>=xl&&(i*=2),ee?1:t>=e?0:NaN}function _l(t){let e=t,n=t,l=t;function i(t,e,i=0,a=t.length){if(i>>1;l(t[n],e)<0?i=n+1:a=n}while(it(e)-n,n=Ol,l=(e,n)=>Ol(t(e),n)),{left:i,center:function(t,n,l=0,a=t.length){const s=i(t,n,l,a-1);return s>l&&e(t[s-1],n)>-e(t[s],n)?s-1:s},right:function(t,e,i=0,a=t.length){if(i>>1;l(t[n],e)<=0?i=n+1:a=n}while(i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Fi(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Fi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ai.exec(t))?new Ni(e[1],e[2],e[3],1):(e=si.exec(t))?new Ni(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=ri.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=oi.exec(t))?Fi(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ci.exec(t))?Vi(e[1],e[2]/100,e[3]/100,1):(e=di.exec(t))?Vi(e[1],e[2]/100,e[3]/100,e[4]):ui.hasOwnProperty(t)?pi(ui[t]):"transparent"===t?new Ni(NaN,NaN,NaN,0):null}function pi(t){return new Ni(t>>16&255,t>>8&255,255&t,1)}function Fi(t,e,n,l){return l<=0&&(t=e=n=NaN),new Ni(t,e,n,l)}function bi(t){return t instanceof ql||(t=Ui(t)),t?new Ni((t=t.rgb()).r,t.g,t.b,t.opacity):new Ni}function Zi(t,e,n,l){return 1===arguments.length?bi(t):new Ni(t,e,n,null==l?1:l)}function Ni(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function Ri(){return"#"+Wi(this.r)+Wi(this.g)+Wi(this.b)}function Si(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Wi(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Vi(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yi(t,e,n,l)}function Qi(t){if(t instanceof yi)return new yi(t.h,t.s,t.l,t.opacity);if(t instanceof ql||(t=Ui(t)),!t)return new yi;if(t instanceof yi)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new yi(s,r,o,t.opacity)}function yi(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function Ti(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Mi(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}Al(ql,Ui,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:hi,formatHex:hi,formatHsl:function(){return Qi(this).formatHsl()},formatRgb:mi,toString:mi}),Al(Ni,Zi,Hl(ql,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new Ni(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?$l:Math.pow($l,t),new Ni(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ri,formatHex:Ri,formatRgb:Si,toString:Si})),Al(yi,(function(t,e,n,l){return 1===arguments.length?Qi(t):new yi(t,e,n,null==l?1:l)}),Hl(ql,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new yi(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?$l:Math.pow($l,t),new yi(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new Ni(Ti(t>=240?t-240:t+120,i,l),Ti(t,i,l),Ti(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const gi=t=>()=>t;function Ei(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):gi(isNaN(t)?e:t)}const Gi=function t(e){var n=function(t){return 1==(t=+t)?Ei:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):gi(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=Zi(t)).r,(e=Zi(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=Ei(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function Bi(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Yi(n,l)})),a=Ii.lastIndex;return ae&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),l=o>2?ji:_i,i=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(i||(i=l(s.map(t),r,o)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=l(r,s.map(t),Yi)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,xi),d()):s.slice()},u.range=function(t){return arguments.length?(r=Array.from(t),d()):r.slice()},u.rangeRound=function(t){return r=Array.from(t),o=wi,d()},u.clamp=function(t){return arguments.length?(c=!!t||vi,d()):c!==vi},u.interpolate=function(t){return arguments.length?(o=t,d()):o},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,l){return t=n,e=l,d()}}()(vi,vi)}function Ai(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Hi,qi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function $i(t){if(!(e=qi.exec(t)))throw new Error("invalid format: "+t);var e;return new ta({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function ta(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ea(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,l=t.slice(0,n);return[l.length>1?l[0]+l.slice(2):l,+t.slice(n+1)]}function na(t){return(t=ea(Math.abs(t)))?t[1]:NaN}function la(t,e){var n=ea(t,e);if(!n)return t+"";var l=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+l:l.length>i+1?l.slice(0,i+1)+"."+l.slice(i+1):l+new Array(i-l.length+2).join("0")}$i.prototype=ta.prototype,ta.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ia={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>la(100*t,e),r:la,s:function(t,e){var n=ea(t,e);if(!n)return t+"";var l=n[0],i=n[1],a=i-(Hi=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=l.length;return a===s?l:a>s?l+new Array(a-s+1).join("0"):a>0?l.slice(0,a)+"."+l.slice(a):"0."+new Array(1-a).join("0")+ea(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function aa(t){return t}var sa,ra,oa,ca=Array.prototype.map,da=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ua(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var l,i,a,s,r=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((l=e0){let n=Math.round(t/s),l=Math.round(e/s);for(n*se&&--l,a=new Array(i=l-n+1);++re&&--l,a=new Array(i=l-n+1);++r0;){if((i=zl(o,c,n))===l)return a[s]=o,a[r]=c,e(a);if(i>0)o=Math.floor(o/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;o=Math.ceil(o*i)/i,c=Math.floor(c*i)/i}l=i}return t},t}function ha(){var t=Pi();return t.copy=function(){return Ki(t,ha())},Ai.apply(t,arguments),ua(t)}sa=function(t){var e,n,l=void 0===t.grouping||void 0===t.thousands?aa:(e=ca.call(t.grouping,Number),n=t.thousands+"",function(t,l){for(var i=t.length,a=[],s=0,r=e[0],o=0;i>0&&r>0&&(o+r+1>l&&(r=Math.max(1,l-o)),a.push(t.substring(i-=r,i+r)),!((o+=r+1)>l));)r=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",r=void 0===t.numerals?aa:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ca.call(t.numerals,String)),o=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",d=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=$i(t)).fill,n=t.align,u=t.sign,h=t.symbol,m=t.zero,U=t.width,p=t.comma,F=t.precision,b=t.trim,Z=t.type;"n"===Z?(p=!0,Z="g"):ia[Z]||(void 0===F&&(F=12),b=!0,Z="g"),(m||"0"===e&&"="===n)&&(m=!0,e="0",n="=");var N="$"===h?i:"#"===h&&/[boxX]/.test(Z)?"0"+Z.toLowerCase():"",R="$"===h?a:/[%p]/.test(Z)?o:"",S=ia[Z],W=/[defgprs%]/.test(Z);function V(t){var i,a,o,h=N,V=R;if("c"===Z)V=S(t)+V,t="";else{var Q=(t=+t)<0||1/t<0;if(t=isNaN(t)?d:S(Math.abs(t),F),b&&(t=function(t){t:for(var e,n=t.length,l=1,i=-1;l0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),Q&&0==+t&&"+"!==u&&(Q=!1),h=(Q?"("===u?u:c:"-"===u||"("===u?"":u)+h,V=("s"===Z?da[8+Hi/3]:"")+V+(Q&&"("===u?")":""),W)for(i=-1,a=t.length;++i(o=t.charCodeAt(i))||o>57){V=(46===o?s+t.slice(i+1):t.slice(i))+V,t=t.slice(0,i);break}}p&&!m&&(t=l(t,1/0));var y=h.length+t.length+V.length,T=y>1)+h+t+V+T.slice(y);break;default:t=T+h+t+V}return r(t)}return F=void 0===F?6:/[gprs]/.test(Z)?Math.max(1,Math.min(21,F)):Math.max(0,Math.min(20,F)),V.toString=function(){return t+""},V}return{format:u,formatPrefix:function(t,e){var n=u(((t=$i(t)).type="f",t)),l=3*Math.max(-8,Math.min(8,Math.floor(na(e)/3))),i=Math.pow(10,-l),a=da[8+l/3];return function(t){return n(i*t)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),ra=sa.format,oa=sa.formatPrefix;class ma extends Map{constructor(t,e=pa){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[n,l]of t)this.set(n,l)}get(t){return super.get(Ua(this,t))}has(t){return super.has(Ua(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const l=e(n);return t.has(l)?t.get(l):(t.set(l,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const l=e(n);return t.has(l)&&(n=t.get(l),t.delete(l)),n}(this,t))}}function Ua({_intern:t,_key:e},n){const l=e(n);return t.has(l)?t.get(l):n}function pa(t){return null!==t&&"object"==typeof t?t.valueOf():t}Set;const Fa=Symbol("implicit");function ba(){var t=new ma,e=[],n=[],l=Fa;function i(i){let a=t.get(i);if(void 0===a){if(l!==Fa)return l;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new ma;for(const l of n)t.has(l)||t.set(l,e.push(l)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(l=t,i):l},i.copy=function(){return ba(e,n).unknown(l)},Ai.apply(i,arguments),i}const Za=1e3,Na=6e4,Ra=36e5,Sa=864e5,Wa=6048e5,Va=31536e6;var Qa=new Date,ya=new Date;function Ta(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return Qa.setTime(+e),ya.setTime(+l),t(Qa),t(ya),Math.floor(n(Qa,ya))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Ma=Ta((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Ma.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ta((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Ma:null};const ga=Ma;Ma.range;var Ea=Ta((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*Za)}),(function(t,e){return(e-t)/Za}),(function(t){return t.getUTCSeconds()}));const Ga=Ea;Ea.range;var Ba=Ta((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Za)}),(function(t,e){t.setTime(+t+e*Na)}),(function(t,e){return(e-t)/Na}),(function(t){return t.getMinutes()}));const Ja=Ba;Ba.range;var ka=Ta((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Za-t.getMinutes()*Na)}),(function(t,e){t.setTime(+t+e*Ra)}),(function(t,e){return(e-t)/Ra}),(function(t){return t.getHours()}));const Ya=ka;ka.range;var Ca=Ta((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Na)/Sa),(t=>t.getDate()-1));const Xa=Ca;function Ia(t){return Ta((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Na)/Wa}))}Ca.range;var Da=Ia(0),fa=Ia(1),La=Ia(2),wa=Ia(3),xa=Ia(4),za=Ia(5),va=Ia(6),Oa=(Da.range,fa.range,La.range,wa.range,xa.range,za.range,va.range,Ta((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})));const _a=Oa;Oa.range;var ja=Ta((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));ja.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ta((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Ka=ja;ja.range;var Pa=Ta((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*Na)}),(function(t,e){return(e-t)/Na}),(function(t){return t.getUTCMinutes()}));const Aa=Pa;Pa.range;var Ha=Ta((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*Ra)}),(function(t,e){return(e-t)/Ra}),(function(t){return t.getUTCHours()}));const qa=Ha;Ha.range;var $a=Ta((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Sa}),(function(t){return t.getUTCDate()-1}));const ts=$a;function es(t){return Ta((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/Wa}))}$a.range;var ns=es(0),ls=es(1),is=es(2),as=es(3),ss=es(4),rs=es(5),os=es(6),cs=(ns.range,ls.range,is.range,as.range,ss.range,rs.range,os.range,Ta((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})));const ds=cs;cs.range;var us=Ta((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));us.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ta((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const hs=us;function ms(t,e,n,l,i,a){const s=[[Ga,1,Za],[Ga,5,5e3],[Ga,15,15e3],[Ga,30,3e4],[a,1,Na],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,Ra],[i,3,108e5],[i,6,216e5],[i,12,432e5],[l,1,Sa],[l,2,1728e5],[n,1,Wa],[e,1,2592e6],[e,3,7776e6],[t,1,Va]];function r(e,n,l){const i=Math.abs(n-e)/l,a=_l((([,,t])=>t)).right(s,i);if(a===s.length)return t.every(vl(e/Va,n/Va,l));if(0===a)return ga.every(Math.max(vl(e,n,l),1));const[r,o]=s[i/s[a-1][2][t.toLowerCase(),e])))}function Bs(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.w=+l[0],n+l[0].length):-1}function Js(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.u=+l[0],n+l[0].length):-1}function ks(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.U=+l[0],n+l[0].length):-1}function Ys(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.V=+l[0],n+l[0].length):-1}function Cs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.W=+l[0],n+l[0].length):-1}function Xs(t,e,n){var l=Qs.exec(e.slice(n,n+4));return l?(t.y=+l[0],n+l[0].length):-1}function Is(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.y=+l[0]+(+l[0]>68?1900:2e3),n+l[0].length):-1}function Ds(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function fs(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function Ls(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function ws(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function xs(t,e,n){var l=Qs.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function zs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function vs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function Os(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function _s(t,e,n){var l=Qs.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function js(t,e,n){var l=Qs.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function Ks(t,e,n){var l=ys.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function Ps(t,e,n){var l=Qs.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function As(t,e,n){var l=Qs.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function Hs(t,e){return Ms(t.getDate(),e,2)}function qs(t,e){return Ms(t.getHours(),e,2)}function $s(t,e){return Ms(t.getHours()%12||12,e,2)}function tr(t,e){return Ms(1+Xa.count(Ka(t),t),e,3)}function er(t,e){return Ms(t.getMilliseconds(),e,3)}function nr(t,e){return er(t,e)+"000"}function lr(t,e){return Ms(t.getMonth()+1,e,2)}function ir(t,e){return Ms(t.getMinutes(),e,2)}function ar(t,e){return Ms(t.getSeconds(),e,2)}function sr(t){var e=t.getDay();return 0===e?7:e}function rr(t,e){return Ms(Da.count(Ka(t)-1,t),e,2)}function or(t){var e=t.getDay();return e>=4||0===e?xa(t):xa.ceil(t)}function cr(t,e){return t=or(t),Ms(xa.count(Ka(t),t)+(4===Ka(t).getDay()),e,2)}function dr(t){return t.getDay()}function ur(t,e){return Ms(fa.count(Ka(t)-1,t),e,2)}function hr(t,e){return Ms(t.getFullYear()%100,e,2)}function mr(t,e){return Ms((t=or(t)).getFullYear()%100,e,2)}function Ur(t,e){return Ms(t.getFullYear()%1e4,e,4)}function pr(t,e){var n=t.getDay();return Ms((t=n>=4||0===n?xa(t):xa.ceil(t)).getFullYear()%1e4,e,4)}function Fr(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ms(e/60|0,"0",2)+Ms(e%60,"0",2)}function br(t,e){return Ms(t.getUTCDate(),e,2)}function Zr(t,e){return Ms(t.getUTCHours(),e,2)}function Nr(t,e){return Ms(t.getUTCHours()%12||12,e,2)}function Rr(t,e){return Ms(1+ts.count(hs(t),t),e,3)}function Sr(t,e){return Ms(t.getUTCMilliseconds(),e,3)}function Wr(t,e){return Sr(t,e)+"000"}function Vr(t,e){return Ms(t.getUTCMonth()+1,e,2)}function Qr(t,e){return Ms(t.getUTCMinutes(),e,2)}function yr(t,e){return Ms(t.getUTCSeconds(),e,2)}function Tr(t){var e=t.getUTCDay();return 0===e?7:e}function Mr(t,e){return Ms(ns.count(hs(t)-1,t),e,2)}function gr(t){var e=t.getUTCDay();return e>=4||0===e?ss(t):ss.ceil(t)}function Er(t,e){return t=gr(t),Ms(ss.count(hs(t),t)+(4===hs(t).getUTCDay()),e,2)}function Gr(t){return t.getUTCDay()}function Br(t,e){return Ms(ls.count(hs(t)-1,t),e,2)}function Jr(t,e){return Ms(t.getUTCFullYear()%100,e,2)}function kr(t,e){return Ms((t=gr(t)).getUTCFullYear()%100,e,2)}function Yr(t,e){return Ms(t.getUTCFullYear()%1e4,e,4)}function Cr(t,e){var n=t.getUTCDay();return Ms((t=n>=4||0===n?ss(t):ss.ceil(t)).getUTCFullYear()%1e4,e,4)}function Xr(){return"+0000"}function Ir(){return"%"}function Dr(t){return+t}function fr(t){return Math.floor(+t/1e3)}function Lr(t){return new Date(t)}function wr(t){return t instanceof Date?+t:+new Date(+t)}function xr(t,e,n,l,i,a,s,r,o,c){var d=Pi(),u=d.invert,h=d.domain,m=c(".%L"),U=c(":%S"),p=c("%I:%M"),F=c("%I %p"),b=c("%a %d"),Z=c("%b %d"),N=c("%B"),R=c("%Y");function S(t){return(o(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Dr,s:fr,S:ar,u:sr,U:rr,V:cr,w:dr,W:ur,x:null,X:null,y:hr,Y:Ur,Z:Fr,"%":Ir},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:br,e:br,f:Wr,g:kr,G:Cr,H:Zr,I:Nr,j:Rr,L:Sr,m:Vr,M:Qr,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Dr,s:fr,S:yr,u:Tr,U:Mr,V:Er,w:Gr,W:Br,x:null,X:null,y:Jr,Y:Yr,Z:Xr,"%":Ir},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U.get(l[0].toLowerCase()),n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h.get(l[0].toLowerCase()),n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z.get(l[0].toLowerCase()),n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F.get(l[0].toLowerCase()),n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:ws,e:ws,f:js,g:Is,G:Xs,H:zs,I:zs,j:xs,L:_s,m:Ls,M:vs,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d.get(l[0].toLowerCase()),n+l[0].length):-1},q:fs,Q:Ps,s:As,S:Os,u:Js,U:ks,V:Ys,w:Bs,W:Cs,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:Is,Y:Xs,Z:Ds,"%":Ks};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=Ns(Rs(a.y,0,1))).getUTCDay(),l=i>4||0===i?ls.ceil(l):ls(l),l=ts.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=Zs(Rs(a.y,0,1))).getDay(),l=i>4||0===i?fa.ceil(l):fa(l),l=Xa.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Ns(Rs(a.y,0,1)).getUTCDay():Zs(Rs(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Ns(a)):Zs(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in Vs?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Ws=Ss.format,Ss.parse,Ss.utcFormat,Ss.utcParse;var Ar=Array.prototype.find;function Hr(){return this.firstElementChild}var qr=Array.prototype.filter;function $r(){return Array.from(this.children)}function to(t){return new Array(t.length)}function eo(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function no(t){return function(){return t}}function lo(t,e,n,l,i,a){for(var s,r=0,o=e.length,c=a.length;re?1:t>=e?0:NaN}eo.prototype={constructor:eo,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var oo="http://www.w3.org/1999/xhtml";const co={svg:"http://www.w3.org/2000/svg",xhtml:oo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function uo(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),co.hasOwnProperty(e)?{space:co[e],local:t}:t}function ho(t){return function(){this.removeAttribute(t)}}function mo(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Uo(t,e){return function(){this.setAttribute(t,e)}}function po(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Fo(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function bo(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Zo(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function No(t){return function(){this.style.removeProperty(t)}}function Ro(t,e,n){return function(){this.style.setProperty(t,e,n)}}function So(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function Wo(t,e){return t.style.getPropertyValue(e)||Zo(t).getComputedStyle(t,null).getPropertyValue(e)}function Vo(t){return function(){delete this[t]}}function Qo(t,e){return function(){this[t]=e}}function yo(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function To(t){return t.trim().split(/^|\s+/)}function Mo(t){return t.classList||new go(t)}function go(t){this._node=t,this._names=To(t.getAttribute("class")||"")}function Eo(t,e){for(var n=Mo(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Ao(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ec=[null];function nc(t,e){this._groups=t,this._parents=e}function lc(){return new nc([[document.documentElement]],ec)}nc.prototype=lc.prototype={constructor:nc,select:function(t){"function"!=typeof t&&(t=vr(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=ro);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?No:"function"==typeof e?So:Ro)(t,e,null==n?"":n)):Wo(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Vo:"function"==typeof e?yo:Qo)(t,e)):this.node()[t]},classed:function(t,e){var n=To(t+"");if(arguments.length<2){for(var l=Mo(this.node()),i=-1,a=n.length;++icc)if(Math.abs(d*r-o*c)>cc&&i){var h=n-a,m=l-s,U=r*r+o*o,p=h*h+m*m,F=Math.sqrt(U),b=Math.sqrt(u),Z=i*Math.tan((rc-Math.acos((U+u-p)/(2*F*b)))/2),N=Z/b,R=Z/F;Math.abs(N-1)>cc&&(this._+="L"+(t+N*c)+","+(e+N*d)),this._+="A"+i+","+i+",0,0,"+ +(d*h>c*m)+","+(this._x1=t+R*r)+","+(this._y1=e+R*o)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,l,i,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(l),r=n*Math.sin(l),o=t+s,c=e+r,d=1^a,u=a?l-i:i-l;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+o+","+c:(Math.abs(this._x1-o)>cc||Math.abs(this._y1-c)>cc)&&(this._+="L"+o+","+c),n&&(u<0&&(u=u%oc+oc),u>dc?this._+="A"+n+","+n+",0,1,"+d+","+(t-s)+","+(e-r)+"A"+n+","+n+",0,1,"+d+","+(this._x1=o)+","+(this._y1=c):u>cc&&(this._+="A"+n+","+n+",0,"+ +(u>=rc)+","+d+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +l+"h"+-n+"Z"},toString:function(){return this._}};const mc=hc;function Uc(t){return function(){return t}}var pc=Math.abs,Fc=Math.atan2,bc=Math.cos,Zc=Math.max,Nc=Math.min,Rc=Math.sin,Sc=Math.sqrt,Wc=1e-12,Vc=Math.PI,Qc=Vc/2,yc=2*Vc;function Tc(t){return t>1?0:t<-1?Vc:Math.acos(t)}function Mc(t){return t>=1?Qc:t<=-1?-Qc:Math.asin(t)}function gc(t){return t.innerRadius}function Ec(t){return t.outerRadius}function Gc(t){return t.startAngle}function Bc(t){return t.endAngle}function Jc(t){return t&&t.padAngle}function kc(t,e,n,l,i,a,s,r){var o=n-t,c=l-e,d=s-i,u=r-a,h=u*o-d*c;if(!(h*hG*G+B*B&&(Q=T,y=M),{cx:Q,cy:y,x01:-d,y01:-u,x11:Q*(i/S-1),y11:y*(i/S-1)}}function Cc(){var t=gc,e=Ec,n=Uc(0),l=null,i=Gc,a=Bc,s=Jc,r=null;function o(){var o,c,d=+t.apply(this,arguments),u=+e.apply(this,arguments),h=i.apply(this,arguments)-Qc,m=a.apply(this,arguments)-Qc,U=pc(m-h),p=m>h;if(r||(r=o=mc()),uWc)if(U>yc-Wc)r.moveTo(u*bc(h),u*Rc(h)),r.arc(0,0,u,h,m,!p),d>Wc&&(r.moveTo(d*bc(m),d*Rc(m)),r.arc(0,0,d,m,h,p));else{var F,b,Z=h,N=m,R=h,S=m,W=U,V=U,Q=s.apply(this,arguments)/2,y=Q>Wc&&(l?+l.apply(this,arguments):Sc(d*d+u*u)),T=Nc(pc(u-d)/2,+n.apply(this,arguments)),M=T,g=T;if(y>Wc){var E=Mc(y/d*Rc(Q)),G=Mc(y/u*Rc(Q));(W-=2*E)>Wc?(R+=E*=p?1:-1,S-=E):(W=0,R=S=(h+m)/2),(V-=2*G)>Wc?(Z+=G*=p?1:-1,N-=G):(V=0,Z=N=(h+m)/2)}var B=u*bc(Z),J=u*Rc(Z),k=d*bc(S),Y=d*Rc(S);if(T>Wc){var C,X=u*bc(N),I=u*Rc(N),D=d*bc(R),f=d*Rc(R);if(UWc?g>Wc?(F=Yc(D,f,B,J,u,g,p),b=Yc(X,I,k,Y,u,g,p),r.moveTo(F.cx+F.x01,F.cy+F.y01),gWc&&W>Wc?M>Wc?(F=Yc(k,Y,X,I,d,-M,p),b=Yc(B,J,D,f,d,-M,p),r.lineTo(F.cx+F.x01,F.cy+F.y01),Mt?1:e>=t?0:NaN}function zc(t){return t}function vc(){}function Oc(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function _c(t){this._context=t}function jc(t){return new _c(t)}function Kc(t){this._context=t}function Pc(t){this._context=t}function Ac(t){this._context=t}function Hc(t){return t<0?-1:1}function qc(t,e,n){var l=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(l||i<0&&-0),s=(n-t._y1)/(i||l<0&&-0),r=(a*i+s*l)/(l+i);return(Hc(a)+Hc(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(r))||0}function $c(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function td(t,e,n){var l=t._x0,i=t._y0,a=t._x1,s=t._y1,r=(a-l)/3;t._context.bezierCurveTo(l+r,i+r*e,a-r,s-r*n,a,s)}function ed(t){this._context=t}function nd(t){this._context=new ld(t)}function ld(t){this._context=t}function id(t){this._context=t}function ad(t){var e,n,l=t.length-1,i=new Array(l),a=new Array(l),s=new Array(l);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[l-1]=(t[l]+i[l-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var rd=new Date,od=new Date;function cd(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return rd.setTime(+e),od.setTime(+l),t(rd),t(od),Math.floor(n(rd,od))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}const dd=864e5,ud=6048e5;function hd(t){return cd((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/ud}))}var md=hd(0),Ud=hd(1),pd=hd(2),Fd=hd(3),bd=hd(4),Zd=hd(5),Nd=hd(6),Rd=(md.range,Ud.range,pd.range,Fd.range,bd.range,Zd.range,Nd.range,cd((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/dd}),(function(t){return t.getUTCDate()-1})));const Sd=Rd;function Wd(t){return cd((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/ud}))}Rd.range;var Vd=Wd(0),Qd=Wd(1),yd=Wd(2),Td=Wd(3),Md=Wd(4),gd=Wd(5),Ed=Wd(6),Gd=(Vd.range,Qd.range,yd.range,Td.range,Md.range,gd.range,Ed.range,cd((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/dd),(t=>t.getDate()-1)));const Bd=Gd;Gd.range;var Jd=cd((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Jd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cd((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const kd=Jd;Jd.range;var Yd=cd((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Yd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cd((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Cd=Yd;function Xd(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Id(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Dd(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}Yd.range;var fd,Ld,wd={"-":"",_:" ",0:"0"},xd=/^\s*\d+/,zd=/^%/,vd=/[\\^$*+?|[\]().{}]/g;function Od(t,e,n){var l=t<0?"-":"",i=(l?-t:t)+"",a=i.length;return l+(a[t.toLowerCase(),e])))}function Pd(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.w=+l[0],n+l[0].length):-1}function Ad(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.u=+l[0],n+l[0].length):-1}function Hd(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.U=+l[0],n+l[0].length):-1}function qd(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.V=+l[0],n+l[0].length):-1}function $d(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.W=+l[0],n+l[0].length):-1}function tu(t,e,n){var l=xd.exec(e.slice(n,n+4));return l?(t.y=+l[0],n+l[0].length):-1}function eu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.y=+l[0]+(+l[0]>68?1900:2e3),n+l[0].length):-1}function nu(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function lu(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function iu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function au(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function su(t,e,n){var l=xd.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function ru(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function ou(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function cu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function du(t,e,n){var l=xd.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function uu(t,e,n){var l=xd.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function hu(t,e,n){var l=zd.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function mu(t,e,n){var l=xd.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function Uu(t,e,n){var l=xd.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function pu(t,e){return Od(t.getDate(),e,2)}function Fu(t,e){return Od(t.getHours(),e,2)}function bu(t,e){return Od(t.getHours()%12||12,e,2)}function Zu(t,e){return Od(1+Bd.count(kd(t),t),e,3)}function Nu(t,e){return Od(t.getMilliseconds(),e,3)}function Ru(t,e){return Nu(t,e)+"000"}function Su(t,e){return Od(t.getMonth()+1,e,2)}function Wu(t,e){return Od(t.getMinutes(),e,2)}function Vu(t,e){return Od(t.getSeconds(),e,2)}function Qu(t){var e=t.getDay();return 0===e?7:e}function yu(t,e){return Od(Vd.count(kd(t)-1,t),e,2)}function Tu(t){var e=t.getDay();return e>=4||0===e?Md(t):Md.ceil(t)}function Mu(t,e){return t=Tu(t),Od(Md.count(kd(t),t)+(4===kd(t).getDay()),e,2)}function gu(t){return t.getDay()}function Eu(t,e){return Od(Qd.count(kd(t)-1,t),e,2)}function Gu(t,e){return Od(t.getFullYear()%100,e,2)}function Bu(t,e){return Od((t=Tu(t)).getFullYear()%100,e,2)}function Ju(t,e){return Od(t.getFullYear()%1e4,e,4)}function ku(t,e){var n=t.getDay();return Od((t=n>=4||0===n?Md(t):Md.ceil(t)).getFullYear()%1e4,e,4)}function Yu(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Od(e/60|0,"0",2)+Od(e%60,"0",2)}function Cu(t,e){return Od(t.getUTCDate(),e,2)}function Xu(t,e){return Od(t.getUTCHours(),e,2)}function Iu(t,e){return Od(t.getUTCHours()%12||12,e,2)}function Du(t,e){return Od(1+Sd.count(Cd(t),t),e,3)}function fu(t,e){return Od(t.getUTCMilliseconds(),e,3)}function Lu(t,e){return fu(t,e)+"000"}function wu(t,e){return Od(t.getUTCMonth()+1,e,2)}function xu(t,e){return Od(t.getUTCMinutes(),e,2)}function zu(t,e){return Od(t.getUTCSeconds(),e,2)}function vu(t){var e=t.getUTCDay();return 0===e?7:e}function Ou(t,e){return Od(md.count(Cd(t)-1,t),e,2)}function _u(t){var e=t.getUTCDay();return e>=4||0===e?bd(t):bd.ceil(t)}function ju(t,e){return t=_u(t),Od(bd.count(Cd(t),t)+(4===Cd(t).getUTCDay()),e,2)}function Ku(t){return t.getUTCDay()}function Pu(t,e){return Od(Ud.count(Cd(t)-1,t),e,2)}function Au(t,e){return Od(t.getUTCFullYear()%100,e,2)}function Hu(t,e){return Od((t=_u(t)).getUTCFullYear()%100,e,2)}function qu(t,e){return Od(t.getUTCFullYear()%1e4,e,4)}function $u(t,e){var n=t.getUTCDay();return Od((t=n>=4||0===n?bd(t):bd.ceil(t)).getUTCFullYear()%1e4,e,4)}function th(){return"+0000"}function eh(){return"%"}function nh(t){return+t}function lh(t){return Math.floor(+t/1e3)}fd=function(t){var e=t.dateTime,n=t.date,l=t.time,i=t.periods,a=t.days,s=t.shortDays,r=t.months,o=t.shortMonths,c=jd(i),d=Kd(i),u=jd(a),h=Kd(a),m=jd(s),U=Kd(s),p=jd(r),F=Kd(r),b=jd(o),Z=Kd(o),N={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return o[t.getMonth()]},B:function(t){return r[t.getMonth()]},c:null,d:pu,e:pu,f:Ru,g:Bu,G:ku,H:Fu,I:bu,j:Zu,L:Nu,m:Su,M:Wu,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nh,s:lh,S:Vu,u:Qu,U:yu,V:Mu,w:gu,W:Eu,x:null,X:null,y:Gu,Y:Ju,Z:Yu,"%":eh},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:Cu,e:Cu,f:Lu,g:Hu,G:$u,H:Xu,I:Iu,j:Du,L:fu,m:wu,M:xu,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nh,s:lh,S:zu,u:vu,U:Ou,V:ju,w:Ku,W:Pu,x:null,X:null,y:Au,Y:qu,Z:th,"%":eh},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U.get(l[0].toLowerCase()),n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h.get(l[0].toLowerCase()),n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z.get(l[0].toLowerCase()),n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F.get(l[0].toLowerCase()),n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:au,e:au,f:uu,g:eu,G:tu,H:ru,I:ru,j:su,L:du,m:iu,M:ou,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d.get(l[0].toLowerCase()),n+l[0].length):-1},q:lu,Q:mu,s:Uu,S:cu,u:Ad,U:Hd,V:qd,w:Pd,W:$d,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:eu,Y:tu,Z:nu,"%":hu};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=Id(Dd(a.y,0,1))).getUTCDay(),l=i>4||0===i?Ud.ceil(l):Ud(l),l=Sd.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=Xd(Dd(a.y,0,1))).getDay(),l=i>4||0===i?Qd.ceil(l):Qd(l),l=Bd.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Id(Dd(a.y,0,1)).getUTCDay():Xd(Dd(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Id(a)):Xd(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in wd?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Ld=fd.format,fd.parse,fd.utcFormat,fd.utcParse;var ih={value:()=>{}};function ah(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function oh(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--mh}()}finally{mh=0,function(){for(var t,e,n=uh,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:uh=e);hh=t,Mh(l)}(),bh=0}}function Th(){var t=Nh.now(),e=t-Fh;e>1e3&&(Zh-=e,Fh=t)}function Mh(t){mh||(Uh&&(Uh=clearTimeout(Uh)),t-bh>24?(t<1/0&&(Uh=setTimeout(yh,t-Nh.now()-Zh)),ph&&(ph=clearInterval(ph))):(ph||(Fh=Nh.now(),ph=setInterval(Th,1e3)),mh=1,Rh(yh)))}function gh(t,e,n){var l=new Vh;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}Vh.prototype=Qh.prototype={constructor:Vh,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Sh():+n)+(null==e?0:+e),this._next||hh===this||(hh?hh._next=this:uh=this,hh=this),this._call=t,this._time=n,Mh()},stop:function(){this._call&&(this._call=null,this._time=1/0,Mh())}};var Eh=dh("start","end","cancel","interrupt"),Gh=[];function Bh(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return gh(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function kh(t,e){var n=Yh(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Yh(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Ch(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Xh,Ih=180/Math.PI,Dh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fh(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Ch(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Ch(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Ch(t,n)},{i:r-2,x:Ch(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Ch(n,l)})),a=Ah.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Jh:kh;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var pm=ic.prototype.constructor;function Fm(t){return function(){this.style.removeProperty(t)}}function bm(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function Zm(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&bm(t,a,n)),l}return a._value=e,a}function Nm(t){return function(e){this.textContent=t.call(this,e)}}function Rm(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&Nm(l)),e}return l._value=t,l}var Sm=0;function Wm(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function Vm(){return++Sm}var Qm=ic.prototype;Wm.prototype=function(t){return ic().transition(t)}.prototype={constructor:Wm,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=vr(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},ic.prototype.transition=function(t){var e,n;t instanceof Wm?(e=t._id,t=t._name):(e=Vm(),(n=ym).time=Sh(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;ae?1:t>=e?0:NaN}fm.prototype={constructor:fm,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var _m="http://www.w3.org/1999/xhtml";const jm={svg:"http://www.w3.org/2000/svg",xhtml:_m,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Km(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),jm.hasOwnProperty(e)?{space:jm[e],local:t}:t}function Pm(t){return function(){this.removeAttribute(t)}}function Am(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Hm(t,e){return function(){this.setAttribute(t,e)}}function qm(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function $m(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function tU(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function eU(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function nU(t){return function(){this.style.removeProperty(t)}}function lU(t,e,n){return function(){this.style.setProperty(t,e,n)}}function iU(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function aU(t,e){return t.style.getPropertyValue(e)||eU(t).getComputedStyle(t,null).getPropertyValue(e)}function sU(t){return function(){delete this[t]}}function rU(t,e){return function(){this[t]=e}}function oU(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function cU(t){return t.trim().split(/^|\s+/)}function dU(t){return t.classList||new uU(t)}function uU(t){this._node=t,this._names=cU(t.getAttribute("class")||"")}function hU(t,e){for(var n=dU(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function kU(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var DU=[null];function fU(t,e){this._groups=t,this._parents=e}function LU(){return new fU([[document.documentElement]],DU)}fU.prototype=LU.prototype={constructor:fU,select:function(t){"function"!=typeof t&&(t=gm(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Om);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?nU:"function"==typeof e?iU:lU)(t,e,null==n?"":n)):aU(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?sU:"function"==typeof e?oU:rU)(t,e)):this.node()[t]},classed:function(t,e){var n=cU(t+"");if(arguments.length<2){for(var l=dU(this.node()),i=-1,a=n.length;++i{}};function zU(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function _U(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--HU}()}finally{HU=0,function(){for(var t,e,n=PU,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:PU=e);AU=t,up(l)}(),ep=0}}function dp(){var t=lp.now(),e=t-tp;e>1e3&&(np-=e,tp=t)}function up(t){HU||(qU&&(qU=clearTimeout(qU)),t-ep>24?(t<1/0&&(qU=setTimeout(cp,t-lp.now()-np)),$U&&($U=clearInterval($U))):($U||(tp=lp.now(),$U=setInterval(dp,1e3)),HU=1,ip(cp)))}function hp(t,e,n){var l=new rp;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}rp.prototype=op.prototype={constructor:rp,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?ap():+n)+(null==e?0:+e),this._next||AU===this||(AU?AU._next=this:PU=this,AU=this),this._call=t,this._time=n,up()},stop:function(){this._call&&(this._call=null,this._time=1/0,up())}};var mp=KU("start","end","cancel","interrupt"),Up=[];function pp(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return hp(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function bp(t,e){var n=Zp(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Zp(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Np(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Rp,Sp=180/Math.PI,Wp={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Vp(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Np(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Np(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Np(t,n)},{i:r-2,x:Np(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Ap(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Ap(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=fp.exec(t))?new $p(e[1],e[2],e[3],1):(e=Lp.exec(t))?new $p(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=wp.exec(t))?Ap(e[1],e[2],e[3],e[4]):(e=xp.exec(t))?Ap(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=zp.exec(t))?lF(e[1],e[2]/100,e[3]/100,1):(e=vp.exec(t))?lF(e[1],e[2]/100,e[3]/100,e[4]):Op.hasOwnProperty(t)?Pp(Op[t]):"transparent"===t?new $p(NaN,NaN,NaN,0):null}function Pp(t){return new $p(t>>16&255,t>>8&255,255&t,1)}function Ap(t,e,n,l){return l<=0&&(t=e=n=NaN),new $p(t,e,n,l)}function Hp(t){return t instanceof Jp||(t=Kp(t)),t?new $p((t=t.rgb()).r,t.g,t.b,t.opacity):new $p}function qp(t,e,n,l){return 1===arguments.length?Hp(t):new $p(t,e,n,null==l?1:l)}function $p(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function tF(){return"#"+nF(this.r)+nF(this.g)+nF(this.b)}function eF(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function nF(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function lF(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new aF(t,e,n,l)}function iF(t){if(t instanceof aF)return new aF(t.h,t.s,t.l,t.opacity);if(t instanceof Jp||(t=Kp(t)),!t)return new aF;if(t instanceof aF)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new aF(s,r,o,t.opacity)}function aF(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function sF(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rF(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}Gp(Jp,Kp,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:_p,formatHex:_p,formatHsl:function(){return iF(this).formatHsl()},formatRgb:jp,toString:jp}),Gp($p,qp,Bp(Jp,{brighter:function(t){return t=null==t?Yp:Math.pow(Yp,t),new $p(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?kp:Math.pow(kp,t),new $p(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:tF,formatHex:tF,formatRgb:eF,toString:eF})),Gp(aF,(function(t,e,n,l){return 1===arguments.length?iF(t):new aF(t,e,n,null==l?1:l)}),Bp(Jp,{brighter:function(t){return t=null==t?Yp:Math.pow(Yp,t),new aF(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?kp:Math.pow(kp,t),new aF(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new $p(sF(t>=240?t-240:t+120,i,l),sF(t,i,l),sF(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const oF=t=>()=>t;function cF(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):oF(isNaN(t)?e:t)}const dF=function t(e){var n=function(t){return 1==(t=+t)?cF:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):oF(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=qp(t)).r,(e=qp(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=cF(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function uF(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Np(n,l)})),a=mF.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Fp:bp;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var JF=wU.prototype.constructor;function kF(t){return function(){this.style.removeProperty(t)}}function YF(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function CF(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&YF(t,a,n)),l}return a._value=e,a}function XF(t){return function(e){this.textContent=t.call(this,e)}}function IF(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&XF(l)),e}return l._value=t,l}var DF=0;function fF(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function LF(){return++DF}var wF=wU.prototype;fF.prototype=function(t){return wU().transition(t)}.prototype={constructor:fF,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=gm(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},wU.prototype.transition=function(t){var e,n;t instanceof fF?(e=t._id,t=t._name):(e=LF(),(n=xF).time=ap(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;a0?$F(ub,--cb):0,rb--,10===db&&(rb=1,sb--),db}function Ub(){return db=cb2||Zb(db)>3?"":" "}function Sb(t,e){for(;--e&&Ub()&&!(db<48||db>102||db>57&&db<65||db>70&&db<97););return bb(t,Fb()+(e<6&&32==pb()&&32==Ub()))}function Wb(t){for(;Ub();)switch(db){case t:return cb;case 34:case 39:34!==t&&39!==t&&Wb(db);break;case 40:41===t&&Wb(t);break;case 92:Ub()}return cb}function Vb(t,e){for(;Ub()&&t+db!==57&&(t+db!==84||47!==pb()););return"/*"+bb(e,cb-1)+"*"+PF(47===t?t:Ub())}function Qb(t){for(;!Zb(pb());)Ub();return bb(t,cb)}function yb(t){return function(t){return ub="",t}(Tb("",null,null,null,[""],t=function(t){return sb=rb=1,ob=eb(ub=t),cb=0,[]}(t),0,[0],t))}function Tb(t,e,n,l,i,a,s,r,o){for(var c=0,d=0,u=s,h=0,m=0,U=0,p=1,F=1,b=1,Z=0,N="",R=i,S=a,W=l,V=N;F;)switch(U=Z,Z=Ub()){case 40:if(108!=U&&58==V.charCodeAt(u-1)){-1!=qF(V+=HF(Nb(Z),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:V+=Nb(Z);break;case 9:case 10:case 13:case 32:V+=Rb(U);break;case 92:V+=Sb(Fb()-1,7);continue;case 47:switch(pb()){case 42:case 47:lb(gb(Vb(Ub(),Fb()),e,n),o);break;default:V+="/"}break;case 123*p:r[c++]=eb(V)*b;case 125*p:case 59:case 0:switch(Z){case 0:case 125:F=0;case 59+d:m>0&&eb(V)-u&&lb(m>32?Eb(V+";",l,n,u-1):Eb(HF(V," ","")+";",l,n,u-2),o);break;case 59:V+=";";default:if(lb(W=Mb(V,e,n,c,d,i,r,N,R=[],S=[],u),a),123===Z)if(0===d)Tb(V,e,W,W,R,a,u,r,S);else switch(h){case 100:case 109:case 115:Tb(t,W,W,l&&lb(Mb(t,W,W,0,0,i,r,N,i,R=[],u),S),i,S,u,r,l?R:S);break;default:Tb(V,W,W,W,[""],S,0,r,S)}}c=d=m=0,p=b=1,N=V="",u=s;break;case 58:u=1+eb(V),m=U;default:if(p<1)if(123==Z)--p;else if(125==Z&&0==p++&&125==mb())continue;switch(V+=PF(Z),Z*p){case 38:b=d>0?1:(V+="\f",-1);break;case 44:r[c++]=(eb(V)-1)*b,b=1;break;case 64:45===pb()&&(V+=Nb(Ub())),h=pb(),d=u=eb(N=V+=Qb(Fb())),Z++;break;case 45:45===U&&2==eb(V)&&(p=0)}}return a}function Mb(t,e,n,l,i,a,s,r,o,c,d){for(var u=i-1,h=0===i?a:[""],m=nb(h),U=0,p=0,F=0;U0?h[b]+" "+Z:HF(Z,/&\f/g,h[b])))&&(o[F++]=N);return hb(t,e,n,0===i?_F:r,o,c,d)}function gb(t,e,n){return hb(t,e,n,OF,PF(db),tb(t,2,-2),0)}function Eb(t,e,n,l){return hb(t,e,n,jF,tb(t,0,l),tb(t,l+1,-1),l)}const Gb="8.14.0";var Bb=n(9609),Jb=n(7856),kb=n.n(Jb),Yb=function(t){var e=t.replace(/\\u[\dA-F]{4}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\u/g,""),16))}));return(e=(e=e.replace(/\\x([0-9a-f]{2})/gi,(function(t,e){return String.fromCharCode(parseInt(e,16))}))).replace(/\\[\d\d\d]{3}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))).replace(/\\[\d\d\d]{2}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))},Cb=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}var l=Yb(e);return(l=(l=(l=l.replace(/script>/gi,"#")).replace(/javascript:/gi,"#")).replace(/onerror=/gi,"onerror:")).replace(/')}if(void 0!==n)switch(p){case"flowchart":case"flowchart-v2":n(Q,pS.bindFunctions);break;case"gantt":n(Q,NW.bindFunctions);break;case"class":case"classDiagram":n(Q,ZN.bindFunctions);break;default:n(Q)}else s.debug("CB = undefined!");eQ.forEach((function(t){t()})),eQ=[];var M="sandbox"===r.securityLevel?"#i"+t:"#d"+t,g=ac(M).node();return null!==g&&"function"==typeof g.remove&&ac(M).node().remove(),Q},parse:function(t){var e=qZ(),n=zZ.detectInit(t,e);n&&s.debug("reinit ",n);var l,i=zZ.detectType(t,e);switch(s.debug("Type "+i),i){case"git":(l=LW()).parser.yy=IW;break;case"flowchart":case"flowchart-v2":pS.clear(),(l=bS()).parser.yy=pS;break;case"sequence":(l=JV()).parser.yy=tQ;break;case"gantt":(l=VW()).parser.yy=NW;break;case"class":case"classDiagram":(l=QN()).parser.yy=ZN;break;case"state":case"stateDiagram":(l=_Q()).parser.yy=ry;break;case"info":s.debug("info info info"),(l=eV()).parser.yy=$W;break;case"pie":s.debug("pie"),(l=aV()).parser.yy=cV;break;case"er":s.debug("er"),(l=CR()).parser.yy=kR;break;case"journey":s.debug("Journey"),(l=Cy()).parser.yy=ky;break;case"requirement":case"requirementDiagram":s.debug("RequirementDiagram"),(l=UV()).parser.yy=RV}return l.parser.yy.graphType=i,l.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},l.parse(t),l},parseDirective:function(t,e,n,l){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":aT={};break;case"type_directive":aT.type=e.toLowerCase();break;case"arg_directive":aT.args=JSON.parse(e);break;case"close_directive":(function(t,e,n){switch(s.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),s.debug("sanitize in handleDirective",e.args),wZ(e.args),s.debug("sanitize in handleDirective (done)",e.args),e.args,tN(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":s.warn("themeCss encountered");break;default:s.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}})(t,aT,l),aT=null}}catch(t){s.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),s.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),function(t){OZ=kZ({},t)}(t),t&&t.theme&&aZ[t.theme]?t.themeVariables=aZ[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=aZ.default.getThemeVariables(t.themeVariables));var e="object"===lT(t)?function(t){return jZ=kZ({},_Z),jZ=kZ(jZ,t),t.theme&&(jZ.themeVariables=aZ[t.theme].getThemeVariables(t.themeVariables)),PZ=AZ(jZ,KZ),jZ}(t):HZ();sT(e),r(e.logLevel)},reinitialize:function(){},getConfig:qZ,setConfig:function(t){return kZ(PZ,t),qZ()},getSiteConfig:HZ,updateSiteConfig:function(t){return jZ=kZ(jZ,t),AZ(jZ,KZ),jZ},reset:function(){eN()},globalReset:function(){eN(),sT(qZ())},defaultConfig:_Z});r(qZ().logLevel),eN(qZ());const oT=rT;var cT=function(){dT.startOnLoad?oT.getConfig().startOnLoad&&dT.init():void 0===dT.startOnLoad&&(s.debug("In start, no config"),oT.getConfig().startOnLoad&&dT.init())};"undefined"!=typeof document&&window.addEventListener("load",(function(){cT()}),!1);var dT={startOnLoad:!0,htmlLabels:!0,mermaidAPI:oT,parse:oT.parse,render:oT.render,init:function(){var t,e,n=this,l=oT.getConfig();arguments.length>=2?(void 0!==arguments[0]&&(dT.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],s.debug("Callback function found")):void 0!==l.mermaid&&("function"==typeof l.mermaid.callback?(e=l.mermaid.callback,s.debug("Callback function found")):s.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,s.debug("Start On Load before: "+dT.startOnLoad),void 0!==dT.startOnLoad&&(s.debug("Start On Load inner: "+dT.startOnLoad),oT.updateSiteConfig({startOnLoad:dT.startOnLoad})),void 0!==dT.ganttConfig&&oT.updateSiteConfig({gantt:dT.ganttConfig});for(var i,a=new zZ.initIdGeneratior(l.deterministicIds,l.deterministicIDSeed),r=function(l){var r=t[l];if(r.getAttribute("data-processed"))return"continue";r.setAttribute("data-processed",!0);var o="mermaid-".concat(a.next());i=r.innerHTML,i=zZ.entityDecode(i).trim().replace(//gi,"
");var c=zZ.detectInit(i);c&&s.debug("Detected early reinit: ",c);try{oT.render(o,i,(function(t,n){r.innerHTML=t,void 0!==e&&e(o),n&&n(r)}),r)}catch(t){s.warn("Syntax Error rendering"),s.warn(t),n.parseError&&n.parseError(t)}},o=0;o{t.exports={graphlib:n(6614),dagre:n(1463),intersect:n(8114),render:n(5787),util:n(8355),version:n(5689)}},9144:(t,e,n)=>{var l=n(8355);function i(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}t.exports={default:i,normal:i,vee:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])},undirected:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}}},5632:(t,e,n)=>{var l=n(8355),i=n(4322),a=n(1322);t.exports=function(t,e){var n,s=e.nodes().filter((function(t){return l.isSubgraph(e,t)})),r=t.selectAll("g.cluster").data(s,(function(t){return t}));return r.selectAll("*").remove(),r.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0),r=t.selectAll("g.cluster"),l.applyTransition(r,e).style("opacity",1),r.each((function(t){var n=e.node(t),l=i.select(this);i.select(this).append("rect");var s=l.append("g").attr("class","label");a(s,n,n.clusterLabelPos)})),r.selectAll("rect").each((function(t){var n=e.node(t),a=i.select(this);l.applyStyle(a,n.style)})),n=r.exit?r.exit():r.selectAll(null),l.applyTransition(n,e).style("opacity",0).remove(),r}},6315:(t,e,n)=>{var l=n(1034),i=n(1322),a=n(8355),s=n(4322);t.exports=function(t,e){var n,r=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0);return r.exit().remove(),r.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(r=t.selectAll("g.edgeLabel")).each((function(t){var n=s.select(this);n.select(".label").remove();var a=e.edge(t),r=i(n,e.edge(t),0,0).classed("label",!0),o=r.node().getBBox();a.labelId&&r.attr("id",a.labelId),l.has(a,"width")||(a.width=o.width),l.has(a,"height")||(a.height=o.height)})),n=r.exit?r.exit():r.selectAll(null),a.applyTransition(n,e).style("opacity",0).remove(),r}},940:(t,e,n)=>{var l=n(1034),i=n(7584),a=n(8355),s=n(4322);function r(t,e){var n=(s.line||s.svg.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}t.exports=function(t,e,n){var o=t.selectAll("g.edgePath").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0),c=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),i=e.node(t.v).elem;return r(n,l.range(n.points.length).map((function(){return e=(t=i).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(o,e);!function(t,e){var n=t.exit();a.applyTransition(n,e).style("opacity",0).remove()}(o,e);var d=void 0!==o.merge?o.merge(c):o;return a.applyTransition(d,e).style("opacity",1),d.each((function(t){var n=s.select(this),l=e.edge(t);l.elem=this,l.id&&n.attr("id",l.id),a.applyClass(n,l.class,(n.classed("update")?"update ":"")+"edgePath")})),d.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=l.uniqueId("arrowhead");var o=s.select(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e+")");var t,e})).style("fill","none");a.applyTransition(o,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),l=t.node(e.v),a=t.node(e.w),s=n.points.slice(1,n.points.length-1);return s.unshift(i(l,s[0])),s.push(i(a,s[s.length-1])),r(n,s)}(e,t)})),a.applyStyle(o,n.style)})),d.selectAll("defs *").remove(),d.selectAll("defs").each((function(t){var l=e.edge(t);(0,n[l.arrowhead])(s.select(this),l.arrowheadId,l,"arrowhead")})),d}},607:(t,e,n)=>{var l=n(1034),i=n(1322),a=n(8355),s=n(4322);t.exports=function(t,e,n){var r,o=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),c=t.selectAll("g.node").data(o,(function(t){return t})).classed("update",!0);return c.exit().remove(),c.enter().append("g").attr("class","node").style("opacity",0),(c=t.selectAll("g.node")).each((function(t){var r=e.node(t),o=s.select(this);a.applyClass(o,r.class,(o.classed("update")?"update ":"")+"node"),o.select("g.label").remove();var c=o.append("g").attr("class","label"),d=i(c,r),u=n[r.shape],h=l.pick(d.node().getBBox(),"width","height");r.elem=this,r.id&&o.attr("id",r.id),r.labelId&&c.attr("id",r.labelId),l.has(r,"width")&&(h.width=r.width),l.has(r,"height")&&(h.height=r.height),h.width+=r.paddingLeft+r.paddingRight,h.height+=r.paddingTop+r.paddingBottom,c.attr("transform","translate("+(r.paddingLeft-r.paddingRight)/2+","+(r.paddingTop-r.paddingBottom)/2+")");var m=s.select(this);m.select(".label-container").remove();var U=u(m,h,r).classed("label-container",!0);a.applyStyle(U,r.style);var p=U.node().getBBox();r.width=p.width,r.height=p.height})),r=c.exit?c.exit():c.selectAll(null),a.applyTransition(r,e).style("opacity",0).remove(),c}},4322:(t,e,n)=>{var l;if(!l)try{l=n(7188)}catch(t){}l||(l=window.d3),t.exports=l},1463:(t,e,n)=>{var l;try{l=n(681)}catch(t){}l||(l=window.dagre),t.exports=l},6614:(t,e,n)=>{var l;try{l=n(8282)}catch(t){}l||(l=window.graphlib),t.exports=l},8114:(t,e,n)=>{t.exports={node:n(7584),circle:n(6587),ellipse:n(3260),polygon:n(5337),rect:n(8049)}},6587:(t,e,n)=>{var l=n(3260);t.exports=function(t,e,n){return l(t,e,e,n)}},3260:t=>{t.exports=function(t,e,n,l){var i=t.x,a=t.y,s=i-l.x,r=a-l.y,o=Math.sqrt(e*e*r*r+n*n*s*s),c=Math.abs(e*n*s/o);l.x{function e(t,e){return t*e>0}t.exports=function(t,n,l,i){var a,s,r,o,c,d,u,h,m,U,p,F,b;if(a=n.y-t.y,r=t.x-n.x,c=n.x*t.y-t.x*n.y,m=a*l.x+r*l.y+c,U=a*i.x+r*i.y+c,!(0!==m&&0!==U&&e(m,U)||(s=i.y-l.y,o=l.x-i.x,d=i.x*l.y-l.x*i.y,u=s*t.x+o*t.y+d,h=s*n.x+o*n.y+d,0!==u&&0!==h&&e(u,h)||0==(p=a*o-s*r))))return F=Math.abs(p/2),{x:(b=r*d-o*c)<0?(b-F)/p:(b+F)/p,y:(b=s*c-a*d)<0?(b-F)/p:(b+F)/p}}},7584:t=>{t.exports=function(t,e){return t.intersect(e)}},5337:(t,e,n)=>{var l=n(6808);t.exports=function(t,e,n){var i=t.x,a=t.y,s=[],r=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach((function(t){r=Math.min(r,t.x),o=Math.min(o,t.y)}));for(var c=i-t.width/2-r,d=a-t.height/2-o,u=0;u1&&s.sort((function(t,e){var l=t.x-n.x,i=t.y-n.y,a=Math.sqrt(l*l+i*i),s=e.x-n.x,r=e.y-n.y,o=Math.sqrt(s*s+r*r);return a{t.exports=function(t,e){var n,l,i=t.x,a=t.y,s=e.x-i,r=e.y-a,o=t.width/2,c=t.height/2;return Math.abs(r)*o>Math.abs(s)*c?(r<0&&(c=-c),n=0===r?0:c*s/r,l=c):(s<0&&(o=-o),n=o,l=0===s?0:o*r/s),{x:i+n,y:a+l}}},8284:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}l.applyStyle(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var s=i.node().getBoundingClientRect();return n.attr("width",s.width).attr("height",s.height),n}},1322:(t,e,n)=>{var l=n(7318),i=n(8284),a=n(8287);t.exports=function(t,e,n){var s=e.label,r=t.append("g");"svg"===e.labelType?a(r,e):"string"!=typeof s||"html"===e.labelType?i(r,e):l(r,e);var o,c=r.node().getBBox();switch(n){case"top":o=-e.height/2;break;case"bottom":o=e.height/2-c.height;break;default:o=-c.height/2}return r.attr("transform","translate("+-c.width/2+","+o+")"),r}},8287:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){var n=t;return n.node().appendChild(e.label),l.applyStyle(n,e.labelStyle),n}},7318:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",l=!1,i=0;i{var l;try{l={defaults:n(1747),each:n(6073),isFunction:n(3560),isPlainObject:n(8630),pick:n(9722),has:n(8721),range:n(6026),uniqueId:n(3955)}}catch(t){}l||(l=window._),t.exports=l},6381:(t,e,n)=>{var l=n(8355),i=n(4322);t.exports=function(t,e){var n=t.filter((function(){return!i.select(this).classed("update")}));function a(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",a),l.applyTransition(t,e).style("opacity",1).attr("transform",a),l.applyTransition(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}},4577:(t,e,n)=>{var l=n(8355),i=n(4322),a=n(1034);t.exports=function(t,e){function n(t){var n=e.edge(t);return a.has(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),l.applyTransition(t,e).style("opacity",1).attr("transform",n)}},4849:(t,e,n)=>{var l=n(8355),i=n(4322);t.exports=function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),l.applyTransition(t,e).style("opacity",1).attr("transform",n)}},5787:(t,e,n)=>{var l=n(1034),i=n(4322),a=n(1463).layout;t.exports=function(){var t=n(607),e=n(5632),i=n(6315),c=n(940),d=n(4849),u=n(4577),h=n(6381),m=n(4418),U=n(9144),p=function(n,p){!function(t){t.nodes().forEach((function(e){var n=t.node(e);l.has(n,"label")||t.children(e).length||(n.label=e),l.has(n,"paddingX")&&l.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),l.has(n,"paddingY")&&l.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),l.has(n,"padding")&&l.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),l.defaults(n,s),l.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),l.has(n,"width")&&(n._prevWidth=n.width),l.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);l.has(n,"label")||(n.label=""),l.defaults(n,r)}))}(p);var F=o(n,"output"),b=o(F,"clusters"),Z=o(F,"edgePaths"),N=i(o(F,"edgeLabels"),p),R=t(o(F,"nodes"),p,m);a(p),d(R,p),u(N,p),c(Z,p,U);var S=e(b,p);h(S,p),function(t){l.each(t.nodes(),(function(e){var n=t.node(e);l.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,l.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(p)};return p.createNodes=function(e){return arguments.length?(t=e,p):t},p.createClusters=function(t){return arguments.length?(e=t,p):e},p.createEdgeLabels=function(t){return arguments.length?(i=t,p):i},p.createEdgePaths=function(t){return arguments.length?(c=t,p):c},p.shapes=function(t){return arguments.length?(m=t,p):m},p.arrows=function(t){return arguments.length?(U=t,p):U},p};var s={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},r={arrowhead:"normal",curve:i.curveLinear};function o(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},4418:(t,e,n)=>{var l=n(8049),i=n(3260),a=n(6587),s=n(5337);t.exports={rect:function(t,e,n){var i=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return l(n,t)},i},ellipse:function(t,e,n){var l=e.width/2,a=e.height/2,s=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",l).attr("ry",a);return n.intersect=function(t){return i(n,l,a,t)},s},circle:function(t,e,n){var l=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",l);return n.intersect=function(t){return a(n,l,t)},i},diamond:function(t,e,n){var l=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-l,y:0},{x:0,y:i},{x:l,y:0}],r=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return s(n,a,t)},r}}},8355:(t,e,n)=>{var l=n(1034);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(l.isPlainObject(n)){var i=n.transition;if(l.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},5689:t=>{t.exports="0.6.4"},7188:(t,e,n)=>{n.r(e),n.d(e,{FormatSpecifier:()=>oo,active:()=>$l,arc:()=>uS,area:()=>bS,areaRadial:()=>TS,ascending:()=>i,autoType:()=>Xs,axisBottom:()=>it,axisLeft:()=>at,axisRight:()=>lt,axisTop:()=>nt,bisect:()=>c,bisectLeft:()=>o,bisectRight:()=>r,bisector:()=>a,blob:()=>Fr,brush:()=>gi,brushSelection:()=>yi,brushX:()=>Ti,brushY:()=>Mi,buffer:()=>Zr,chord:()=>Ii,clientPoint:()=>Bn,cluster:()=>Tm,color:()=>je,contourDensity:()=>ss,contours:()=>ts,create:()=>DR,creator:()=>ie,cross:()=>h,csv:()=>Vr,csvFormat:()=>Vs,csvFormatBody:()=>Qs,csvFormatRow:()=>Ts,csvFormatRows:()=>ys,csvFormatValue:()=>Ms,csvParse:()=>Ss,csvParseRows:()=>Ws,cubehelix:()=>va,curveBasis:()=>sW,curveBasisClosed:()=>oW,curveBasisOpen:()=>dW,curveBundle:()=>hW,curveCardinal:()=>pW,curveCardinalClosed:()=>bW,curveCardinalOpen:()=>NW,curveCatmullRom:()=>WW,curveCatmullRomClosed:()=>QW,curveCatmullRomOpen:()=>TW,curveLinear:()=>mS,curveLinearClosed:()=>gW,curveMonotoneX:()=>XW,curveMonotoneY:()=>IW,curveNatural:()=>LW,curveStep:()=>xW,curveStepAfter:()=>vW,curveStepBefore:()=>zW,customEvent:()=>Fe,descending:()=>m,deviation:()=>F,dispatch:()=>ht,drag:()=>ms,dragDisable:()=>Me,dragEnable:()=>ge,dsv:()=>Wr,dsvFormat:()=>Ns,easeBack:()=>dr,easeBackIn:()=>or,easeBackInOut:()=>dr,easeBackOut:()=>cr,easeBounce:()=>ar,easeBounceIn:()=>ir,easeBounceInOut:()=>sr,easeBounceOut:()=>ar,easeCircle:()=>nr,easeCircleIn:()=>tr,easeCircleInOut:()=>nr,easeCircleOut:()=>er,easeCubic:()=>Pl,easeCubicIn:()=>jl,easeCubicInOut:()=>Pl,easeCubicOut:()=>Kl,easeElastic:()=>mr,easeElasticIn:()=>hr,easeElasticInOut:()=>Ur,easeElasticOut:()=>mr,easeExp:()=>$s,easeExpIn:()=>Hs,easeExpInOut:()=>$s,easeExpOut:()=>qs,easeLinear:()=>Ds,easePoly:()=>vs,easePolyIn:()=>xs,easePolyInOut:()=>vs,easePolyOut:()=>zs,easeQuad:()=>ws,easeQuadIn:()=>fs,easeQuadInOut:()=>ws,easeQuadOut:()=>Ls,easeSin:()=>Ps,easeSinIn:()=>js,easeSinInOut:()=>Ps,easeSinOut:()=>Ks,entries:()=>Ua,event:()=>de,extent:()=>b,forceCenter:()=>Jr,forceCollide:()=>Or,forceLink:()=>Kr,forceManyBody:()=>$r,forceRadial:()=>to,forceSimulation:()=>qr,forceX:()=>eo,forceY:()=>no,format:()=>Uo,formatDefaultLocale:()=>No,formatLocale:()=>Zo,formatPrefix:()=>po,formatSpecifier:()=>ro,geoAlbers:()=>wh,geoAlbersUsa:()=>xh,geoArea:()=>pc,geoAzimuthalEqualArea:()=>_h,geoAzimuthalEqualAreaRaw:()=>Oh,geoAzimuthalEquidistant:()=>Kh,geoAzimuthalEquidistantRaw:()=>jh,geoBounds:()=>rd,geoCentroid:()=>Nd,geoCircle:()=>Gd,geoClipAntimeridian:()=>xd,geoClipCircle:()=>zd,geoClipExtent:()=>jd,geoClipRectangle:()=>_d,geoConicConformal:()=>tm,geoConicConformalRaw:()=>$h,geoConicEqualArea:()=>Lh,geoConicEqualAreaRaw:()=>fh,geoConicEquidistant:()=>im,geoConicEquidistantRaw:()=>lm,geoContains:()=>Uu,geoDistance:()=>au,geoEqualEarth:()=>um,geoEqualEarthRaw:()=>dm,geoEquirectangular:()=>nm,geoEquirectangularRaw:()=>em,geoGnomonic:()=>mm,geoGnomonicRaw:()=>hm,geoGraticule:()=>bu,geoGraticule10:()=>Zu,geoIdentity:()=>Um,geoInterpolate:()=>Nu,geoLength:()=>nu,geoMercator:()=>Ah,geoMercatorRaw:()=>Ph,geoNaturalEarth1:()=>Fm,geoNaturalEarth1Raw:()=>pm,geoOrthographic:()=>Zm,geoOrthographicRaw:()=>bm,geoPath:()=>Wh,geoProjection:()=>Xh,geoProjectionMutator:()=>Ih,geoRotation:()=>Md,geoStereographic:()=>Rm,geoStereographicRaw:()=>Nm,geoStream:()=>nc,geoTransform:()=>Vh,geoTransverseMercator:()=>Wm,geoTransverseMercatorRaw:()=>Sm,gray:()=>Va,hcl:()=>Ja,hierarchy:()=>gm,histogram:()=>B,hsl:()=>an,html:()=>Gr,image:()=>yr,interpolate:()=>En,interpolateArray:()=>Sn,interpolateBasis:()=>cn,interpolateBasisClosed:()=>dn,interpolateBlues:()=>uR,interpolateBrBG:()=>VN,interpolateBuGn:()=>wN,interpolateBuPu:()=>zN,interpolateCividis:()=>WR,interpolateCool:()=>yR,interpolateCubehelix:()=>LU,interpolateCubehelixDefault:()=>VR,interpolateCubehelixLong:()=>wU,interpolateDate:()=>Vn,interpolateDiscrete:()=>TU,interpolateGnBu:()=>ON,interpolateGreens:()=>mR,interpolateGreys:()=>pR,interpolateHcl:()=>IU,interpolateHclLong:()=>DU,interpolateHsl:()=>kU,interpolateHslLong:()=>YU,interpolateHue:()=>MU,interpolateInferno:()=>XR,interpolateLab:()=>CU,interpolateMagma:()=>CR,interpolateNumber:()=>Qn,interpolateNumberArray:()=>Nn,interpolateObject:()=>yn,interpolateOrRd:()=>jN,interpolateOranges:()=>SR,interpolatePRGn:()=>yN,interpolatePiYG:()=>MN,interpolatePlasma:()=>IR,interpolatePuBu:()=>HN,interpolatePuBuGn:()=>PN,interpolatePuOr:()=>EN,interpolatePuRd:()=>$N,interpolatePurples:()=>bR,interpolateRainbow:()=>MR,interpolateRdBu:()=>BN,interpolateRdGy:()=>kN,interpolateRdPu:()=>eR,interpolateRdYlBu:()=>CN,interpolateRdYlGn:()=>IN,interpolateReds:()=>NR,interpolateRgb:()=>pn,interpolateRgbBasis:()=>bn,interpolateRgbBasisClosed:()=>Zn,interpolateRound:()=>gU,interpolateSinebow:()=>BR,interpolateSpectral:()=>fN,interpolateString:()=>gn,interpolateTransformCss:()=>Ul,interpolateTransformSvg:()=>pl,interpolateTurbo:()=>JR,interpolateViridis:()=>YR,interpolateWarm:()=>QR,interpolateYlGn:()=>aR,interpolateYlGnBu:()=>lR,interpolateYlOrBr:()=>rR,interpolateYlOrRd:()=>cR,interpolateZoom:()=>BU,interrupt:()=>al,interval:()=>uV,isoFormat:()=>oV,isoParse:()=>dV,json:()=>Mr,keys:()=>ha,lab:()=>Qa,lch:()=>Ba,line:()=>FS,lineRadial:()=>yS,linkHorizontal:()=>CS,linkRadial:()=>IS,linkVertical:()=>XS,local:()=>LR,map:()=>na,matcher:()=>bt,max:()=>C,mean:()=>X,median:()=>I,merge:()=>D,min:()=>f,mouse:()=>kn,namespace:()=>yt,namespaces:()=>Qt,nest:()=>la,now:()=>vn,pack:()=>$m,packEnclose:()=>Ym,packSiblings:()=>jm,pairs:()=>d,partition:()=>aU,path:()=>_i,permute:()=>L,pie:()=>RS,piecewise:()=>xU,pointRadial:()=>MS,polygonArea:()=>vU,polygonCentroid:()=>OU,polygonContains:()=>AU,polygonHull:()=>PU,polygonLength:()=>HU,precisionFixed:()=>Ro,precisionPrefix:()=>So,precisionRound:()=>Wo,quadtree:()=>fr,quantile:()=>J,quantize:()=>zU,radialArea:()=>TS,radialLine:()=>yS,randomBates:()=>lp,randomExponential:()=>ip,randomIrwinHall:()=>np,randomLogNormal:()=>ep,randomNormal:()=>tp,randomUniform:()=>$U,range:()=>V,rgb:()=>He,ribbon:()=>qi,scaleBand:()=>hp,scaleDiverging:()=>aN,scaleDivergingLog:()=>sN,scaleDivergingPow:()=>oN,scaleDivergingSqrt:()=>cN,scaleDivergingSymlog:()=>rN,scaleIdentity:()=>gp,scaleImplicit:()=>dp,scaleLinear:()=>Mp,scaleLog:()=>Ip,scaleOrdinal:()=>up,scalePoint:()=>Up,scalePow:()=>_p,scaleQuantile:()=>Kp,scaleQuantize:()=>Pp,scaleSequential:()=>qZ,scaleSequentialLog:()=>$Z,scaleSequentialPow:()=>eN,scaleSequentialQuantile:()=>lN,scaleSequentialSqrt:()=>nN,scaleSequentialSymlog:()=>tN,scaleSqrt:()=>jp,scaleSymlog:()=>wp,scaleThreshold:()=>Ap,scaleTime:()=>fZ,scaleUtc:()=>PZ,scan:()=>w,schemeAccent:()=>hN,schemeBlues:()=>dR,schemeBrBG:()=>WN,schemeBuGn:()=>LN,schemeBuPu:()=>xN,schemeCategory10:()=>uN,schemeDark2:()=>mN,schemeGnBu:()=>vN,schemeGreens:()=>hR,schemeGreys:()=>UR,schemeOrRd:()=>_N,schemeOranges:()=>RR,schemePRGn:()=>QN,schemePaired:()=>UN,schemePastel1:()=>pN,schemePastel2:()=>FN,schemePiYG:()=>TN,schemePuBu:()=>AN,schemePuBuGn:()=>KN,schemePuOr:()=>gN,schemePuRd:()=>qN,schemePurples:()=>FR,schemeRdBu:()=>GN,schemeRdGy:()=>JN,schemeRdPu:()=>tR,schemeRdYlBu:()=>YN,schemeRdYlGn:()=>XN,schemeReds:()=>ZR,schemeSet1:()=>bN,schemeSet2:()=>ZN,schemeSet3:()=>NN,schemeSpectral:()=>DN,schemeTableau10:()=>RN,schemeYlGn:()=>iR,schemeYlGnBu:()=>nR,schemeYlOrBr:()=>sR,schemeYlOrRd:()=>oR,select:()=>Qe,selectAll:()=>xR,selection:()=>Ve,selector:()=>Ut,selectorAll:()=>Ft,set:()=>ua,shuffle:()=>x,stack:()=>KW,stackOffsetDiverging:()=>AW,stackOffsetExpand:()=>PW,stackOffsetNone:()=>OW,stackOffsetSilhouette:()=>HW,stackOffsetWiggle:()=>qW,stackOrderAppearance:()=>$W,stackOrderAscending:()=>eV,stackOrderDescending:()=>lV,stackOrderInsideOut:()=>iV,stackOrderNone:()=>_W,stackOrderReverse:()=>aV,stratify:()=>dU,style:()=>Xt,sum:()=>z,svg:()=>Br,symbol:()=>nW,symbolCircle:()=>DS,symbolCross:()=>fS,symbolDiamond:()=>xS,symbolSquare:()=>jS,symbolStar:()=>_S,symbolTriangle:()=>PS,symbolWye:()=>tW,symbols:()=>eW,text:()=>Rr,thresholdFreedmanDiaconis:()=>k,thresholdScott:()=>Y,thresholdSturges:()=>G,tickFormat:()=>yp,tickIncrement:()=>g,tickStep:()=>E,ticks:()=>M,timeDay:()=>MF,timeDays:()=>gF,timeFormat:()=>mb,timeFormatDefaultLocale:()=>YZ,timeFormatLocale:()=>ub,timeFriday:()=>bF,timeFridays:()=>QF,timeHour:()=>GF,timeHours:()=>BF,timeInterval:()=>$p,timeMillisecond:()=>fF,timeMilliseconds:()=>LF,timeMinute:()=>kF,timeMinutes:()=>YF,timeMonday:()=>mF,timeMondays:()=>RF,timeMonth:()=>iF,timeMonths:()=>aF,timeParse:()=>Ub,timeSaturday:()=>ZF,timeSaturdays:()=>yF,timeSecond:()=>XF,timeSeconds:()=>IF,timeSunday:()=>hF,timeSundays:()=>NF,timeThursday:()=>FF,timeThursdays:()=>VF,timeTuesday:()=>UF,timeTuesdays:()=>SF,timeWednesday:()=>pF,timeWednesdays:()=>WF,timeWeek:()=>hF,timeWeeks:()=>NF,timeYear:()=>eF,timeYears:()=>nF,timeout:()=>qn,timer:()=>jn,timerFlush:()=>Kn,touch:()=>Jn,touches:()=>zR,transition:()=>vl,transpose:()=>v,tree:()=>bU,treemap:()=>WU,treemapBinary:()=>VU,treemapDice:()=>iU,treemapResquarify:()=>yU,treemapSlice:()=>ZU,treemapSliceDice:()=>QU,treemapSquarify:()=>SU,tsv:()=>Qr,tsvFormat:()=>Bs,tsvFormatBody:()=>Js,tsvFormatRow:()=>Ys,tsvFormatRows:()=>ks,tsvFormatValue:()=>Cs,tsvParse:()=>Es,tsvParseRows:()=>Gs,utcDay:()=>lb,utcDays:()=>ib,utcFormat:()=>pb,utcFriday:()=>jF,utcFridays:()=>tb,utcHour:()=>vZ,utcHours:()=>OZ,utcMillisecond:()=>fF,utcMilliseconds:()=>LF,utcMinute:()=>jZ,utcMinutes:()=>KZ,utcMonday:()=>zF,utcMondays:()=>AF,utcMonth:()=>wZ,utcMonths:()=>xZ,utcParse:()=>Fb,utcSaturday:()=>KF,utcSaturdays:()=>eb,utcSecond:()=>XF,utcSeconds:()=>IF,utcSunday:()=>xF,utcSundays:()=>PF,utcThursday:()=>_F,utcThursdays:()=>$F,utcTuesday:()=>vF,utcTuesdays:()=>HF,utcWednesday:()=>OF,utcWednesdays:()=>qF,utcWeek:()=>xF,utcWeeks:()=>PF,utcYear:()=>sb,utcYears:()=>rb,values:()=>ma,variance:()=>p,version:()=>l,voronoi:()=>HV,window:()=>Jt,xml:()=>Er,zip:()=>_,zoom:()=>uQ,zoomIdentity:()=>eQ,zoomTransform:()=>nQ});var l="5.16.0";function i(t,e){return te?1:t>=e?0:NaN}function a(t){var e;return 1===t.length&&(e=t,t=function(t,n){return i(e(t),n)}),{left:function(e,n,l,i){for(null==l&&(l=0),null==i&&(i=e.length);l>>1;t(e[a],n)<0?l=a+1:i=a}return l},right:function(e,n,l,i){for(null==l&&(l=0),null==i&&(i=e.length);l>>1;t(e[a],n)>0?i=a:l=a+1}return l}}}var s=a(i),r=s.right,o=s.left;const c=r;function d(t,e){null==e&&(e=u);for(var n=0,l=t.length-1,i=t[0],a=new Array(l<0?0:l);nt?1:e>=t?0:NaN}function U(t){return null===t?NaN:+t}function p(t,e){var n,l,i=t.length,a=0,s=-1,r=0,o=0;if(null==e)for(;++s1)return o/(a-1)}function F(t,e){var n=p(t,e);return n?Math.sqrt(n):n}function b(t,e){var n,l,i,a=t.length,s=-1;if(null==e){for(;++s=n)for(l=i=n;++sn&&(l=n),i=n)for(l=i=n;++sn&&(l=n),i0)return[t];if((l=e0)for(t=Math.ceil(t/s),e=Math.floor(e/s),a=new Array(i=Math.ceil(e-t+1));++r=0?(a>=Q?10:a>=y?5:a>=T?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Q?10:a>=y?5:a>=T?2:1)}function E(t,e,n){var l=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(l)/Math.LN10)),a=l/i;return a>=Q?i*=10:a>=y?i*=5:a>=T&&(i*=2),eu;)h.pop(),--m;var U,p=new Array(m+1);for(i=0;i<=m;++i)(U=p[i]=[]).x0=i>0?h[i-1]:d,U.x1=i=1)return+n(t[l-1],l-1,t);var l,i=(l-1)*e,a=Math.floor(i),s=+n(t[a],a,t);return s+(+n(t[a+1],a+1,t)-s)*(i-a)}}function k(t,e,n){return t=R.call(t,U).sort(i),Math.ceil((n-e)/(2*(J(t,.75)-J(t,.25))*Math.pow(t.length,-1/3)))}function Y(t,e,n){return Math.ceil((n-e)/(3.5*F(t)*Math.pow(t.length,-1/3)))}function C(t,e){var n,l,i=t.length,a=-1;if(null==e){for(;++a=n)for(l=n;++al&&(l=n)}else for(;++a=n)for(l=n;++al&&(l=n);return l}function X(t,e){var n,l=t.length,i=l,a=-1,s=0;if(null==e)for(;++a=0;)for(e=(l=t[i]).length;--e>=0;)n[--s]=l[e];return n}function f(t,e){var n,l,i=t.length,a=-1;if(null==e){for(;++a=n)for(l=n;++an&&(l=n)}else for(;++a=n)for(l=n;++an&&(l=n);return l}function L(t,e){for(var n=e.length,l=new Array(n);n--;)l[n]=t[e[n]];return l}function w(t,e){if(n=t.length){var n,l,a=0,s=0,r=t[s];for(null==e&&(e=i);++a=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function dt(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;ae?1:t>=e?0:NaN}Nt.prototype={constructor:Nt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Vt="http://www.w3.org/1999/xhtml";const Qt={svg:"http://www.w3.org/2000/svg",xhtml:Vt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function yt(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Qt.hasOwnProperty(e)?{space:Qt[e],local:t}:t}function Tt(t){return function(){this.removeAttribute(t)}}function Mt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function gt(t,e){return function(){this.setAttribute(t,e)}}function Et(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Gt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Bt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Jt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function kt(t){return function(){this.style.removeProperty(t)}}function Yt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Ct(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function Xt(t,e){return t.style.getPropertyValue(e)||Jt(t).getComputedStyle(t,null).getPropertyValue(e)}function It(t){return function(){delete this[t]}}function Dt(t,e){return function(){this[t]=e}}function ft(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Lt(t){return t.trim().split(/^|\s+/)}function wt(t){return t.classList||new xt(t)}function xt(t){this._node=t,this._names=Lt(t.getAttribute("class")||"")}function zt(t,e){for(var n=wt(t),l=-1,i=e.length;++l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ce={},de=null;function ue(t,e,n){return t=he(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function he(t,e,n){return function(l){var i=de;de=l;try{t.call(this,this.__data__,e,n)}finally{de=i}}}function me(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Ue(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=S&&(S=R+1);!(N=b[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Wt);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?kt:"function"==typeof e?Ct:Yt)(t,e,null==n?"":n)):Xt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?It:"function"==typeof e?ft:Dt)(t,e)):this.node()[t]},classed:function(t,e){var n=Lt(t+"");if(arguments.length<2){for(var l=wt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Pe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Pe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=De.exec(t))?new qe(e[1],e[2],e[3],1):(e=fe.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?Pe(e[1],e[2],e[3],e[4]):(e=we.exec(t))?Pe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=xe.exec(t))?nn(e[1],e[2]/100,e[3]/100,1):(e=ze.exec(t))?nn(e[1],e[2]/100,e[3]/100,e[4]):ve.hasOwnProperty(t)?Ke(ve[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ke(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Pe(t,e,n,l){return l<=0&&(t=e=n=NaN),new qe(t,e,n,l)}function Ae(t){return t instanceof Be||(t=je(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function He(t,e,n,l){return 1===arguments.length?Ae(t):new qe(t,e,n,null==l?1:l)}function qe(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function $e(){return"#"+en(this.r)+en(this.g)+en(this.b)}function tn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function en(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function nn(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new sn(t,e,n,l)}function ln(t){if(t instanceof sn)return new sn(t.h,t.s,t.l,t.opacity);if(t instanceof Be||(t=je(t)),!t)return new sn;if(t instanceof sn)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new sn(s,r,o,t.opacity)}function an(t,e,n,l){return 1===arguments.length?ln(t):new sn(t,e,n,null==l?1:l)}function sn(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function rn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function on(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}function cn(t){var e=t.length-1;return function(n){var l=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=l180||n<-180?n-360*Math.round(n/360):n):un(isNaN(t)?e:t)}function Un(t,e){var n=e-t;return n?hn(t,n):un(isNaN(t)?e:t)}Ee(Be,je,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHsl:function(){return ln(this).formatHsl()},formatRgb:_e,toString:_e}),Ee(qe,He,Ge(Be,{brighter:function(t){return t=null==t?ke:Math.pow(ke,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Je:Math.pow(Je,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$e,formatHex:$e,formatRgb:tn,toString:tn})),Ee(sn,an,Ge(Be,{brighter:function(t){return t=null==t?ke:Math.pow(ke,t),new sn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Je:Math.pow(Je,t),new sn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new qe(rn(t>=240?t-240:t+120,i,l),rn(t,i,l),rn(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const pn=function t(e){var n=function(t){return 1==(t=+t)?Un:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):un(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=He(t)).r,(e=He(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=Un(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function Fn(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;na&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Qn(n,l)})),a=Mn.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Xn}function Pn(){Ln=(fn=xn.now())+wn,Xn=In=0;try{Kn()}finally{Xn=0,function(){for(var t,e,n=Yn,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Yn=e);Cn=t,Hn(l)}(),Ln=0}}function An(){var t=xn.now(),e=t-fn;e>1e3&&(wn-=e,fn=t)}function Hn(t){Xn||(In&&(In=clearTimeout(In)),t-Ln>24?(t<1/0&&(In=setTimeout(Pn,t-xn.now()-wn)),Dn&&(Dn=clearInterval(Dn))):(Dn||(fn=xn.now(),Dn=setInterval(An,1e3)),Xn=1,zn(Pn)))}function qn(t,e,n){var l=new _n;return e=null==e?0:+e,l.restart((function(n){l.stop(),t(n+e)}),e,n),l}_n.prototype=jn.prototype={constructor:_n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?vn():+n)+(null==e?0:+e),this._next||Cn===this||(Cn?Cn._next=this:Yn=this,Cn=this),this._call=t,this._time=n,Hn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Hn())}};var $n=ht("start","end","cancel","interrupt"),tl=[];function el(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return qn(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function ll(t,e){var n=il(t,e);if(n.state>3)throw new Error("too late; already running");return n}function il(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function al(t,e){var n,l,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(l=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}var sl,rl,ol,cl,dl=180/Math.PI,ul={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function hl(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Qn(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Qn(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Qn(t,n)},{i:r-2,x:Qn(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?nl:ll;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var Xl=Ve.prototype.constructor;function Il(t){return function(){this.style.removeProperty(t)}}function Dl(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function fl(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&Dl(t,a,n)),l}return a._value=e,a}function Ll(t){return function(e){this.textContent=t.call(this,e)}}function wl(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&Ll(l)),e}return l._value=t,l}var xl=0;function zl(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function vl(t){return Ve().transition(t)}function Ol(){return++xl}var _l=Ve.prototype;function jl(t){return t*t*t}function Kl(t){return--t*t*t+1}function Pl(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}zl.prototype=vl.prototype={constructor:zl,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Ut(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s1&&n.name===e)return new zl([[t]],ql,e,+l);return null}function ti(t){return function(){return t}}function ei(t,e,n){this.target=t,this.type=e,this.selection=n}function ni(){de.stopImmediatePropagation()}function li(){de.preventDefault(),de.stopImmediatePropagation()}var ii={name:"drag"},ai={name:"space"},si={name:"handle"},ri={name:"center"};function oi(t){return[+t[0],+t[1]]}function ci(t){return[oi(t[0]),oi(t[1])]}function di(t){return function(e){return Jn(e,de.touches,t)}}var ui={name:"x",handles:["w","e"].map(Ni),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},hi={name:"y",handles:["n","s"].map(Ni),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},mi={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Ni),input:function(t){return null==t?null:ci(t)},output:function(t){return t}},Ui={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},pi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Fi={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},bi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Zi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Ni(t){return{type:t}}function Ri(){return!de.ctrlKey&&!de.button}function Si(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Wi(){return navigator.maxTouchPoints||"ontouchstart"in this}function Vi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Qi(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function yi(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function Ti(){return Ei(ui)}function Mi(){return Ei(hi)}function gi(){return Ei(mi)}function Ei(t){var e,n=Si,l=Ri,i=Wi,a=!0,s=ht("start","brush","end"),r=6;function o(e){var n=e.property("__brush",p).selectAll(".overlay").data([Ni("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Ui.overlay).merge(n).each((function(){var t=Vi(this).extent;Qe(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([Ni("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Ui.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var l=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));l.exit().remove(),l.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return Ui[t.type]})),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",m).on("touchend.brush touchcancel.brush",U).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=Qe(this),e=Vi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-r/2:e[0][0]-r/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-r/2:e[0][1]-r/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+r:r})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+r:r}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function d(t,e,n){var l=t.__brush.emitter;return!l||n&&l.clean?new u(t,e,n):l}function u(t,e,n){this.that=t,this.args=e,this.state=t.__brush,this.active=0,this.clean=n}function h(){if((!e||de.touches)&&l.apply(this,arguments)){var n,i,s,r,o,u,h,m,U,p,F,b=this,Z=de.target.__data__.type,N="selection"===(a&&de.metaKey?Z="overlay":Z)?ii:a&&de.altKey?ri:si,R=t===hi?null:bi[Z],S=t===ui?null:Zi[Z],W=Vi(b),V=W.extent,Q=W.selection,y=V[0][0],T=V[0][1],M=V[1][0],g=V[1][1],E=0,G=0,B=R&&S&&a&&de.shiftKey,J=de.touches?di(de.changedTouches[0].identifier):kn,k=J(b),Y=k,C=d(b,arguments,!0).beforestart();"overlay"===Z?(Q&&(U=!0),W.selection=Q=[[n=t===hi?y:k[0],s=t===ui?T:k[1]],[o=t===hi?M:n,h=t===ui?g:s]]):(n=Q[0][0],s=Q[0][1],o=Q[1][0],h=Q[1][1]),i=n,r=s,u=o,m=h;var X=Qe(b).attr("pointer-events","none"),I=X.selectAll(".overlay").attr("cursor",Ui[Z]);if(de.touches)C.moved=f,C.ended=w;else{var D=Qe(de.view).on("mousemove.brush",f,!0).on("mouseup.brush",w,!0);a&&D.on("keydown.brush",x,!0).on("keyup.brush",z,!0),Me(de.view)}ni(),al(b),c.call(b),C.start()}function f(){var t=J(b);!B||p||F||(Math.abs(t[0]-Y[0])>Math.abs(t[1]-Y[1])?F=!0:p=!0),Y=t,U=!0,li(),L()}function L(){var t;switch(E=Y[0]-k[0],G=Y[1]-k[1],N){case ai:case ii:R&&(E=Math.max(y-n,Math.min(M-o,E)),i=n+E,u=o+E),S&&(G=Math.max(T-s,Math.min(g-h,G)),r=s+G,m=h+G);break;case si:R<0?(E=Math.max(y-n,Math.min(M-n,E)),i=n+E,u=o):R>0&&(E=Math.max(y-o,Math.min(M-o,E)),i=n,u=o+E),S<0?(G=Math.max(T-s,Math.min(g-s,G)),r=s+G,m=h):S>0&&(G=Math.max(T-h,Math.min(g-h,G)),r=s,m=h+G);break;case ri:R&&(i=Math.max(y,Math.min(M,n-E*R)),u=Math.max(y,Math.min(M,o+E*R))),S&&(r=Math.max(T,Math.min(g,s-G*S)),m=Math.max(T,Math.min(g,h+G*S)))}u0&&(n=i-E),S<0?h=m-G:S>0&&(s=r-G),N=ai,I.attr("cursor",Ui.selection),L());break;default:return}li()}function z(){switch(de.keyCode){case 16:B&&(p=F=B=!1,L());break;case 18:N===ri&&(R<0?o=u:R>0&&(n=i),S<0?h=m:S>0&&(s=r),N=si,L());break;case 32:N===ai&&(de.altKey?(R&&(o=u-E*R,n=i+E*R),S&&(h=m-G*S,s=r+G*S),N=ri):(R<0?o=u:R>0&&(n=i),S<0?h=m:S>0&&(s=r),N=si),I.attr("cursor",Ui[Z]),L());break;default:return}li()}}function m(){d(this,arguments).moved()}function U(){d(this,arguments).ended()}function p(){var e=this.__brush||{selection:null};return e.extent=ci(n.apply(this,arguments)),e.dim=t,e}return o.move=function(e,n){e.selection?e.on("start.brush",(function(){d(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){d(this,arguments).end()})).tween("brush",(function(){var e=this,l=e.__brush,i=d(e,arguments),a=l.selection,s=t.input("function"==typeof n?n.apply(this,arguments):n,l.extent),r=En(a,s);function o(t){l.selection=1===t&&null===s?null:r(t),c.call(e),i.brush()}return null!==a&&null!==s?o:o(1)})):e.each((function(){var e=this,l=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,l):n,i.extent),s=d(e,l).beforestart();al(e),i.selection=null===a?null:a,c.call(e),s.start().brush().end()}))},o.clear=function(t){o.move(t,null)},u.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){Fe(new ei(o,e,t.output(this.state.selection)),s.apply,s,[e,this.that,this.args])}},o.extent=function(t){return arguments.length?(n="function"==typeof t?t:ti(ci(t)),o):n},o.filter=function(t){return arguments.length?(l="function"==typeof t?t:ti(!!t),o):l},o.touchable=function(t){return arguments.length?(i="function"==typeof t?t:ti(!!t),o):i},o.handleSize=function(t){return arguments.length?(r=+t,o):r},o.keyModifiers=function(t){return arguments.length?(a=!!t,o):a},o.on=function(){var t=s.on.apply(s,arguments);return t===s?o:t},o}var Gi=Math.cos,Bi=Math.sin,Ji=Math.PI,ki=Ji/2,Yi=2*Ji,Ci=Math.max;function Xi(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}function Ii(){var t=0,e=null,n=null,l=null;function i(i){var a,s,r,o,c,d,u=i.length,h=[],m=V(u),U=[],p=[],F=p.groups=new Array(u),b=new Array(u*u);for(a=0,c=-1;++cxi)if(Math.abs(d*r-o*c)>xi&&i){var h=n-a,m=l-s,U=r*r+o*o,p=h*h+m*m,F=Math.sqrt(U),b=Math.sqrt(u),Z=i*Math.tan((Li-Math.acos((U+u-p)/(2*F*b)))/2),N=Z/b,R=Z/F;Math.abs(N-1)>xi&&(this._+="L"+(t+N*c)+","+(e+N*d)),this._+="A"+i+","+i+",0,0,"+ +(d*h>c*m)+","+(this._x1=t+R*r)+","+(this._y1=e+R*o)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,l,i,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(l),r=n*Math.sin(l),o=t+s,c=e+r,d=1^a,u=a?l-i:i-l;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+o+","+c:(Math.abs(this._x1-o)>xi||Math.abs(this._y1-c)>xi)&&(this._+="L"+o+","+c),n&&(u<0&&(u=u%wi+wi),u>zi?this._+="A"+n+","+n+",0,1,"+d+","+(t-s)+","+(e-r)+"A"+n+","+n+",0,1,"+d+","+(this._x1=o)+","+(this._y1=c):u>xi&&(this._+="A"+n+","+n+",0,"+ +(u>=Li)+","+d+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +l+"h"+-n+"Z"},toString:function(){return this._}};const _i=Oi;function ji(t){return t.source}function Ki(t){return t.target}function Pi(t){return t.radius}function Ai(t){return t.startAngle}function Hi(t){return t.endAngle}function qi(){var t=ji,e=Ki,n=Pi,l=Ai,i=Hi,a=null;function s(){var s,r=Di.call(arguments),o=t.apply(this,r),c=e.apply(this,r),d=+n.apply(this,(r[0]=o,r)),u=l.apply(this,r)-ki,h=i.apply(this,r)-ki,m=d*Gi(u),U=d*Bi(u),p=+n.apply(this,(r[0]=c,r)),F=l.apply(this,r)-ki,b=i.apply(this,r)-ki;if(a||(a=s=_i()),a.moveTo(m,U),a.arc(0,0,d,u,h),u===F&&h===b||(a.quadraticCurveTo(0,0,p*Gi(F),p*Bi(F)),a.arc(0,0,p,F,b)),a.quadraticCurveTo(0,0,m,U),a.closePath(),s)return a=null,s+""||null}return s.radius=function(t){return arguments.length?(n="function"==typeof t?t:fi(+t),s):n},s.startAngle=function(t){return arguments.length?(l="function"==typeof t?t:fi(+t),s):l},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fi(+t),s):i},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(t){return arguments.length?(e=t,s):e},s.context=function(t){return arguments.length?(a=null==t?null:t,s):a},s}var $i="$";function ta(){}function ea(t,e){var n=new ta;if(t instanceof ta)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var l,i=-1,a=t.length;if(null==e)for(;++i=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var o,c,d,u=-1,h=n.length,m=l[i++],U=na(),p=s();++ul.length)return t;var a,r=i[n-1];return null!=e&&n>=l.length?a=t.entries():(a=[],t.each((function(t,e){a.push({key:e,values:s(t,n)})}))),null!=r?a.sort((function(t,e){return r(t.key,e.key)})):a}return n={object:function(t){return a(t,0,ia,aa)},map:function(t){return a(t,0,sa,ra)},entries:function(t){return s(a(t,0,sa,ra),0)},key:function(t){return l.push(t),n},sortKeys:function(t){return i[l.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}}function ia(){return{}}function aa(t,e,n){t[e]=n}function sa(){return na()}function ra(t,e,n){t.set(e,n)}function oa(){}var ca=na.prototype;function da(t,e){var n=new oa;if(t instanceof oa)t.each((function(t){n.add(t)}));else if(t){var l=-1,i=t.length;if(null==e)for(;++l.008856451679035631?Math.pow(t,1/3):t/Sa+Na}function Ma(t){return t>Ra?t*t*t:Sa*(t-Na)}function ga(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ea(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ga(t){if(t instanceof ka)return new ka(t.h,t.c,t.l,t.opacity);if(t instanceof ya||(t=Wa(t)),0===t.a&&0===t.b)return new ka(NaN,0l!=m>l&&n<(h-c)*(l-d)/(m-d)+c&&(i=-i)}return i}function Ha(t,e,n){var l,i,a,s;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[l=+(t[0]===e[0])],a=n[l],s=e[l],i<=a&&a<=s||s<=a&&a<=i)}function qa(){}var $a=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function ts(){var t=1,e=1,n=G,l=r;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(ja);else{var l=b(t),i=l[0],s=l[1];e=E(i,s,e),e=V(Math.floor(i/e)*e,Math.floor(s/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],r=[];return function(n,l,i){var a,r,o,c,d,u,h=new Array,m=new Array;for(a=r=-1,c=n[0]>=l,$a[c<<1].forEach(U);++a=l,$a[o|c<<1].forEach(U);for($a[c|0].forEach(U);++r=l,d=n[r*t]>=l,$a[c<<1|d<<2].forEach(U);++a=l,u=d,d=n[r*t+a+1]>=l,$a[o|c<<1|d<<2|u<<3].forEach(U);$a[c|d<<3].forEach(U)}for(a=-1,d=n[r*t]>=l,$a[d<<2].forEach(U);++a=l,$a[d<<2|u<<3].forEach(U);function U(t){var e,n,l=[t[0][0]+a,t[0][1]+r],o=[t[1][0]+a,t[1][1]+r],c=s(l),d=s(o);(e=m[c])?(n=h[d])?(delete m[e.end],delete h[n.start],e===n?(e.ring.push(o),i(e.ring)):h[e.start]=m[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete m[e.end],e.ring.push(o),m[e.end=d]=e):(e=h[d])?(n=m[c])?(delete h[e.start],delete m[n.end],e===n?(e.ring.push(o),i(e.ring)):h[n.start]=m[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(l),h[e.start=c]=e):h[c]=m[d]={start:c,end:d,ring:[l,o]}}$a[d<<3].forEach(U)}(n,i,(function(t){l(t,n,i),function(t){for(var e=0,n=t.length,l=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):r.push(t)})),r.forEach((function(t){for(var e,n=0,l=a.length;n0&&s0&&r0&&a>0))throw new Error("invalid size");return t=l,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Ka(_a.call(t)):Ka(t),i):n},i.smooth=function(t){return arguments.length?(l=t?r:qa,i):l===r},i}function es(t,e,n){for(var l=t.width,i=t.height,a=1+(n<<1),s=0;s=n&&(r>=a&&(o-=t.data[r-a+s*l]),e.data[r-n+s*l]=o/Math.min(r+1,l-1+a-r,a))}function ns(t,e,n){for(var l=t.width,i=t.height,a=1+(n<<1),s=0;s=n&&(r>=a&&(o-=t.data[s+(r-a)*l]),e.data[s+(r-n)*l]=o/Math.min(r+1,i-1+a-r,a))}function ls(t){return t[0]}function is(t){return t[1]}function as(){return 1}function ss(){var t=ls,e=is,n=as,l=960,i=500,a=20,s=2,r=3*a,o=l+2*r>>s,c=i+2*r>>s,d=Ka(20);function u(l){var i=new Float32Array(o*c),u=new Float32Array(o*c);l.forEach((function(l,a,d){var u=+t(l,a,d)+r>>s,h=+e(l,a,d)+r>>s,m=+n(l,a,d);u>=0&&u=0&&h>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s),es({width:o,height:c,data:i},{width:o,height:c,data:u},a>>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s),es({width:o,height:c,data:i},{width:o,height:c,data:u},a>>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s);var m=d(i);if(!Array.isArray(m)){var U=C(i);m=E(0,U,m),(m=V(0,Math.floor(U/m)*m,m)).shift()}return ts().thresholds(m).size([o,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*s),t.coordinates.forEach(m),t}function m(t){t.forEach(U)}function U(t){t.forEach(p)}function p(t){t[0]=t[0]*Math.pow(2,s)-r,t[1]=t[1]*Math.pow(2,s)-r}function F(){return o=l+2*(r=3*a)>>s,c=i+2*r>>s,u}return u.x=function(e){return arguments.length?(t="function"==typeof e?e:Ka(+e),u):t},u.y=function(t){return arguments.length?(e="function"==typeof t?t:Ka(+t),u):e},u.weight=function(t){return arguments.length?(n="function"==typeof t?t:Ka(+t),u):n},u.size=function(t){if(!arguments.length)return[l,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return l=e,i=n,F()},u.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return s=Math.floor(Math.log(t)/Math.LN2),F()},u.thresholds=function(t){return arguments.length?(d="function"==typeof t?t:Array.isArray(t)?Ka(_a.call(t)):Ka(t),u):d},u.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),F()},u}function rs(t){return function(){return t}}function os(t,e,n,l,i,a,s,r,o,c){this.target=t,this.type=e,this.subject=n,this.identifier=l,this.active=i,this.x=a,this.y=s,this.dx=r,this.dy=o,this._=c}function cs(){return!de.ctrlKey&&!de.button}function ds(){return this.parentNode}function us(t){return null==t?{x:de.x,y:de.y}:t}function hs(){return navigator.maxTouchPoints||"ontouchstart"in this}function ms(){var t,e,n,l,i=cs,a=ds,s=us,r=hs,o={},c=ht("start","drag","end"),d=0,u=0;function h(t){t.on("mousedown.drag",m).filter(r).on("touchstart.drag",F).on("touchmove.drag",b).on("touchend.drag touchcancel.drag",Z).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(){if(!l&&i.apply(this,arguments)){var s=N("mouse",a.apply(this,arguments),kn,this,arguments);s&&(Qe(de.view).on("mousemove.drag",U,!0).on("mouseup.drag",p,!0),Me(de.view),ye(),n=!1,t=de.clientX,e=de.clientY,s("start"))}}function U(){if(Te(),!n){var l=de.clientX-t,i=de.clientY-e;n=l*l+i*i>u}o.mouse("drag")}function p(){Qe(de.view).on("mousemove.drag mouseup.drag",null),ge(de.view,n),Te(),o.mouse("end")}function F(){if(i.apply(this,arguments)){var t,e,n=de.changedTouches,l=a.apply(this,arguments),s=n.length;for(t=0;t=a?o=!0:10===(l=t.charCodeAt(s++))?c=!0:13===l&&(c=!0,10===t.charCodeAt(s)&&++s),t.slice(i+1,e-1).replace(/""/g,'"')}for(;s9999?"+"+Zs(t,6):Zs(t,4)}(t.getUTCFullYear())+"-"+Zs(t.getUTCMonth()+1,2)+"-"+Zs(t.getUTCDate(),2)+(i?"T"+Zs(e,2)+":"+Zs(n,2)+":"+Zs(l,2)+"."+Zs(i,3)+"Z":l?"T"+Zs(e,2)+":"+Zs(n,2)+":"+Zs(l,2)+"Z":n||e?"T"+Zs(e,2)+":"+Zs(n,2)+"Z":"")}(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,a=l(t,(function(t,l){if(n)return n(t,l-1);i=t,n=e?function(t,e){var n=Fs(t);return function(l,i){return e(n(l),i,t)}}(t,e):Fs(t)}));return a.columns=i||[],a},parseRows:l,format:function(e,n){return null==n&&(n=bs(e)),[n.map(s).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=bs(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(a).join("\n")},formatRow:a,formatValue:s}}var Rs=Ns(","),Ss=Rs.parse,Ws=Rs.parseRows,Vs=Rs.format,Qs=Rs.formatBody,ys=Rs.formatRows,Ts=Rs.formatRow,Ms=Rs.formatValue,gs=Ns("\t"),Es=gs.parse,Gs=gs.parseRows,Bs=gs.format,Js=gs.formatBody,ks=gs.formatRows,Ys=gs.formatRow,Cs=gs.formatValue;function Xs(t){for(var e in t){var n,l,i=t[e].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(n=+i)){if(!(l=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Is&&l[4]&&!l[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=n;else i=null;t[e]=i}return t}var Is=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Ds(t){return+t}function fs(t){return t*t}function Ls(t){return t*(2-t)}function ws(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}var xs=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),zs=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),vs=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),Os=Math.PI,_s=Os/2;function js(t){return 1==+t?1:1-Math.cos(t*_s)}function Ks(t){return Math.sin(t*_s)}function Ps(t){return(1-Math.cos(Os*t))/2}function As(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Hs(t){return As(1-+t)}function qs(t){return 1-As(t)}function $s(t){return((t*=2)<=1?As(1-t):2-As(t-1))/2}function tr(t){return 1-Math.sqrt(1-t*t)}function er(t){return Math.sqrt(1- --t*t)}function nr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var lr=7.5625;function ir(t){return 1-ar(1-t)}function ar(t){return(t=+t)<.36363636363636365?lr*t*t:t<.7272727272727273?lr*(t-=.5454545454545454)*t+.75:t<.9090909090909091?lr*(t-=.8181818181818182)*t+.9375:lr*(t-=.9545454545454546)*t+.984375}function sr(t){return((t*=2)<=1?1-ar(1-t):ar(t-1)+1)/2}var rr=1.70158,or=function t(e){function n(t){return(t=+t)*t*(e*(t-1)+t)}return e=+e,n.overshoot=t,n}(rr),cr=function t(e){function n(t){return--t*t*((t+1)*e+t)+1}return e=+e,n.overshoot=t,n}(rr),dr=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(rr),ur=2*Math.PI,hr=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return e*As(- --t)*Math.sin((l-t)/n)}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3),mr=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return 1-e*As(t=+t)*Math.sin((t+l)/n)}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3),Ur=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return((t=2*t-1)<0?e*As(-t)*Math.sin((l-t)/n):2-e*As(t)*Math.sin((l+t)/n))/2}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3);function pr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function Fr(t,e){return fetch(t,e).then(pr)}function br(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function Zr(t,e){return fetch(t,e).then(br)}function Nr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function Rr(t,e){return fetch(t,e).then(Nr)}function Sr(t){return function(e,n,l){return 2===arguments.length&&"function"==typeof n&&(l=n,n=void 0),Rr(e,n).then((function(e){return t(e,l)}))}}function Wr(t,e,n,l){3===arguments.length&&"function"==typeof n&&(l=n,n=void 0);var i=Ns(t);return Rr(e,n).then((function(t){return i.parse(t,l)}))}var Vr=Sr(Ss),Qr=Sr(Es);function yr(t,e){return new Promise((function(n,l){var i=new Image;for(var a in e)i[a]=e[a];i.onerror=l,i.onload=function(){n(i)},i.src=t}))}function Tr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Mr(t,e){return fetch(t,e).then(Tr)}function gr(t){return function(e,n){return Rr(e,n).then((function(e){return(new DOMParser).parseFromString(e,t)}))}}const Er=gr("application/xml");var Gr=gr("text/html"),Br=gr("image/svg+xml");function Jr(t,e){var n;function l(){var l,i,a=n.length,s=0,r=0;for(l=0;l=(a=(p+b)/2))?p=a:b=a,(d=n>=(s=(F+Z)/2))?F=s:Z=s,i=m,!(m=m[u=d<<1|c]))return i[u]=U,t;if(r=+t._x.call(null,m.data),o=+t._y.call(null,m.data),e===r&&n===o)return U.next=m,i?i[u]=U:t._root=U,t;do{i=i?i[u]=new Array(4):t._root=new Array(4),(c=e>=(a=(p+b)/2))?p=a:b=a,(d=n>=(s=(F+Z)/2))?F=s:Z=s}while((u=d<<1|c)==(h=(o>=s)<<1|r>=a));return i[h]=m,i[u]=U,t}function Xr(t,e,n,l,i){this.node=t,this.x0=e,this.y0=n,this.x1=l,this.y1=i}function Ir(t){return t[0]}function Dr(t){return t[1]}function fr(t,e,n){var l=new Lr(null==e?Ir:e,null==n?Dr:n,NaN,NaN,NaN,NaN);return null==t?l:l.addAll(t)}function Lr(t,e,n,l,i,a){this._x=t,this._y=e,this._x0=n,this._y0=l,this._x1=i,this._y1=a,this._root=void 0}function wr(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var xr=fr.prototype=Lr.prototype;function zr(t){return t.x+t.vx}function vr(t){return t.y+t.vy}function Or(t){var e,n,l=1,i=1;function a(){for(var t,a,r,o,c,d,u,h=e.length,m=0;mo+m||ic+m||ar.index){var U=o-s.x-s.vx,p=c-s.y-s.vy,F=U*U+p*p;Ft.r&&(t.r=t[e].r)}function r(){if(e){var l,i,a=e.length;for(n=new Array(a),l=0;ld&&(d=l),iu&&(u=i));if(o>d||c>u)return this;for(this.cover(o,c).cover(d,u),n=0;nt||t>=i||l>e||e>=a;)switch(r=(eh||(a=o.y0)>m||(s=o.x1)=b)<<1|t>=F)&&(o=U[U.length-1],U[U.length-1]=U[U.length-1-c],U[U.length-1-c]=o)}else{var Z=t-+this._x.call(null,p.data),N=e-+this._y.call(null,p.data),R=Z*Z+N*N;if(R=(r=(U+F)/2))?U=r:F=r,(d=s>=(o=(p+b)/2))?p=o:b=o,e=m,!(m=m[u=d<<1|c]))return this;if(!m.length)break;(e[u+1&3]||e[u+2&3]||e[u+3&3])&&(n=e,h=u)}for(;m.data!==t;)if(l=m,!(m=m.next))return this;return(i=m.next)&&delete m.next,l?(i?l.next=i:delete l.next,this):e?(i?e[u]=i:delete e[u],(m=e[0]||e[1]||e[2]||e[3])&&m===(e[3]||e[2]||e[1]||e[0])&&!m.length&&(n?n[h]=m:this._root=m),this):(this._root=i,this)},xr.removeAll=function(t){for(var e=0,n=t.length;e1?(null==n?r.remove(t):r.set(t,m(n)),e):r.get(t)},find:function(e,n,l){var i,a,s,r,o,c=0,d=t.length;for(null==l?l=1/0:l*=l,c=0;c1?(c.on(t,n),e):c.on(t)}}}function $r(){var t,e,n,l,i=kr(-30),a=1,s=1/0,r=.81;function o(l){var i,a=t.length,s=fr(t,Pr,Ar).visitAfter(d);for(n=l,i=0;i=s)){(t.data!==e||t.next)&&(0===d&&(m+=(d=Yr())*d),0===u&&(m+=(u=Yr())*u),m1?l[0]+l.slice(2):l,+t.slice(n+1)]}function io(t){return(t=lo(Math.abs(t)))?t[1]:NaN}var ao,so=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ro(t){if(!(e=so.exec(t)))throw new Error("invalid format: "+t);var e;return new oo({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function oo(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function co(t,e){var n=lo(t,e);if(!n)return t+"";var l=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+l:l.length>i+1?l.slice(0,i+1)+"."+l.slice(i+1):l+new Array(i-l.length+2).join("0")}ro.prototype=oo.prototype,oo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const uo={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return co(100*t,e)},r:co,s:function(t,e){var n=lo(t,e);if(!n)return t+"";var l=n[0],i=n[1],a=i-(ao=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=l.length;return a===s?l:a>s?l+new Array(a-s+1).join("0"):a>0?l.slice(0,a)+"."+l.slice(a):"0."+new Array(1-a).join("0")+lo(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ho(t){return t}var mo,Uo,po,Fo=Array.prototype.map,bo=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Zo(t){var e,n,l=void 0===t.grouping||void 0===t.thousands?ho:(e=Fo.call(t.grouping,Number),n=t.thousands+"",function(t,l){for(var i=t.length,a=[],s=0,r=e[0],o=0;i>0&&r>0&&(o+r+1>l&&(r=Math.max(1,l-o)),a.push(t.substring(i-=r,i+r)),!((o+=r+1)>l));)r=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",r=void 0===t.numerals?ho:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Fo.call(t.numerals,String)),o=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"-":t.minus+"",d=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=ro(t)).fill,n=t.align,u=t.sign,h=t.symbol,m=t.zero,U=t.width,p=t.comma,F=t.precision,b=t.trim,Z=t.type;"n"===Z?(p=!0,Z="g"):uo[Z]||(void 0===F&&(F=12),b=!0,Z="g"),(m||"0"===e&&"="===n)&&(m=!0,e="0",n="=");var N="$"===h?i:"#"===h&&/[boxX]/.test(Z)?"0"+Z.toLowerCase():"",R="$"===h?a:/[%p]/.test(Z)?o:"",S=uo[Z],W=/[defgprs%]/.test(Z);function V(t){var i,a,o,h=N,V=R;if("c"===Z)V=S(t)+V,t="";else{var Q=(t=+t)<0||1/t<0;if(t=isNaN(t)?d:S(Math.abs(t),F),b&&(t=function(t){t:for(var e,n=t.length,l=1,i=-1;l0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),Q&&0==+t&&"+"!==u&&(Q=!1),h=(Q?"("===u?u:c:"-"===u||"("===u?"":u)+h,V=("s"===Z?bo[8+ao/3]:"")+V+(Q&&"("===u?")":""),W)for(i=-1,a=t.length;++i(o=t.charCodeAt(i))||o>57){V=(46===o?s+t.slice(i+1):t.slice(i))+V,t=t.slice(0,i);break}}p&&!m&&(t=l(t,1/0));var y=h.length+t.length+V.length,T=y>1)+h+t+V+T.slice(y);break;default:t=T+h+t+V}return r(t)}return F=void 0===F?6:/[gprs]/.test(Z)?Math.max(1,Math.min(21,F)):Math.max(0,Math.min(20,F)),V.toString=function(){return t+""},V}return{format:u,formatPrefix:function(t,e){var n=u(((t=ro(t)).type="f",t)),l=3*Math.max(-8,Math.min(8,Math.floor(io(e)/3))),i=Math.pow(10,-l),a=bo[8+l/3];return function(t){return n(i*t)+a}}}}function No(t){return mo=Zo(t),Uo=mo.format,po=mo.formatPrefix,mo}function Ro(t){return Math.max(0,-io(Math.abs(t)))}function So(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(io(e)/3)))-io(Math.abs(t)))}function Wo(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,io(e)-io(t))+1}function Vo(){return new Qo}function Qo(){this.reset()}No({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Qo.prototype={constructor:Qo,reset:function(){this.s=this.t=0},add:function(t){To(yo,t,this.t),To(this,yo.s,this.s),this.s?this.t+=yo.t:this.s=yo.t},valueOf:function(){return this.s}};var yo=new Qo;function To(t,e,n){var l=t.s=e+n,i=l-e,a=l-i;t.t=e-a+(n-i)}var Mo=1e-6,go=1e-12,Eo=Math.PI,Go=Eo/2,Bo=Eo/4,Jo=2*Eo,ko=180/Eo,Yo=Eo/180,Co=Math.abs,Xo=Math.atan,Io=Math.atan2,Do=Math.cos,fo=Math.ceil,Lo=Math.exp,wo=(Math.floor,Math.log),xo=Math.pow,zo=Math.sin,vo=Math.sign||function(t){return t>0?1:t<0?-1:0},Oo=Math.sqrt,_o=Math.tan;function jo(t){return t>1?0:t<-1?Eo:Math.acos(t)}function Ko(t){return t>1?Go:t<-1?-Go:Math.asin(t)}function Po(t){return(t=zo(t/2))*t}function Ao(){}function Ho(t,e){t&&$o.hasOwnProperty(t.type)&&$o[t.type](t,e)}var qo={Feature:function(t,e){Ho(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,l=-1,i=n.length;++l=0?1:-1,i=l*n,a=Do(e=(e*=Yo)/2+Bo),s=zo(e),r=rc*s,o=sc*a+r*Do(i),c=r*l*zo(i);oc.add(Io(c,o)),ac=t,sc=a,rc=s}function pc(t){return cc.reset(),nc(t,dc),2*cc}function Fc(t){return[Io(t[1],t[0]),Ko(t[2])]}function bc(t){var e=t[0],n=t[1],l=Do(n);return[l*Do(e),l*zo(e),zo(n)]}function Zc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Nc(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Rc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Sc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Wc(t){var e=Oo(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var Vc,Qc,yc,Tc,Mc,gc,Ec,Gc,Bc,Jc,kc,Yc,Cc,Xc,Ic,Dc,fc,Lc,wc,xc,zc,vc,Oc,_c,jc,Kc,Pc=Vo(),Ac={point:Hc,lineStart:$c,lineEnd:td,polygonStart:function(){Ac.point=ed,Ac.lineStart=nd,Ac.lineEnd=ld,Pc.reset(),dc.polygonStart()},polygonEnd:function(){dc.polygonEnd(),Ac.point=Hc,Ac.lineStart=$c,Ac.lineEnd=td,oc<0?(Vc=-(yc=180),Qc=-(Tc=90)):Pc>Mo?Tc=90:Pc<-1e-6&&(Qc=-90),Jc[0]=Vc,Jc[1]=yc},sphere:function(){Vc=-(yc=180),Qc=-(Tc=90)}};function Hc(t,e){Bc.push(Jc=[Vc=t,yc=t]),eTc&&(Tc=e)}function qc(t,e){var n=bc([t*Yo,e*Yo]);if(Gc){var l=Nc(Gc,n),i=Nc([l[1],-l[0],0],l);Wc(i),i=Fc(i);var a,s=t-Mc,r=s>0?1:-1,o=i[0]*ko*r,c=Co(s)>180;c^(r*McTc&&(Tc=a):c^(r*Mc<(o=(o+360)%360-180)&&oTc&&(Tc=e)),c?tid(Vc,yc)&&(yc=t):id(t,yc)>id(Vc,yc)&&(Vc=t):yc>=Vc?(tyc&&(yc=t)):t>Mc?id(Vc,t)>id(Vc,yc)&&(yc=t):id(t,yc)>id(Vc,yc)&&(Vc=t)}else Bc.push(Jc=[Vc=t,yc=t]);eTc&&(Tc=e),Gc=n,Mc=t}function $c(){Ac.point=qc}function td(){Jc[0]=Vc,Jc[1]=yc,Ac.point=Hc,Gc=null}function ed(t,e){if(Gc){var n=t-Mc;Pc.add(Co(n)>180?n+(n>0?360:-360):n)}else gc=t,Ec=e;dc.point(t,e),qc(t,e)}function nd(){dc.lineStart()}function ld(){ed(gc,Ec),dc.lineEnd(),Co(Pc)>Mo&&(Vc=-(yc=180)),Jc[0]=Vc,Jc[1]=yc,Gc=null}function id(t,e){return(e-=t)<0?e+360:e}function ad(t,e){return t[0]-e[0]}function sd(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eid(l[0],l[1])&&(l[1]=i[1]),id(i[0],l[1])>id(l[0],l[1])&&(l[0]=i[0])):a.push(l=i);for(s=-1/0,e=0,l=a[n=a.length-1];e<=n;l=i,++e)i=a[e],(r=id(l[1],i[0]))>s&&(s=r,Vc=i[0],yc=l[1])}return Bc=Jc=null,Vc===1/0||Qc===1/0?[[NaN,NaN],[NaN,NaN]]:[[Vc,Qc],[yc,Tc]]}var od={sphere:Ao,point:cd,lineStart:ud,lineEnd:Ud,polygonStart:function(){od.lineStart=pd,od.lineEnd=Fd},polygonEnd:function(){od.lineStart=ud,od.lineEnd=Ud}};function cd(t,e){t*=Yo;var n=Do(e*=Yo);dd(n*Do(t),n*zo(t),zo(e))}function dd(t,e,n){++kc,Cc+=(t-Cc)/kc,Xc+=(e-Xc)/kc,Ic+=(n-Ic)/kc}function ud(){od.point=hd}function hd(t,e){t*=Yo;var n=Do(e*=Yo);_c=n*Do(t),jc=n*zo(t),Kc=zo(e),od.point=md,dd(_c,jc,Kc)}function md(t,e){t*=Yo;var n=Do(e*=Yo),l=n*Do(t),i=n*zo(t),a=zo(e),s=Io(Oo((s=jc*a-Kc*i)*s+(s=Kc*l-_c*a)*s+(s=_c*i-jc*l)*s),_c*l+jc*i+Kc*a);Yc+=s,Dc+=s*(_c+(_c=l)),fc+=s*(jc+(jc=i)),Lc+=s*(Kc+(Kc=a)),dd(_c,jc,Kc)}function Ud(){od.point=cd}function pd(){od.point=bd}function Fd(){Zd(vc,Oc),od.point=cd}function bd(t,e){vc=t,Oc=e,t*=Yo,e*=Yo,od.point=Zd;var n=Do(e);_c=n*Do(t),jc=n*zo(t),Kc=zo(e),dd(_c,jc,Kc)}function Zd(t,e){t*=Yo;var n=Do(e*=Yo),l=n*Do(t),i=n*zo(t),a=zo(e),s=jc*a-Kc*i,r=Kc*l-_c*a,o=_c*i-jc*l,c=Oo(s*s+r*r+o*o),d=Ko(c),u=c&&-d/c;wc+=u*s,xc+=u*r,zc+=u*o,Yc+=d,Dc+=d*(_c+(_c=l)),fc+=d*(jc+(jc=i)),Lc+=d*(Kc+(Kc=a)),dd(_c,jc,Kc)}function Nd(t){kc=Yc=Cc=Xc=Ic=Dc=fc=Lc=wc=xc=zc=0,nc(t,od);var e=wc,n=xc,l=zc,i=e*e+n*n+l*l;return iEo?t+Math.round(-t/Jo)*Jo:t,e]}function Vd(t,e,n){return(t%=Jo)?e||n?Sd(yd(t),Td(e,n)):yd(t):e||n?Td(e,n):Wd}function Qd(t){return function(e,n){return[(e+=t)>Eo?e-Jo:e<-Eo?e+Jo:e,n]}}function yd(t){var e=Qd(t);return e.invert=Qd(-t),e}function Td(t,e){var n=Do(t),l=zo(t),i=Do(e),a=zo(e);function s(t,e){var s=Do(e),r=Do(t)*s,o=zo(t)*s,c=zo(e),d=c*n+r*l;return[Io(o*i-d*a,r*n-c*l),Ko(d*i+o*a)]}return s.invert=function(t,e){var s=Do(e),r=Do(t)*s,o=zo(t)*s,c=zo(e),d=c*i-o*a;return[Io(o*i+c*a,r*n+d*l),Ko(d*n-r*l)]},s}function Md(t){function e(e){return(e=t(e[0]*Yo,e[1]*Yo))[0]*=ko,e[1]*=ko,e}return t=Vd(t[0]*Yo,t[1]*Yo,t.length>2?t[2]*Yo:0),e.invert=function(e){return(e=t.invert(e[0]*Yo,e[1]*Yo))[0]*=ko,e[1]*=ko,e},e}function gd(t,e,n,l,i,a){if(n){var s=Do(e),r=zo(e),o=l*n;null==i?(i=e+l*Jo,a=e-o/2):(i=Ed(s,i),a=Ed(s,a),(l>0?ia)&&(i+=l*Jo));for(var c,d=i;l>0?d>a:d1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function Jd(t,e){return Co(t[0]-e[0])=0;--a)i.point((d=c[a])[0],d[1]);else l(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,m=!m}while(!h.v);i.lineEnd()}}}function Cd(t){if(e=t.length){for(var e,n,l=0,i=t[0];++l=0?1:-1,y=Q*V,T=y>Eo,M=p*S;if(Xd.add(Io(M*Q*zo(y),F*W+M*Do(y))),s+=T?V+Q*Jo:V,T^m>=n^N>=n){var g=Nc(bc(h),bc(Z));Wc(g);var E=Nc(a,g);Wc(E);var G=(T^V>=0?-1:1)*Ko(E[2]);(l>G||l===G&&(g[0]||g[1]))&&(r+=T^V>=0?1:-1)}}return(s<-1e-6||s0){for(u||(i.polygonStart(),u=!0),i.lineStart(),t=0;t1&&2&o&&h.push(h.pop().concat(h.shift())),s.push(h.filter(Ld))}return h}}function Ld(t){return t.length>1}function wd(t,e){return((t=t.x)[0]<0?t[1]-Go-Mo:Go-t[1])-((e=e.x)[0]<0?e[1]-Go-Mo:Go-e[1])}const xd=fd((function(){return!0}),(function(t){var e,n=NaN,l=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,s){var r=a>0?Eo:-Eo,o=Co(a-n);Co(o-Eo)0?Go:-Go),t.point(i,l),t.lineEnd(),t.lineStart(),t.point(r,l),t.point(a,l),e=0):i!==r&&o>=Eo&&(Co(n-i)Mo?Xo((zo(e)*(a=Do(l))*zo(n)-zo(l)*(i=Do(e))*zo(t))/(i*a*s)):(e+l)/2}(n,l,a,s),t.point(i,l),t.lineEnd(),t.lineStart(),t.point(r,l),e=0),t.point(n=a,l=s),i=r},lineEnd:function(){t.lineEnd(),n=l=NaN},clean:function(){return 2-e}}}),(function(t,e,n,l){var i;if(null==t)i=n*Go,l.point(-Eo,i),l.point(0,i),l.point(Eo,i),l.point(Eo,0),l.point(Eo,-i),l.point(0,-i),l.point(-Eo,-i),l.point(-Eo,0),l.point(-Eo,i);else if(Co(t[0]-e[0])>Mo){var a=t[0]0,i=Co(e)>Mo;function a(t,n){return Do(t)*Do(n)>e}function s(t,n,l){var i=[1,0,0],a=Nc(bc(t),bc(n)),s=Zc(a,a),r=a[0],o=s-r*r;if(!o)return!l&&t;var c=e*s/o,d=-e*r/o,u=Nc(i,a),h=Sc(i,c);Rc(h,Sc(a,d));var m=u,U=Zc(h,m),p=Zc(m,m),F=U*U-p*(Zc(h,h)-1);if(!(F<0)){var b=Oo(F),Z=Sc(m,(-U-b)/p);if(Rc(Z,h),Z=Fc(Z),!l)return Z;var N,R=t[0],S=n[0],W=t[1],V=n[1];S0^Z[1]<(Co(Z[0]-R)Eo^(R<=Z[0]&&Z[0]<=S)){var T=Sc(m,(-U+b)/p);return Rc(T,h),[Z,Fc(T)]}}}function r(e,n){var i=l?t:Eo-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return fd(a,(function(t){var e,n,o,c,d;return{lineStart:function(){c=o=!1,d=1},point:function(u,h){var m,U=[u,h],p=a(u,h),F=l?p?0:r(u,h):p?r(u+(u<0?Eo:-Eo),h):0;if(!e&&(c=o=p)&&t.lineStart(),p!==o&&(!(m=s(e,U))||Jd(e,m)||Jd(U,m))&&(U[2]=1),p!==o)d=0,p?(t.lineStart(),m=s(U,e),t.point(m[0],m[1])):(m=s(e,U),t.point(m[0],m[1],2),t.lineEnd()),e=m;else if(i&&e&&l^p){var b;F&n||!(b=s(U,e,!0))||(d=0,l?(t.lineStart(),t.point(b[0][0],b[0][1]),t.point(b[1][0],b[1][1]),t.lineEnd()):(t.point(b[1][0],b[1][1]),t.lineEnd(),t.lineStart(),t.point(b[0][0],b[0][1],3)))}!p||e&&Jd(e,U)||t.point(U[0],U[1]),e=U,o=p,n=F},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return d|(c&&o)<<1}}}),(function(e,l,i,a){gd(a,t,n,i,e,l)}),l?[0,-t]:[-Eo,t-Eo])}var vd=1e9,Od=-vd;function _d(t,e,n,l){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=l}function a(i,a,r,c){var d=0,u=0;if(null==i||(d=s(i,r))!==(u=s(a,r))||o(i,a)<0^r>0)do{c.point(0===d||3===d?t:n,d>1?l:e)}while((d=(d+r+4)%4)!==u);else c.point(a[0],a[1])}function s(l,i){return Co(l[0]-t)0?0:3:Co(l[0]-n)0?2:1:Co(l[1]-e)0?1:0:i>0?3:2}function r(t,e){return o(t.x,e.x)}function o(t,e){var n=s(t,1),l=s(e,1);return n!==l?n-l:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){var o,c,d,u,h,m,U,p,F,b,Z,N=s,R=Bd(),S={point:W,lineStart:function(){S.point=V,c&&c.push(d=[]),b=!0,F=!1,U=p=NaN},lineEnd:function(){o&&(V(u,h),m&&F&&R.rejoin(),o.push(R.result())),S.point=W,F&&N.lineEnd()},polygonStart:function(){N=R,o=[],c=[],Z=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;nl&&(h-a)*(l-s)>(m-s)*(t-a)&&++e:m<=l&&(h-a)*(l-s)<(m-s)*(t-a)&&--e;return e}(),n=Z&&e,i=(o=D(o)).length;(n||i)&&(s.polygonStart(),n&&(s.lineStart(),a(null,null,1,s),s.lineEnd()),i&&Yd(o,r,e,a,s),s.polygonEnd()),N=s,o=c=d=null}};function W(t,e){i(t,e)&&N.point(t,e)}function V(a,s){var r=i(a,s);if(c&&d.push([a,s]),b)u=a,h=s,m=r,b=!1,r&&(N.lineStart(),N.point(a,s));else if(r&&F)N.point(a,s);else{var o=[U=Math.max(Od,Math.min(vd,U)),p=Math.max(Od,Math.min(vd,p))],R=[a=Math.max(Od,Math.min(vd,a)),s=Math.max(Od,Math.min(vd,s))];!function(t,e,n,l,i,a){var s,r=t[0],o=t[1],c=0,d=1,u=e[0]-r,h=e[1]-o;if(s=n-r,u||!(s>0)){if(s/=u,u<0){if(s0){if(s>d)return;s>c&&(c=s)}if(s=i-r,u||!(s<0)){if(s/=u,u<0){if(s>d)return;s>c&&(c=s)}else if(u>0){if(s0)){if(s/=h,h<0){if(s0){if(s>d)return;s>c&&(c=s)}if(s=a-o,h||!(s<0)){if(s/=h,h<0){if(s>d)return;s>c&&(c=s)}else if(h>0){if(s0&&(t[0]=r+c*u,t[1]=o+c*h),d<1&&(e[0]=r+d*u,e[1]=o+d*h),!0}}}}}(o,R,t,e,n,l)?r&&(N.lineStart(),N.point(a,s),Z=!1):(F||(N.lineStart(),N.point(o[0],o[1])),N.point(R[0],R[1]),r||N.lineEnd(),Z=!1)}U=a,p=s,F=r}return S}}function jd(){var t,e,n,l=0,i=0,a=960,s=500;return n={stream:function(n){return t&&e===n?t:t=_d(l,i,a,s)(e=n)},extent:function(r){return arguments.length?(l=+r[0][0],i=+r[0][1],a=+r[1][0],s=+r[1][1],t=e=null,n):[[l,i],[a,s]]}}}var Kd,Pd,Ad,Hd=Vo(),qd={sphere:Ao,point:Ao,lineStart:function(){qd.point=tu,qd.lineEnd=$d},lineEnd:Ao,polygonStart:Ao,polygonEnd:Ao};function $d(){qd.point=qd.lineEnd=Ao}function tu(t,e){Kd=t*=Yo,Pd=zo(e*=Yo),Ad=Do(e),qd.point=eu}function eu(t,e){t*=Yo;var n=zo(e*=Yo),l=Do(e),i=Co(t-Kd),a=Do(i),s=l*zo(i),r=Ad*n-Pd*l*a,o=Pd*n+Ad*l*a;Hd.add(Io(Oo(s*s+r*r),o)),Kd=t,Pd=n,Ad=l}function nu(t){return Hd.reset(),nc(t,qd),+Hd}var lu=[null,null],iu={type:"LineString",coordinates:lu};function au(t,e){return lu[0]=t,lu[1]=e,nu(iu)}var su={Feature:function(t,e){return ou(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,l=-1,i=n.length;++l0&&(i=au(t[a],t[a-1]))>0&&n<=i&&l<=i&&(n+l-i)*(1-Math.pow((n-l)/i,2))Mo})).map(o)).concat(V(fo(a/m)*m,i,m).filter((function(t){return Co(t%p)>Mo})).map(c))}return b.lines=function(){return Z().map((function(t){return{type:"LineString",coordinates:t}}))},b.outline=function(){return{type:"Polygon",coordinates:[d(l).concat(u(s).slice(1),d(n).reverse().slice(1),u(r).reverse().slice(1))]}},b.extent=function(t){return arguments.length?b.extentMajor(t).extentMinor(t):b.extentMinor()},b.extentMajor=function(t){return arguments.length?(l=+t[0][0],n=+t[1][0],r=+t[0][1],s=+t[1][1],l>n&&(t=l,l=n,n=t),r>s&&(t=r,r=s,s=t),b.precision(F)):[[l,r],[n,s]]},b.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),b.precision(F)):[[e,a],[t,i]]},b.step=function(t){return arguments.length?b.stepMajor(t).stepMinor(t):b.stepMinor()},b.stepMajor=function(t){return arguments.length?(U=+t[0],p=+t[1],b):[U,p]},b.stepMinor=function(t){return arguments.length?(h=+t[0],m=+t[1],b):[h,m]},b.precision=function(h){return arguments.length?(F=+h,o=pu(a,i,90),c=Fu(e,t,F),d=pu(r,s,90),u=Fu(l,n,F),b):F},b.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function Zu(){return bu()()}function Nu(t,e){var n=t[0]*Yo,l=t[1]*Yo,i=e[0]*Yo,a=e[1]*Yo,s=Do(l),r=zo(l),o=Do(a),c=zo(a),d=s*Do(n),u=s*zo(n),h=o*Do(i),m=o*zo(i),U=2*Ko(Oo(Po(a-l)+s*o*Po(i-n))),p=zo(U),F=U?function(t){var e=zo(t*=U)/p,n=zo(U-t)/p,l=n*d+e*h,i=n*u+e*m,a=n*r+e*c;return[Io(i,l)*ko,Io(a,Oo(l*l+i*i))*ko]}:function(){return[n*ko,l*ko]};return F.distance=U,F}function Ru(t){return t}var Su,Wu,Vu,Qu,yu=Vo(),Tu=Vo(),Mu={point:Ao,lineStart:Ao,lineEnd:Ao,polygonStart:function(){Mu.lineStart=gu,Mu.lineEnd=Bu},polygonEnd:function(){Mu.lineStart=Mu.lineEnd=Mu.point=Ao,yu.add(Co(Tu)),Tu.reset()},result:function(){var t=yu/2;return yu.reset(),t}};function gu(){Mu.point=Eu}function Eu(t,e){Mu.point=Gu,Su=Vu=t,Wu=Qu=e}function Gu(t,e){Tu.add(Qu*t-Vu*e),Vu=t,Qu=e}function Bu(){Gu(Su,Wu)}const Ju=Mu;var ku=1/0,Yu=ku,Cu=-ku,Xu=Cu,Iu={point:function(t,e){tCu&&(Cu=t),eXu&&(Xu=e)},lineStart:Ao,lineEnd:Ao,polygonStart:Ao,polygonEnd:Ao,result:function(){var t=[[ku,Yu],[Cu,Xu]];return Cu=Xu=-(Yu=ku=1/0),t}};const Du=Iu;var fu,Lu,wu,xu,zu=0,vu=0,Ou=0,_u=0,ju=0,Ku=0,Pu=0,Au=0,Hu=0,qu={point:$u,lineStart:th,lineEnd:lh,polygonStart:function(){qu.lineStart=ih,qu.lineEnd=ah},polygonEnd:function(){qu.point=$u,qu.lineStart=th,qu.lineEnd=lh},result:function(){var t=Hu?[Pu/Hu,Au/Hu]:Ku?[_u/Ku,ju/Ku]:Ou?[zu/Ou,vu/Ou]:[NaN,NaN];return zu=vu=Ou=_u=ju=Ku=Pu=Au=Hu=0,t}};function $u(t,e){zu+=t,vu+=e,++Ou}function th(){qu.point=eh}function eh(t,e){qu.point=nh,$u(wu=t,xu=e)}function nh(t,e){var n=t-wu,l=e-xu,i=Oo(n*n+l*l);_u+=i*(wu+t)/2,ju+=i*(xu+e)/2,Ku+=i,$u(wu=t,xu=e)}function lh(){qu.point=$u}function ih(){qu.point=sh}function ah(){rh(fu,Lu)}function sh(t,e){qu.point=rh,$u(fu=wu=t,Lu=xu=e)}function rh(t,e){var n=t-wu,l=e-xu,i=Oo(n*n+l*l);_u+=i*(wu+t)/2,ju+=i*(xu+e)/2,Ku+=i,Pu+=(i=xu*t-wu*e)*(wu+t),Au+=i*(xu+e),Hu+=3*i,$u(wu=t,xu=e)}const oh=qu;function ch(t){this._context=t}ch.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,Jo)}},result:Ao};var dh,uh,hh,mh,Uh,ph=Vo(),Fh={point:Ao,lineStart:function(){Fh.point=bh},lineEnd:function(){dh&&Zh(uh,hh),Fh.point=Ao},polygonStart:function(){dh=!0},polygonEnd:function(){dh=null},result:function(){var t=+ph;return ph.reset(),t}};function bh(t,e){Fh.point=Zh,uh=mh=t,hh=Uh=e}function Zh(t,e){mh-=t,Uh-=e,ph.add(Oo(mh*mh+Uh*Uh)),mh=t,Uh=e}const Nh=Fh;function Rh(){this._string=[]}function Sh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Wh(t,e){var n,l,i=4.5;function a(t){return t&&("function"==typeof i&&l.pointRadius(+i.apply(this,arguments)),nc(t,n(l))),l.result()}return a.area=function(t){return nc(t,n(Ju)),Ju.result()},a.measure=function(t){return nc(t,n(Nh)),Nh.result()},a.bounds=function(t){return nc(t,n(Du)),Du.result()},a.centroid=function(t){return nc(t,n(oh)),oh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,Ru):(t=e).stream,a):t},a.context=function(t){return arguments.length?(l=null==t?(e=null,new Rh):new ch(e=t),"function"!=typeof i&&l.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(l.pointRadius(+t),+t),a):i},a.projection(t).context(e)}function Vh(t){return{stream:Qh(t)}}function Qh(t){return function(e){var n=new yh;for(var l in t)n[l]=t[l];return n.stream=e,n}}function yh(){}function Th(t,e,n){var l=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=l&&t.clipExtent(null),nc(n,t.stream(Du)),e(Du.result()),null!=l&&t.clipExtent(l),t}function Mh(t,e,n){return Th(t,(function(n){var l=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(l/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+e[0][0]+(l-a*(n[1][0]+n[0][0]))/2,r=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([s,r])}),n)}function gh(t,e,n){return Mh(t,[[0,0],e],n)}function Eh(t,e,n){return Th(t,(function(n){var l=+e,i=l/(n[1][0]-n[0][0]),a=(l-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];t.scale(150*i).translate([a,s])}),n)}function Gh(t,e,n){return Th(t,(function(n){var l=+e,i=l/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(l-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,s])}),n)}Rh.prototype={_radius:4.5,_circle:Sh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=Sh(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},yh.prototype={constructor:yh,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Bh=Do(30*Yo);function Jh(t,e){return+e?function(t,e){function n(l,i,a,s,r,o,c,d,u,h,m,U,p,F){var b=c-l,Z=d-i,N=b*b+Z*Z;if(N>4*e&&p--){var R=s+h,S=r+m,W=o+U,V=Oo(R*R+S*S+W*W),Q=Ko(W/=V),y=Co(Co(W)-1)e||Co((b*E+Z*G)/N-.5)>.3||s*h+r*m+o*U2?t[2]%360*Yo:0,E()):[F*ko,b*ko,Z*ko]},M.angle=function(t){return arguments.length?(N=t%360*Yo,E()):N*ko},M.reflectX=function(t){return arguments.length?(R=t?-1:1,E()):R<0},M.reflectY=function(t){return arguments.length?(S=t?-1:1,E()):S<0},M.precision=function(t){return arguments.length?(s=Jh(r,T=t*t),G()):Oo(T)},M.fitExtent=function(t,e){return Mh(M,t,e)},M.fitSize=function(t,e){return gh(M,t,e)},M.fitWidth=function(t,e){return Eh(M,t,e)},M.fitHeight=function(t,e){return Gh(M,t,e)},function(){return e=t.apply(this,arguments),M.invert=e.invert&&g,E()}}function Dh(t){var e=0,n=Eo/3,l=Ih(t),i=l(e,n);return i.parallels=function(t){return arguments.length?l(e=t[0]*Yo,n=t[1]*Yo):[e*ko,n*ko]},i}function fh(t,e){var n=zo(t),l=(n+zo(e))/2;if(Co(l)=.12&&i<.234&&l>=-.425&&l<-.214?r:i>=.166&&i<.234&&l>=-.214&&l<-.115?o:s).invert(t)},d.stream=function(n){return t&&e===n?t:(l=[s.stream(e=n),r.stream(n),o.stream(n)],i=l.length,t={point:function(t,e){for(var n=-1;++n0?e<-Go+Mo&&(e=-Go+Mo):e>Go-Mo&&(e=Go-Mo);var n=i/xo(qh(e),l);return[n*zo(l*t),i-n*Do(l*t)]}return a.invert=function(t,e){var n=i-e,a=vo(l)*Oo(t*t+n*n),s=Io(t,Co(n))*vo(n);return n*l<0&&(s-=Eo*vo(t)*vo(n)),[s/l,2*Xo(xo(i/a,1/l))-Go]},a}function tm(){return Dh($h).scale(109.5).parallels([30,30])}function em(t,e){return[t,e]}function nm(){return Xh(em).scale(152.63)}function lm(t,e){var n=Do(t),l=t===e?zo(t):(n-Do(e))/(e-t),i=n/l+t;if(Co(l)2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}function Vm(t,e){return t.parent===e.parent?1:2}function Qm(t,e){return t+e.x}function ym(t,e){return Math.max(t,e.y)}function Tm(){var t=Vm,e=1,n=1,l=!1;function i(i){var a,s=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(Qm,0)/t.length}(n),e.y=function(t){return 1+t.reduce(ym,0)}(n)):(e.x=a?s+=t(e,a):0,e.y=0,a=e)}));var r=function(t){for(var e;e=t.children;)t=e[0];return t}(i),o=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=r.x-t(r,o)/2,d=o.x+t(o,r)/2;return i.eachAfter(l?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(d-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(l=!1,e=+t[0],n=+t[1],i):l?null:[e,n]},i.nodeSize=function(t){return arguments.length?(l=!0,e=+t[0],n=+t[1],i):l?[e,n]:null},i}function Mm(t){var e=0,n=t.children,l=n&&n.length;if(l)for(;--l>=0;)e+=n[l].value;else e=1;t.value=e}function gm(t,e){var n,l,i,a,s,r=new Jm(t),o=+t.value&&(r.value=t.value),c=[r];for(null==e&&(e=Em);n=c.pop();)if(o&&(n.value=+n.data.value),(i=e(n.data))&&(s=i.length))for(n.children=new Array(s),a=s-1;a>=0;--a)c.push(l=n.children[a]=new Jm(i[a])),l.parent=n,l.depth=n.depth+1;return r.eachBefore(Bm)}function Em(t){return t.children}function Gm(t){t.data=t.data.data}function Bm(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Jm(t){this.data=t,this.depth=this.height=0,this.parent=null}dm.invert=function(t,e){for(var n,l=e,i=l*l,a=i*i*i,s=0;s<12&&(a=(i=(l-=n=(l*(am+sm*i+a*(rm+om*i))-e)/(am+3*sm*i+a*(7*rm+9*om*i)))*l)*i*i,!(Co(n)Mo&&--i>0);return[t/(.8707+(a=l*l)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),l]},bm.invert=vh(Ko),Nm.invert=vh((function(t){return 2*Xo(t)})),Sm.invert=function(t,e){return[-e,2*Xo(Lo(t))-Go]},Jm.prototype=gm.prototype={constructor:Jm,count:function(){return this.eachAfter(Mm)},each:function(t){var e,n,l,i,a=this,s=[a];do{for(e=s.reverse(),s=[];a=e.pop();)if(t(a),n=a.children)for(l=0,i=n.length;l=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,l=e.children,i=l&&l.length;--i>=0;)n+=l[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),l=e.ancestors(),i=null;for(t=n.pop(),e=l.pop();t===e;)i=t,t=n.pop(),e=l.pop();return i}(e,t),l=[e];e!==n;)e=e.parent,l.push(e);for(var i=l.length;t!==n;)l.splice(i,0,t),t=t.parent;return l},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return gm(this).eachBefore(Gm)}};var km=Array.prototype.slice;function Ym(t){for(var e,n,l=0,i=(t=function(t){for(var e,n,l=t.length;l;)n=Math.random()*l--|0,e=t[l],t[l]=t[n],t[n]=e;return t}(km.call(t))).length,a=[];l0&&n*n>l*l+i*i}function Dm(t,e){for(var n=0;n(s*=s)?(l=(c+s-i)/(2*c),a=Math.sqrt(Math.max(0,s/c-l*l)),n.x=t.x-l*r-a*o,n.y=t.y-l*o+a*r):(l=(c+i-s)/(2*c),a=Math.sqrt(Math.max(0,i/c-l*l)),n.x=e.x+l*r-a*o,n.y=e.y+l*o+a*r)):(n.x=e.x+n.r,n.y=e.y)}function zm(t,e){var n=t.r+e.r-1e-6,l=e.x-t.x,i=e.y-t.y;return n>0&&n*n>l*l+i*i}function vm(t){var e=t._,n=t.next._,l=e.r+n.r,i=(e.x*n.r+n.x*e.r)/l,a=(e.y*n.r+n.y*e.r)/l;return i*i+a*a}function Om(t){this._=t,this.next=null,this.previous=null}function _m(t){if(!(i=t.length))return 0;var e,n,l,i,a,s,r,o,c,d,u;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;xm(n,e,l=t[2]),e=new Om(e),n=new Om(n),l=new Om(l),e.next=l.previous=n,n.next=e.previous=l,l.next=n.previous=e;t:for(r=3;r0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Pm(e),n):t},n.parentId=function(t){return arguments.length?(e=Pm(t),n):e},n}function uU(t,e){return t.parent===e.parent?1:2}function hU(t){var e=t.children;return e?e[0]:t.t}function mU(t){var e=t.children;return e?e[e.length-1]:t.t}function UU(t,e,n){var l=n/(e.i-t.i);e.c-=l,e.s+=n,t.c+=l,e.z+=n,e.m+=n}function pU(t,e,n){return t.a.parent===e.parent?t.a:n}function FU(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function bU(){var t=uU,e=1,n=1,l=null;function i(i){var o=function(t){for(var e,n,l,i,a,s=new FU(t,0),r=[s];e=r.pop();)if(l=e._.children)for(e.children=new Array(a=l.length),i=a-1;i>=0;--i)r.push(n=e.children[i]=new FU(l[i],i)),n.parent=e;return(s.parent=new FU(null,0)).children=[s],s}(i);if(o.eachAfter(a),o.parent.m=-o.z,o.eachBefore(s),l)i.eachBefore(r);else{var c=i,d=i,u=i;i.eachBefore((function(t){t.xd.x&&(d=t),t.depth>u.depth&&(u=t)}));var h=c===d?1:t(c,d)/2,m=h-c.x,U=e/(d.x+h+m),p=n/(u.depth||1);i.eachBefore((function(t){t.x=(t.x+m)*U,t.y=t.depth*p}))}return i}function a(e){var n=e.children,l=e.parent.children,i=e.i?l[e.i-1]:null;if(n){!function(t){for(var e,n=0,l=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(l+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,l){if(n){for(var i,a=e,s=e,r=n,o=a.parent.children[0],c=a.m,d=s.m,u=r.m,h=o.m;r=mU(r),a=hU(a),r&&a;)o=hU(o),(s=mU(s)).a=e,(i=r.z+u-a.z-c+t(r._,a._))>0&&(UU(pU(r,e,l),e,i),c+=i,d+=i),u+=r.m,c+=a.m,h+=o.m,d+=s.m;r&&!mU(s)&&(s.t=r,s.m+=u-d),a&&!hU(o)&&(o.t=a,o.m+=c-h,l=e)}return l}(e,i,e.parent.A||l[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(l=!1,e=+t[0],n=+t[1],i):l?null:[e,n]},i.nodeSize=function(t){return arguments.length?(l=!0,e=+t[0],n=+t[1],i):l?[e,n]:null},i}function ZU(t,e,n,l,i){for(var a,s=t.children,r=-1,o=s.length,c=t.value&&(i-n)/t.value;++rh&&(h=r),F=d*d*p,(m=Math.max(h/F,F/u))>U){d-=r;break}U=m}b.push(s={value:d,dice:o1?e:1)},n}(NU);function WU(){var t=SU,e=!1,n=1,l=1,i=[0],a=Am,s=Am,r=Am,o=Am,c=Am;function d(t){return t.x0=t.y0=0,t.x1=n,t.y1=l,t.eachBefore(u),i=[0],e&&t.eachBefore(lU),t}function u(e){var n=i[e.depth],l=e.x0+n,d=e.y0+n,u=e.x1-n,h=e.y1-n;u=n-1){var d=r[e];return d.x0=i,d.y0=a,d.x1=s,void(d.y1=o)}for(var u=c[e],h=l/2+u,m=e+1,U=n-1;m>>1;c[p]o-a){var Z=(i*b+s*F)/l;t(e,m,F,i,a,Z,o),t(m,n,b,Z,a,s,o)}else{var N=(a*b+o*F)/l;t(e,m,F,i,a,s,N),t(m,n,b,i,N,s,o)}}(0,o,t.value,e,n,l,i)}function QU(t,e,n,l,i){(1&t.depth?ZU:iU)(t,e,n,l,i)}const yU=function t(e){function n(t,n,l,i,a){if((s=t._squarify)&&s.ratio===e)for(var s,r,o,c,d,u=-1,h=s.length,m=t.value;++u1?e:1)},n}(NU);function TU(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function MU(t,e){var n=mn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}}function gU(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var EU=Math.SQRT2;function GU(t){return((t=Math.exp(t))+1/t)/2}function BU(t,e){var n,l,i=t[0],a=t[1],s=t[2],r=e[0],o=e[1],c=e[2],d=r-i,u=o-a,h=d*d+u*u;if(h<1e-12)l=Math.log(c/s)/EU,n=function(t){return[i+t*d,a+t*u,s*Math.exp(EU*t*l)]};else{var m=Math.sqrt(h),U=(c*c-s*s+4*h)/(2*s*2*m),p=(c*c-s*s-4*h)/(2*c*2*m),F=Math.log(Math.sqrt(U*U+1)-U),b=Math.log(Math.sqrt(p*p+1)-p);l=(b-F)/EU,n=function(t){var e,n=t*l,r=GU(F),o=s/(2*m)*(r*(e=EU*n+F,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(F));return[i+o*d,a+o*u,s*r/GU(EU*n+F)]}}return n.duration=1e3*l,n}function JU(t){return function(e,n){var l=t((e=an(e)).h,(n=an(n)).h),i=Un(e.s,n.s),a=Un(e.l,n.l),s=Un(e.opacity,n.opacity);return function(t){return e.h=l(t),e.s=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const kU=JU(mn);var YU=JU(Un);function CU(t,e){var n=Un((t=Qa(t)).l,(e=Qa(e)).l),l=Un(t.a,e.a),i=Un(t.b,e.b),a=Un(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=l(e),t.b=i(e),t.opacity=a(e),t+""}}function XU(t){return function(e,n){var l=t((e=Ja(e)).h,(n=Ja(n)).h),i=Un(e.c,n.c),a=Un(e.l,n.l),s=Un(e.opacity,n.opacity);return function(t){return e.h=l(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const IU=XU(mn);var DU=XU(Un);function fU(t){return function e(n){function l(e,l){var i=t((e=va(e)).h,(l=va(l)).h),a=Un(e.s,l.s),s=Un(e.l,l.l),r=Un(e.opacity,l.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=s(Math.pow(t,n)),e.opacity=r(t),e+""}}return n=+n,l.gamma=e,l}(1)}const LU=fU(mn);var wU=fU(Un);function xU(t,e){for(var n=0,l=e.length-1,i=e[0],a=new Array(l<0?0:l);n1&&_U(t[n[l-2]],t[n[l-1]],t[i])<=0;)--l;n[l++]=i}return n.slice(0,l)}function PU(t){if((n=t.length)<3)return null;var e,n,l=new Array(n),i=new Array(n);for(e=0;e=0;--e)c.push(t[l[a[e]][2]]);for(e=+r;er!=c>r&&s<(o-n)*(r-l)/(c-l)+n&&(d=!d),o=n,c=l;return d}function HU(t){for(var e,n,l=-1,i=t.length,a=t[i-1],s=a[0],r=a[1],o=0;++l1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(qU),ep=function t(e){function n(){var t=tp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(qU),np=function t(e){function n(t){return function(){for(var n=0,l=0;ll&&(e=n,n=l,l=e),function(t){return Math.max(n,Math.min(l,t))}}function Rp(t,e,n){var l=t[0],i=t[1],a=e[0],s=e[1];return i2?Sp:Rp,i=a=null,u}function u(e){return isNaN(e=+e)?n:(i||(i=l(s.map(t),r,o)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=l(r,s.map(t),Qn)))(n)))},u.domain=function(t){return arguments.length?(s=op.call(t,pp),c===bp||(c=Np(s)),d()):s.slice()},u.range=function(t){return arguments.length?(r=cp.call(t),d()):r.slice()},u.rangeRound=function(t){return r=cp.call(t),o=gU,d()},u.clamp=function(t){return arguments.length?(c=t?Np(s):bp,u):c!==bp},u.interpolate=function(t){return arguments.length?(o=t,d()):o},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,l){return t=n,e=l,d()}}function Qp(t,e){return Vp()(t,e)}function yp(t,e,n,l){var i,a=E(t,e,n);switch((l=ro(null==l?",f":l)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=l.precision||isNaN(i=So(a,s))||(l.precision=i),po(l,s);case"":case"e":case"g":case"p":case"r":null!=l.precision||isNaN(i=Wo(a,Math.max(Math.abs(t),Math.abs(e))))||(l.precision=i-("e"===l.type));break;case"f":case"%":null!=l.precision||isNaN(i=Ro(a))||(l.precision=i-2*("%"===l.type))}return Uo(l)}function Tp(t){var e=t.domain;return t.ticks=function(t){var n=e();return M(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var l=e();return yp(l[0],l[l.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var l,i=e(),a=0,s=i.length-1,r=i[a],o=i[s];return o0?l=g(r=Math.floor(r/l)*l,o=Math.ceil(o/l)*l,n):l<0&&(l=g(r=Math.ceil(r*l)/l,o=Math.floor(o*l)/l,n)),l>0?(i[a]=Math.floor(r/l)*l,i[s]=Math.ceil(o/l)*l,e(i)):l<0&&(i[a]=Math.ceil(r*l)/l,i[s]=Math.floor(o*l)/l,e(i)),t},t}function Mp(){var t=Qp(bp,bp);return t.copy=function(){return Wp(t,Mp())},ap.apply(t,arguments),Tp(t)}function gp(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=op.call(e,pp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return gp(t).unknown(e)},t=arguments.length?op.call(t,pp):[0,1],Tp(n)}function Ep(t,e){var n,l=0,i=(t=t.slice()).length-1,a=t[l],s=t[i];return s0){for(;ho)break;p.push(u)}}else for(;h=1;--d)if(!((u=c*d)o)break;p.push(u)}}else p=M(h,m,Math.min(m-h,U)).map(n);return l?p.reverse():p},l.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Uo(i)),t===1/0)return i;null==t&&(t=10);var s=Math.max(1,a*t/l.ticks().length);return function(t){var l=t/n(Math.round(e(t)));return l*a0?l[i-1]:e[0],i=l?[i[l-1],n]:[i[s-1],i[s]]},s.unknown=function(e){return arguments.length?(t=e,s):s},s.thresholds=function(){return i.slice()},s.copy=function(){return Pp().domain([e,n]).range(a).unknown(t)},ap.apply(Tp(s),arguments)}function Ap(){var t,e=[.5],n=[0,1],l=1;function i(i){return i<=i?n[c(e,i,0,l)]:t}return i.domain=function(t){return arguments.length?(e=cp.call(t),l=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=cp.call(t),l=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var l=n.indexOf(t);return[e[l-1],e[l]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Ap().domain(e).range(n).unknown(t)},ap.apply(i,arguments)}var Hp=new Date,qp=new Date;function $p(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return Hp.setTime(+e),qp.setTime(+l),t(Hp),t(qp),Math.floor(n(Hp,qp))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var tF=$p((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));tF.every=function(t){return isFinite(t=Math.floor(t))&&t>0?$p((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const eF=tF;var nF=tF.range,lF=$p((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}));const iF=lF;var aF=lF.range,sF=1e3,rF=6e4,oF=36e5,cF=864e5,dF=6048e5;function uF(t){return $p((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rF)/dF}))}var hF=uF(0),mF=uF(1),UF=uF(2),pF=uF(3),FF=uF(4),bF=uF(5),ZF=uF(6),NF=hF.range,RF=mF.range,SF=UF.range,WF=pF.range,VF=FF.range,QF=bF.range,yF=ZF.range,TF=$p((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rF)/cF}),(function(t){return t.getDate()-1}));const MF=TF;var gF=TF.range,EF=$p((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sF-t.getMinutes()*rF)}),(function(t,e){t.setTime(+t+e*oF)}),(function(t,e){return(e-t)/oF}),(function(t){return t.getHours()}));const GF=EF;var BF=EF.range,JF=$p((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sF)}),(function(t,e){t.setTime(+t+e*rF)}),(function(t,e){return(e-t)/rF}),(function(t){return t.getMinutes()}));const kF=JF;var YF=JF.range,CF=$p((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*sF)}),(function(t,e){return(e-t)/sF}),(function(t){return t.getUTCSeconds()}));const XF=CF;var IF=CF.range,DF=$p((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));DF.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?$p((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):DF:null};const fF=DF;var LF=DF.range;function wF(t){return $p((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/dF}))}var xF=wF(0),zF=wF(1),vF=wF(2),OF=wF(3),_F=wF(4),jF=wF(5),KF=wF(6),PF=xF.range,AF=zF.range,HF=vF.range,qF=OF.range,$F=_F.range,tb=jF.range,eb=KF.range,nb=$p((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/cF}),(function(t){return t.getUTCDate()-1}));const lb=nb;var ib=nb.range,ab=$p((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));ab.every=function(t){return isFinite(t=Math.floor(t))&&t>0?$p((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const sb=ab;var rb=ab.range;function ob(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function cb(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function db(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function ub(t){var e=t.dateTime,n=t.date,l=t.time,i=t.periods,a=t.days,s=t.shortDays,r=t.months,o=t.shortMonths,c=Vb(i),d=Qb(i),u=Vb(a),h=Qb(a),m=Vb(s),U=Qb(s),p=Vb(r),F=Qb(r),b=Vb(o),Z=Qb(o),N={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return o[t.getMonth()]},B:function(t){return r[t.getMonth()]},c:null,d:Ob,e:Ob,f:Ab,g:rZ,G:cZ,H:_b,I:jb,j:Kb,L:Pb,m:Hb,M:qb,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:JZ,s:kZ,S:$b,u:tZ,U:eZ,V:lZ,w:iZ,W:aZ,x:null,X:null,y:sZ,Y:oZ,Z:dZ,"%":BZ},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:uZ,e:uZ,f:FZ,g:MZ,G:EZ,H:hZ,I:mZ,j:UZ,L:pZ,m:bZ,M:ZZ,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:JZ,s:kZ,S:NZ,u:RZ,U:SZ,V:VZ,w:QZ,W:yZ,x:null,X:null,y:TZ,Y:gZ,Z:GZ,"%":BZ},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U[l[0].toLowerCase()],n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h[l[0].toLowerCase()],n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z[l[0].toLowerCase()],n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F[l[0].toLowerCase()],n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:Cb,e:Cb,f:wb,g:Bb,G:Gb,H:Ib,I:Ib,j:Xb,L:Lb,m:Yb,M:Db,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d[l[0].toLowerCase()],n+l[0].length):-1},q:kb,Q:zb,s:vb,S:fb,u:Tb,U:Mb,V:gb,w:yb,W:Eb,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:Bb,Y:Gb,Z:Jb,"%":xb};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=cb(db(a.y,0,1))).getUTCDay(),l=i>4||0===i?zF.ceil(l):zF(l),l=lb.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=ob(db(a.y,0,1))).getDay(),l=i>4||0===i?mF.ceil(l):mF(l),l=MF.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?cb(db(a.y,0,1)).getUTCDay():ob(db(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,cb(a)):ob(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in bb?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}var hb,mb,Ub,pb,Fb,bb={"-":"",_:" ",0:"0"},Zb=/^\s*\d+/,Nb=/^%/,Rb=/[\\^$*+?|[\]().{}]/g;function Sb(t,e,n){var l=t<0?"-":"",i=(l?-t:t)+"",a=i.length;return l+(a68?1900:2e3),n+l[0].length):-1}function Jb(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function kb(t,e,n){var l=Zb.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function Yb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function Cb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function Xb(t,e,n){var l=Zb.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function Ib(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function Db(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function fb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function Lb(t,e,n){var l=Zb.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function wb(t,e,n){var l=Zb.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function xb(t,e,n){var l=Nb.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function zb(t,e,n){var l=Zb.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function vb(t,e,n){var l=Zb.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function Ob(t,e){return Sb(t.getDate(),e,2)}function _b(t,e){return Sb(t.getHours(),e,2)}function jb(t,e){return Sb(t.getHours()%12||12,e,2)}function Kb(t,e){return Sb(1+MF.count(eF(t),t),e,3)}function Pb(t,e){return Sb(t.getMilliseconds(),e,3)}function Ab(t,e){return Pb(t,e)+"000"}function Hb(t,e){return Sb(t.getMonth()+1,e,2)}function qb(t,e){return Sb(t.getMinutes(),e,2)}function $b(t,e){return Sb(t.getSeconds(),e,2)}function tZ(t){var e=t.getDay();return 0===e?7:e}function eZ(t,e){return Sb(hF.count(eF(t)-1,t),e,2)}function nZ(t){var e=t.getDay();return e>=4||0===e?FF(t):FF.ceil(t)}function lZ(t,e){return t=nZ(t),Sb(FF.count(eF(t),t)+(4===eF(t).getDay()),e,2)}function iZ(t){return t.getDay()}function aZ(t,e){return Sb(mF.count(eF(t)-1,t),e,2)}function sZ(t,e){return Sb(t.getFullYear()%100,e,2)}function rZ(t,e){return Sb((t=nZ(t)).getFullYear()%100,e,2)}function oZ(t,e){return Sb(t.getFullYear()%1e4,e,4)}function cZ(t,e){var n=t.getDay();return Sb((t=n>=4||0===n?FF(t):FF.ceil(t)).getFullYear()%1e4,e,4)}function dZ(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Sb(e/60|0,"0",2)+Sb(e%60,"0",2)}function uZ(t,e){return Sb(t.getUTCDate(),e,2)}function hZ(t,e){return Sb(t.getUTCHours(),e,2)}function mZ(t,e){return Sb(t.getUTCHours()%12||12,e,2)}function UZ(t,e){return Sb(1+lb.count(sb(t),t),e,3)}function pZ(t,e){return Sb(t.getUTCMilliseconds(),e,3)}function FZ(t,e){return pZ(t,e)+"000"}function bZ(t,e){return Sb(t.getUTCMonth()+1,e,2)}function ZZ(t,e){return Sb(t.getUTCMinutes(),e,2)}function NZ(t,e){return Sb(t.getUTCSeconds(),e,2)}function RZ(t){var e=t.getUTCDay();return 0===e?7:e}function SZ(t,e){return Sb(xF.count(sb(t)-1,t),e,2)}function WZ(t){var e=t.getUTCDay();return e>=4||0===e?_F(t):_F.ceil(t)}function VZ(t,e){return t=WZ(t),Sb(_F.count(sb(t),t)+(4===sb(t).getUTCDay()),e,2)}function QZ(t){return t.getUTCDay()}function yZ(t,e){return Sb(zF.count(sb(t)-1,t),e,2)}function TZ(t,e){return Sb(t.getUTCFullYear()%100,e,2)}function MZ(t,e){return Sb((t=WZ(t)).getUTCFullYear()%100,e,2)}function gZ(t,e){return Sb(t.getUTCFullYear()%1e4,e,4)}function EZ(t,e){var n=t.getUTCDay();return Sb((t=n>=4||0===n?_F(t):_F.ceil(t)).getUTCFullYear()%1e4,e,4)}function GZ(){return"+0000"}function BZ(){return"%"}function JZ(t){return+t}function kZ(t){return Math.floor(+t/1e3)}function YZ(t){return hb=ub(t),mb=hb.format,Ub=hb.parse,pb=hb.utcFormat,Fb=hb.utcParse,hb}YZ({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var CZ=31536e6;function XZ(t){return new Date(t)}function IZ(t){return t instanceof Date?+t:+new Date(+t)}function DZ(t,e,n,l,i,s,r,o,c){var d=Qp(bp,bp),u=d.invert,h=d.domain,m=c(".%L"),U=c(":%S"),p=c("%I:%M"),F=c("%I %p"),b=c("%a %d"),Z=c("%b %d"),N=c("%B"),R=c("%Y"),S=[[r,1,1e3],[r,5,5e3],[r,15,15e3],[r,30,3e4],[s,1,6e4],[s,5,3e5],[s,15,9e5],[s,30,18e5],[i,1,36e5],[i,3,108e5],[i,6,216e5],[i,12,432e5],[l,1,864e5],[l,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,CZ]];function W(a){return(r(a)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return TR.h=360*t-100,TR.s=1.5-1.5*e,TR.l=.8-.9*e,TR+""}var gR=He(),ER=Math.PI/3,GR=2*Math.PI/3;function BR(t){var e;return t=(.5-t)*Math.PI,gR.r=255*(e=Math.sin(t))*e,gR.g=255*(e=Math.sin(t+ER))*e,gR.b=255*(e=Math.sin(t+GR))*e,gR+""}function JR(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"}function kR(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}const YR=kR(dN("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var CR=kR(dN("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),XR=kR(dN("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),IR=kR(dN("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function DR(t){return Qe(ie(t).call(document.documentElement))}var fR=0;function LR(){return new wR}function wR(){this._="@"+(++fR).toString(36)}function xR(t){return"string"==typeof t?new Se([document.querySelectorAll(t)],[document.documentElement]):new Se([null==t?[]:t],Re)}function zR(t,e){null==e&&(e=Gn().touches);for(var n=0,l=e?e.length:0,i=new Array(l);n1?0:t<-1?$R:Math.acos(t)}function lS(t){return t>=1?tS:t<=-1?-tS:Math.asin(t)}function iS(t){return t.innerRadius}function aS(t){return t.outerRadius}function sS(t){return t.startAngle}function rS(t){return t.endAngle}function oS(t){return t&&t.padAngle}function cS(t,e,n,l,i,a,s,r){var o=n-t,c=l-e,d=s-i,u=r-a,h=u*o-d*c;if(!(h*hG*G+B*B&&(Q=T,y=M),{cx:Q,cy:y,x01:-d,y01:-u,x11:Q*(i/S-1),y11:y*(i/S-1)}}function uS(){var t=iS,e=aS,n=vR(0),l=null,i=sS,a=rS,s=oS,r=null;function o(){var o,c,d=+t.apply(this,arguments),u=+e.apply(this,arguments),h=i.apply(this,arguments)-tS,m=a.apply(this,arguments)-tS,U=OR(m-h),p=m>h;if(r||(r=o=_i()),uqR)if(U>eS-qR)r.moveTo(u*jR(h),u*AR(h)),r.arc(0,0,u,h,m,!p),d>qR&&(r.moveTo(d*jR(m),d*AR(m)),r.arc(0,0,d,m,h,p));else{var F,b,Z=h,N=m,R=h,S=m,W=U,V=U,Q=s.apply(this,arguments)/2,y=Q>qR&&(l?+l.apply(this,arguments):HR(d*d+u*u)),T=PR(OR(u-d)/2,+n.apply(this,arguments)),M=T,g=T;if(y>qR){var E=lS(y/d*AR(Q)),G=lS(y/u*AR(Q));(W-=2*E)>qR?(R+=E*=p?1:-1,S-=E):(W=0,R=S=(h+m)/2),(V-=2*G)>qR?(Z+=G*=p?1:-1,N-=G):(V=0,Z=N=(h+m)/2)}var B=u*jR(Z),J=u*AR(Z),k=d*jR(S),Y=d*AR(S);if(T>qR){var C,X=u*jR(N),I=u*AR(N),D=d*jR(R),f=d*AR(R);if(U<$R&&(C=cS(B,J,D,f,X,I,k,Y))){var L=B-C[0],w=J-C[1],x=X-C[0],z=I-C[1],v=1/AR(nS((L*x+w*z)/(HR(L*L+w*w)*HR(x*x+z*z)))/2),O=HR(C[0]*C[0]+C[1]*C[1]);M=PR(T,(d-O)/(v-1)),g=PR(T,(u-O)/(v+1))}}V>qR?g>qR?(F=dS(D,f,B,J,u,g,p),b=dS(X,I,k,Y,u,g,p),r.moveTo(F.cx+F.x01,F.cy+F.y01),gqR&&W>qR?M>qR?(F=dS(k,Y,X,I,d,-M,p),b=dS(B,J,D,f,d,-M,p),r.lineTo(F.cx+F.x01,F.cy+F.y01),M=d;--u)r.point(F[u],b[u]);r.lineEnd(),r.areaEnd()}p&&(F[c]=+t(h,c,o),b[c]=+n(h,c,o),r.point(e?+e(h,c,o):F[c],l?+l(h,c,o):b[c]))}if(m)return r=null,m+""||null}function c(){return FS().defined(i).curve(s).context(a)}return o.x=function(n){return arguments.length?(t="function"==typeof n?n:vR(+n),e=null,o):t},o.x0=function(e){return arguments.length?(t="function"==typeof e?e:vR(+e),o):t},o.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:vR(+t),o):e},o.y=function(t){return arguments.length?(n="function"==typeof t?t:vR(+t),l=null,o):n},o.y0=function(t){return arguments.length?(n="function"==typeof t?t:vR(+t),o):n},o.y1=function(t){return arguments.length?(l=null==t?null:"function"==typeof t?t:vR(+t),o):l},o.lineX0=o.lineY0=function(){return c().x(t).y(n)},o.lineY1=function(){return c().x(t).y(l)},o.lineX1=function(){return c().x(e).y(n)},o.defined=function(t){return arguments.length?(i="function"==typeof t?t:vR(!!t),o):i},o.curve=function(t){return arguments.length?(s=t,null!=a&&(r=s(a)),o):s},o.context=function(t){return arguments.length?(null==t?a=r=null:r=s(a=t),o):a},o}function ZS(t,e){return et?1:e>=t?0:NaN}function NS(t){return t}function RS(){var t=NS,e=ZS,n=null,l=vR(0),i=vR(eS),a=vR(0);function s(s){var r,o,c,d,u,h=s.length,m=0,U=new Array(h),p=new Array(h),F=+l.apply(this,arguments),b=Math.min(eS,Math.max(-eS,i.apply(this,arguments)-F)),Z=Math.min(Math.abs(b)/h,a.apply(this,arguments)),N=Z*(b<0?-1:1);for(r=0;r0&&(m+=u);for(null!=e?U.sort((function(t,n){return e(p[t],p[n])})):null!=n&&U.sort((function(t,e){return n(s[t],s[e])})),r=0,c=m?(b-h*N)/m:0;r0?u*c:0)+N,p[o]={data:s[o],index:r,value:u,startAngle:F,endAngle:d,padAngle:Z};return p}return s.value=function(e){return arguments.length?(t="function"==typeof e?e:vR(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(l="function"==typeof t?t:vR(+t),s):l},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:vR(+t),s):i},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:vR(+t),s):a},s}hS.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var SS=VS(mS);function WS(t){this._curve=t}function VS(t){function e(e){return new WS(t(e))}return e._curve=t,e}function QS(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(VS(t)):e()._curve},t}function yS(){return QS(FS().curve(SS))}function TS(){var t=bS().curve(SS),e=t.curve,n=t.lineX0,l=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return QS(n())},delete t.lineX0,t.lineEndAngle=function(){return QS(l())},delete t.lineX1,t.lineInnerRadius=function(){return QS(i())},delete t.lineY0,t.lineOuterRadius=function(){return QS(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(VS(t)):e()._curve},t}function MS(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}WS.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var gS=Array.prototype.slice;function ES(t){return t.source}function GS(t){return t.target}function BS(t){var e=ES,n=GS,l=US,i=pS,a=null;function s(){var s,r=gS.call(arguments),o=e.apply(this,r),c=n.apply(this,r);if(a||(a=s=_i()),t(a,+l.apply(this,(r[0]=o,r)),+i.apply(this,r),+l.apply(this,(r[0]=c,r)),+i.apply(this,r)),s)return a=null,s+""||null}return s.source=function(t){return arguments.length?(e=t,s):e},s.target=function(t){return arguments.length?(n=t,s):n},s.x=function(t){return arguments.length?(l="function"==typeof t?t:vR(+t),s):l},s.y=function(t){return arguments.length?(i="function"==typeof t?t:vR(+t),s):i},s.context=function(t){return arguments.length?(a=null==t?null:t,s):a},s}function JS(t,e,n,l,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+l)/2,n,e,i,l,i)}function kS(t,e,n,l,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,l,n,l,i)}function YS(t,e,n,l,i){var a=MS(e,n),s=MS(e,n=(n+i)/2),r=MS(l,n),o=MS(l,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(s[0],s[1],r[0],r[1],o[0],o[1])}function CS(){return BS(JS)}function XS(){return BS(kS)}function IS(){var t=BS(YS);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}const DS={draw:function(t,e){var n=Math.sqrt(e/$R);t.moveTo(n,0),t.arc(0,0,n,0,eS)}},fS={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}};var LS=Math.sqrt(1/3),wS=2*LS;const xS={draw:function(t,e){var n=Math.sqrt(e/wS),l=n*LS;t.moveTo(0,-n),t.lineTo(l,0),t.lineTo(0,n),t.lineTo(-l,0),t.closePath()}};var zS=Math.sin($R/10)/Math.sin(7*$R/10),vS=Math.sin(eS/10)*zS,OS=-Math.cos(eS/10)*zS;const _S={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),l=vS*n,i=OS*n;t.moveTo(0,-n),t.lineTo(l,i);for(var a=1;a<5;++a){var s=eS*a/5,r=Math.cos(s),o=Math.sin(s);t.lineTo(o*n,-r*n),t.lineTo(r*l-o*i,o*l+r*i)}t.closePath()}},jS={draw:function(t,e){var n=Math.sqrt(e),l=-n/2;t.rect(l,l,n,n)}};var KS=Math.sqrt(3);const PS={draw:function(t,e){var n=-Math.sqrt(e/(3*KS));t.moveTo(0,2*n),t.lineTo(-KS*n,-n),t.lineTo(KS*n,-n),t.closePath()}};var AS=-.5,HS=Math.sqrt(3)/2,qS=1/Math.sqrt(12),$S=3*(qS/2+1);const tW={draw:function(t,e){var n=Math.sqrt(e/$S),l=n/2,i=n*qS,a=l,s=n*qS+n,r=-a,o=s;t.moveTo(l,i),t.lineTo(a,s),t.lineTo(r,o),t.lineTo(AS*l-HS*i,HS*l+AS*i),t.lineTo(AS*a-HS*s,HS*a+AS*s),t.lineTo(AS*r-HS*o,HS*r+AS*o),t.lineTo(AS*l+HS*i,AS*i-HS*l),t.lineTo(AS*a+HS*s,AS*s-HS*a),t.lineTo(AS*r+HS*o,AS*o-HS*r),t.closePath()}};var eW=[DS,fS,xS,jS,_S,PS,tW];function nW(){var t=vR(DS),e=vR(64),n=null;function l(){var l;if(n||(n=l=_i()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),l)return n=null,l+""||null}return l.type=function(e){return arguments.length?(t="function"==typeof e?e:vR(e),l):t},l.size=function(t){return arguments.length?(e="function"==typeof t?t:vR(+t),l):e},l.context=function(t){return arguments.length?(n=null==t?null:t,l):n},l}function lW(){}function iW(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function aW(t){this._context=t}function sW(t){return new aW(t)}function rW(t){this._context=t}function oW(t){return new rW(t)}function cW(t){this._context=t}function dW(t){return new cW(t)}function uW(t,e){this._basis=new aW(t),this._beta=e}aW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:iW(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},rW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},cW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,l=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,l):this._context.moveTo(n,l);break;case 3:this._point=4;default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},uW.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var l,i=t[0],a=e[0],s=t[n]-i,r=e[n]-a,o=-1;++o<=n;)l=o/n,this._basis.point(this._beta*t[o]+(1-this._beta)*(i+l*s),this._beta*e[o]+(1-this._beta)*(a+l*r));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const hW=function t(e){function n(t){return 1===e?new aW(t):new uW(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function mW(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function UW(t,e){this._context=t,this._k=(1-e)/6}UW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:mW(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const pW=function t(e){function n(t){return new UW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function FW(t,e){this._context=t,this._k=(1-e)/6}FW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const bW=function t(e){function n(t){return new FW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function ZW(t,e){this._context=t,this._k=(1-e)/6}ZW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const NW=function t(e){function n(t){return new ZW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function RW(t,e,n){var l=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>qR){var r=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,o=3*t._l01_a*(t._l01_a+t._l12_a);l=(l*r-t._x0*t._l12_2a+t._x2*t._l01_2a)/o,i=(i*r-t._y0*t._l12_2a+t._y2*t._l01_2a)/o}if(t._l23_a>qR){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,d=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/d,s=(s*c+t._y1*t._l23_2a-n*t._l12_2a)/d}t._context.bezierCurveTo(l,i,a,s,t._x2,t._y2)}function SW(t,e){this._context=t,this._alpha=e}SW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const WW=function t(e){function n(t){return e?new SW(t,e):new UW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function VW(t,e){this._context=t,this._alpha=e}VW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const QW=function t(e){function n(t){return e?new VW(t,e):new FW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function yW(t,e){this._context=t,this._alpha=e}yW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const TW=function t(e){function n(t){return e?new yW(t,e):new ZW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function MW(t){this._context=t}function gW(t){return new MW(t)}function EW(t){return t<0?-1:1}function GW(t,e,n){var l=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(l||i<0&&-0),s=(n-t._y1)/(i||l<0&&-0),r=(a*i+s*l)/(l+i);return(EW(a)+EW(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(r))||0}function BW(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function JW(t,e,n){var l=t._x0,i=t._y0,a=t._x1,s=t._y1,r=(a-l)/3;t._context.bezierCurveTo(l+r,i+r*e,a-r,s-r*n,a,s)}function kW(t){this._context=t}function YW(t){this._context=new CW(t)}function CW(t){this._context=t}function XW(t){return new kW(t)}function IW(t){return new YW(t)}function DW(t){this._context=t}function fW(t){var e,n,l=t.length-1,i=new Array(l),a=new Array(l),s=new Array(l);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[l-1]=(t[l]+i[l-1])/2,e=0;e1)for(var n,l,i,a=1,s=t[e[0]],r=s.length;a=0;)n[e]=e;return n}function jW(t,e){return t[e]}function KW(){var t=vR([]),e=_W,n=OW,l=jW;function i(i){var a,s,r=t.apply(this,arguments),o=i.length,c=r.length,d=new Array(c);for(a=0;a0){for(var n,l,i,a=0,s=t[0].length;a0)for(var n,l,i,a,s,r,o=0,c=t[e[0]].length;o0?(l[0]=a,l[1]=a+=i):i<0?(l[1]=s,l[0]=s+=i):(l[0]=0,l[1]=i)}function HW(t,e){if((n=t.length)>0){for(var n,l=0,i=t[e[0]],a=i.length;l0&&(l=(n=t[e[0]]).length)>0){for(var n,l,i,a=0,s=1;sa&&(a=e,l=n);return l}function eV(t){var e=t.map(nV);return _W(t).sort((function(t,n){return e[t]-e[n]}))}function nV(t){for(var e,n=0,l=-1,i=t.length;++l=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var sV="%Y-%m-%dT%H:%M:%S.%LZ",rV=Date.prototype.toISOString?function(t){return t.toISOString()}:pb(sV);const oV=rV;var cV=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:Fb(sV);const dV=cV;function uV(t,e,n){var l=new _n,i=e;return null==e?(l.restart(t,e,n),l):(e=+e,n=null==n?vn():+n,l.restart((function a(s){s+=i,l.restart(a,i+=e,n),t(s)}),e,n),l)}function hV(t){return function(){return t}}function mV(t){return t[0]}function UV(t){return t[1]}function pV(){this._=null}function FV(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function bV(t,e){var n=e,l=e.R,i=n.U;i?i.L===n?i.L=l:i.R=l:t._=l,l.U=i,n.U=l,n.R=l.L,n.R&&(n.R.U=n),l.L=n}function ZV(t,e){var n=e,l=e.L,i=n.U;i?i.L===n?i.L=l:i.R=l:t._=l,l.U=i,n.U=l,n.L=l.R,n.L&&(n.L.U=n),l.R=n}function NV(t){for(;t.L;)t=t.L;return t}pV.prototype={constructor:pV,insert:function(t,e){var n,l,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=NV(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(l=n.U).L?(i=l.R)&&i.C?(n.C=i.C=!1,l.C=!0,t=l):(t===n.R&&(bV(this,n),n=(t=n).U),n.C=!1,l.C=!0,ZV(this,l)):(i=l.L)&&i.C?(n.C=i.C=!1,l.C=!0,t=l):(t===n.L&&(ZV(this,n),n=(t=n).U),n.C=!1,l.C=!0,bV(this,l)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,l,i=t.U,a=t.L,s=t.R;if(n=a?s?NV(s):a:s,i?i.L===t?i.L=n:i.R=n:this._=n,a&&s?(l=n.C,n.C=t.C,n.L=a,a.U=n,n!==s?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=s,s.U=n):(n.U=i,i=n,t=n.R)):(l=t.C,t=n),t&&(t.U=i),!l)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,bV(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,ZV(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,bV(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,ZV(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,bV(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,ZV(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};const RV=pV;function SV(t,e,n,l){var i=[null,null],a=OV.push(i)-1;return i.left=t,i.right=e,n&&VV(i,t,e,n),l&&VV(i,e,t,l),zV[t.index].halfedges.push(a),zV[e.index].halfedges.push(a),i}function WV(t,e,n){var l=[e,n];return l.left=t,l}function VV(t,e,n,l){t[0]||t[1]?t.left===n?t[1]=l:t[0]=l:(t[0]=l,t.left=e,t.right=n)}function QV(t,e,n,l,i){var a,s=t[0],r=t[1],o=s[0],c=s[1],d=0,u=1,h=r[0]-o,m=r[1]-c;if(a=e-o,h||!(a>0)){if(a/=h,h<0){if(a0){if(a>u)return;a>d&&(d=a)}if(a=l-o,h||!(a<0)){if(a/=h,h<0){if(a>u)return;a>d&&(d=a)}else if(h>0){if(a0)){if(a/=m,m<0){if(a0){if(a>u)return;a>d&&(d=a)}if(a=i-c,m||!(a<0)){if(a/=m,m<0){if(a>u)return;a>d&&(d=a)}else if(m>0){if(a0||u<1)||(d>0&&(t[0]=[o+d*h,c+d*m]),u<1&&(t[1]=[o+u*h,c+u*m]),!0)}}}}}function yV(t,e,n,l,i){var a=t[1];if(a)return!0;var s,r,o=t[0],c=t.left,d=t.right,u=c[0],h=c[1],m=d[0],U=d[1],p=(u+m)/2,F=(h+U)/2;if(U===h){if(p=l)return;if(u>m){if(o){if(o[1]>=i)return}else o=[p,n];a=[p,i]}else{if(o){if(o[1]1)if(u>m){if(o){if(o[1]>=i)return}else o=[(n-r)/s,n];a=[(i-r)/s,i]}else{if(o){if(o[1]=l)return}else o=[e,s*e+r];a=[l,s*l+r]}else{if(o){if(o[0]=-jV)){var m=o*o+c*c,U=d*d+u*u,p=(u*m-c*U)/h,F=(o*U-d*m)/h,b=GV.pop()||new BV;b.arc=t,b.site=i,b.x=p+s,b.y=(b.cy=F+r)+Math.sqrt(p*p+F*F),t.circle=b;for(var Z=null,N=vV._;N;)if(b.y_V)r=r.L;else{if(!((i=a-wV(r,s))>_V)){l>-_V?(e=r.P,n=r):i>-_V?(e=r,n=r.N):e=n=r;break}if(!r.R){e=r;break}r=r.R}!function(t){zV[t.index]={site:t,halfedges:[]}}(t);var o=XV(t);if(xV.insert(e,o),e||n){if(e===n)return kV(e),n=XV(e.site),xV.insert(o,n),o.edge=n.edge=SV(e.site,o.site),JV(e),void JV(n);if(n){kV(e),kV(n);var c=e.site,d=c[0],u=c[1],h=t[0]-d,m=t[1]-u,U=n.site,p=U[0]-d,F=U[1]-u,b=2*(h*F-m*p),Z=h*h+m*m,N=p*p+F*F,R=[(F*Z-m*N)/b+d,(h*N-p*Z)/b+u];VV(n.edge,c,U,R),o.edge=SV(c,t,null,R),n.edge=SV(t,U,null,R),JV(e),JV(n)}else o.edge=SV(e.site,o.site)}}function LV(t,e){var n=t.site,l=n[0],i=n[1],a=i-e;if(!a)return l;var s=t.P;if(!s)return-1/0;var r=(n=s.site)[0],o=n[1],c=o-e;if(!c)return r;var d=r-l,u=1/a-1/c,h=d/c;return u?(-h+Math.sqrt(h*h-2*u*(d*d/(-2*c)-o+c/2+i-a/2)))/u+l:(l+r)/2}function wV(t,e){var n=t.N;if(n)return LV(n,e);var l=t.site;return l[1]===e?l[0]:1/0}var xV,zV,vV,OV,_V=1e-6,jV=1e-12;function KV(t,e,n){return(t[0]-n[0])*(e[1]-t[1])-(t[0]-e[0])*(n[1]-t[1])}function PV(t,e){return e[1]-t[1]||e[0]-t[0]}function AV(t,e){var n,l,i,a=t.sort(PV).pop();for(OV=[],zV=new Array(t.length),xV=new RV,vV=new RV;;)if(i=EV,a&&(!i||a[1]_V||Math.abs(i[0][1]-i[1][1])>_V)||delete OV[a]}(s,r,o,c),function(t,e,n,l){var i,a,s,r,o,c,d,u,h,m,U,p,F=zV.length,b=!0;for(i=0;i_V||Math.abs(p-h)>_V)&&(o.splice(r,0,OV.push(WV(s,m,Math.abs(U-t)<_V&&l-p>_V?[t,Math.abs(u-t)<_V?h:l]:Math.abs(p-l)<_V&&n-U>_V?[Math.abs(h-l)<_V?u:n,l]:Math.abs(U-n)<_V&&p-e>_V?[n,Math.abs(u-n)<_V?h:e]:Math.abs(p-e)<_V&&U-t>_V?[Math.abs(h-e)<_V?u:t,e]:null))-1),++c);c&&(b=!1)}if(b){var Z,N,R,S=1/0;for(i=0,b=null;i=r)return null;var o=t-i.site[0],c=e-i.site[1],d=o*o+c*c;do{i=a.cells[l=s],s=null,i.halfedges.forEach((function(n){var l=a.edges[n],r=l.left;if(r!==i.site&&r||(r=l.right)){var o=t-r[0],c=e-r[1],u=o*o+c*c;ul?(l+i)/2:Math.min(0,l)||Math.max(0,i),s>a?(a+s)/2:Math.min(0,a)||Math.max(0,s))}function uQ(){var t,e,n=aQ,l=sQ,i=dQ,a=oQ,s=cQ,r=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],c=250,d=BU,u=ht("start","zoom","end"),h=500,m=0;function U(t){t.property("__zoom",rQ).on("wheel.zoom",S).on("mousedown.zoom",W).on("dblclick.zoom",V).filter(s).on("touchstart.zoom",Q).on("touchmove.zoom",y).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(r[0],Math.min(r[1],e)))===t.k?t:new tQ(e,t.x,t.y)}function F(t,e,n){var l=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return l===t.x&&i===t.y?t:new tQ(t.k,l,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function Z(t,e,n){t.on("start.zoom",(function(){N(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){N(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=N(t,i),s=l.apply(t,i),r=null==n?b(s):"function"==typeof n?n.apply(t,i):n,o=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),c=t.__zoom,u="function"==typeof e?e.apply(t,i):e,h=d(c.invert(r).concat(o/c.k),u.invert(r).concat(o/u.k));return function(t){if(1===t)t=u;else{var e=h(t),n=o/e[2];t=new tQ(n,r[0]-e[0]*n,r[1]-e[1]*n)}a.zoom(null,t)}}))}function N(t,e,n){return!n&&t.__zooming||new R(t,e)}function R(t,e){this.that=t,this.args=e,this.active=0,this.extent=l.apply(t,e),this.taps=0}function S(){if(n.apply(this,arguments)){var t=N(this,arguments),e=this.__zoom,l=Math.max(r[0],Math.min(r[1],e.k*Math.pow(2,a.apply(this,arguments)))),s=kn(this);if(t.wheel)t.mouse[0][0]===s[0]&&t.mouse[0][1]===s[1]||(t.mouse[1]=e.invert(t.mouse[0]=s)),clearTimeout(t.wheel);else{if(e.k===l)return;t.mouse=[s,e.invert(s)],al(this),t.start()}iQ(),t.wheel=setTimeout(c,150),t.zoom("mouse",i(F(p(e,l),t.mouse[0],t.mouse[1]),t.extent,o))}function c(){t.wheel=null,t.end()}}function W(){if(!e&&n.apply(this,arguments)){var t=N(this,arguments,!0),l=Qe(de.view).on("mousemove.zoom",c,!0).on("mouseup.zoom",d,!0),a=kn(this),s=de.clientX,r=de.clientY;Me(de.view),lQ(),t.mouse=[a,this.__zoom.invert(a)],al(this),t.start()}function c(){if(iQ(),!t.moved){var e=de.clientX-s,n=de.clientY-r;t.moved=e*e+n*n>m}t.zoom("mouse",i(F(t.that.__zoom,t.mouse[0]=kn(t.that),t.mouse[1]),t.extent,o))}function d(){l.on("mousemove.zoom mouseup.zoom",null),ge(de.view,t.moved),iQ(),t.end()}}function V(){if(n.apply(this,arguments)){var t=this.__zoom,e=kn(this),a=t.invert(e),s=t.k*(de.shiftKey?.5:2),r=i(F(p(t,s),e,a),l.apply(this,arguments),o);iQ(),c>0?Qe(this).transition().duration(c).call(Z,r,e):Qe(this).call(U.transform,r)}}function Q(){if(n.apply(this,arguments)){var e,l,i,a,s=de.touches,r=s.length,o=N(this,arguments,de.changedTouches.length===r);for(lQ(),l=0;l{t.exports={graphlib:n(574),layout:n(8123),debug:n(7570),util:{time:n(1138).time,notime:n(1138).notime},version:n(8177)}},1207:(t,e,n)=>{var l=n(8436),i=n(4079);t.exports={run:function(t){var e="greedy"===t.graph().acyclicer?i(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};return l.forEach(t.nodes(),(function a(s){l.has(i,s)||(i[s]=!0,n[s]=!0,l.forEach(t.outEdges(s),(function(t){l.has(n,t.w)?e.push(t):a(t.w)})),delete n[s])})),e}(t);l.forEach(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,l.uniqueId("rev"))}))},undo:function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var l=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,l)}}))}}},1133:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n,l,a,s){var r={width:0,height:0,rank:s,borderType:e},o=a[e][s-1],c=i.addDummyNode(t,"border",r,n);a[e][s]=c,t.setParent(c,l),o&&t.setEdge(o,c,{weight:1})}t.exports=function(t){l.forEach(t.children(),(function e(n){var i=t.children(n),s=t.node(n);if(i.length&&l.forEach(i,e),l.has(s,"minRank")){s.borderLeft=[],s.borderRight=[];for(var r=s.minRank,o=s.maxRank+1;r{var l=n(8436);function i(t){l.forEach(t.nodes(),(function(e){a(t.node(e))})),l.forEach(t.edges(),(function(e){a(t.edge(e))}))}function a(t){var e=t.width;t.width=t.height,t.height=e}function s(t){t.y=-t.y}function r(t){var e=t.x;t.x=t.y,t.y=e}t.exports={adjust:function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||i(t)},undo:function(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){l.forEach(t.nodes(),(function(e){s(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.forEach(n.points,s),l.has(n,"y")&&s(n)}))}(t),"lr"!==e&&"rl"!==e||(function(t){l.forEach(t.nodes(),(function(e){r(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.forEach(n.points,r),l.has(n,"x")&&r(n)}))}(t),i(t))}}},7822:t=>{function e(){var t={};t._next=t._prev=t,this._sentinel=t}function n(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function l(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=e,e.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return n(e),e},e.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&n(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},e.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,l)),n=n._prev;return"["+t.join(", ")+"]"}},7570:(t,e,n)=>{var l=n(8436),i=n(1138),a=n(574).Graph;t.exports={debugOrdering:function(t){var e=i.buildLayerMatrix(t),n=new a({compound:!0,multigraph:!0}).setGraph({});return l.forEach(t.nodes(),(function(e){n.setNode(e,{label:e}),n.setParent(e,"layer"+t.node(e).rank)})),l.forEach(t.edges(),(function(t){n.setEdge(t.v,t.w,{},t.name)})),l.forEach(e,(function(t,e){var i="layer"+e;n.setNode(i,{rank:"same"}),l.reduce(t,(function(t,e){return n.setEdge(t,e,{style:"invis"}),e}))})),n}}},574:(t,e,n)=>{var l;try{l=n(8282)}catch(t){}l||(l=window.graphlib),t.exports=l},4079:(t,e,n)=>{var l=n(8436),i=n(574).Graph,a=n(7822);t.exports=function(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new i,s=0,r=0;l.forEach(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),l.forEach(t.edges(),(function(t){var l=n.edge(t.v,t.w)||0,i=e(t),a=l+i;n.setEdge(t.v,t.w,a),r=Math.max(r,n.node(t.v).out+=i),s=Math.max(s,n.node(t.w).in+=i)}));var c=l.range(r+s+3).map((function(){return new a})),d=s+1;return l.forEach(n.nodes(),(function(t){o(c,d,n.node(t))})),{graph:n,buckets:c,zeroIdx:d}}(t,e||s),c=function(t,e,n){for(var l,i=[],a=e[e.length-1],s=e[0];t.nodeCount();){for(;l=s.dequeue();)r(t,e,n,l);for(;l=a.dequeue();)r(t,e,n,l);if(t.nodeCount())for(var o=e.length-2;o>0;--o)if(l=e[o].dequeue()){i=i.concat(r(t,e,n,l,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return l.flatten(l.map(c,(function(e){return t.outEdges(e.v,e.w)})),!0)};var s=l.constant(1);function r(t,e,n,i,a){var s=a?[]:void 0;return l.forEach(t.inEdges(i.v),(function(l){var i=t.edge(l),r=t.node(l.v);a&&s.push({v:l.v,w:l.w}),r.out-=i,o(e,n,r)})),l.forEach(t.outEdges(i.v),(function(l){var i=t.edge(l),a=l.w,s=t.node(a);s.in-=i,o(e,n,s)})),t.removeNode(i.v),s}function o(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},8123:(t,e,n)=>{var l=n(8436),i=n(1207),a=n(5995),s=n(8093),r=n(1138).normalizeRanks,o=n(4219),c=n(1138).removeEmptyRanks,d=n(2981),u=n(1133),h=n(3258),m=n(3408),U=n(7873),p=n(1138),F=n(574).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?p.time:p.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new F({multigraph:!0,compound:!0}),n=T(t.graph());return e.setGraph(l.merge({},Z,y(n,b),l.pick(n,N))),l.forEach(t.nodes(),(function(n){var i=T(t.node(n));e.setNode(n,l.defaults(y(i,R),S)),e.setParent(n,t.parent(n))})),l.forEach(t.edges(),(function(n){var i=T(t.edge(n));e.setEdge(n,l.merge({},V,y(i,W),l.pick(i,Q)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,l.forEach(t.edges(),(function(n){var l=t.edge(n);l.minlen*=2,"c"!==l.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?l.width+=l.labeloffset:l.height+=l.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){l.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){d.run(t)})),e(" rank",(function(){s(p.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var l=t.node(e.v),i={rank:(t.node(e.w).rank-l.rank)/2+l.rank,e:e};p.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){c(t)})),e(" nestingGraph.cleanup",(function(){d.cleanup(t)})),e(" normalizeRanks",(function(){r(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;l.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=l.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){l.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){o(t)})),e(" addBorderSegments",(function(){u(t)})),e(" order",(function(){m(t)})),e(" insertSelfEdges",(function(){!function(t){var e=p.buildLayerMatrix(t);l.forEach(e,(function(e){var n=0;l.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,l.forEach(a.selfEdges,(function(e){p.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){h.adjust(t)})),e(" position",(function(){U(t)})),e(" positionSelfEdges",(function(){!function(t){l.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var l=t.node(n.e.v),i=l.x+l.width/2,a=l.y,s=n.x-i,r=l.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*s/3,y:a-r},{x:i+5*s/6,y:a-r},{x:i+s,y:a},{x:i+5*s/6,y:a+r},{x:i+2*s/3,y:a+r}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){l.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),s=t.node(l.last(n.borderLeft)),r=t.node(l.last(n.borderRight));n.width=Math.abs(r.x-s.x),n.height=Math.abs(a.y-i.y),n.x=s.x+n.width/2,n.y=i.y+n.height/2}})),l.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(l.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){h.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,s=t.graph(),r=s.marginx||0,o=s.marginy||0;function c(t){var l=t.x,s=t.y,r=t.width,o=t.height;e=Math.min(e,l-r/2),n=Math.max(n,l+r/2),i=Math.min(i,s-o/2),a=Math.max(a,s+o/2)}l.forEach(t.nodes(),(function(e){c(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.has(n,"x")&&c(n)})),e-=r,i-=o,l.forEach(t.nodes(),(function(n){var l=t.node(n);l.x-=e,l.y-=i})),l.forEach(t.edges(),(function(n){var a=t.edge(n);l.forEach(a.points,(function(t){t.x-=e,t.y-=i})),l.has(a,"x")&&(a.x-=e),l.has(a,"y")&&(a.y-=i)})),s.width=n-e+r,s.height=a-i+o}(t)})),e(" assignNodeIntersects",(function(){!function(t){l.forEach(t.edges(),(function(e){var n,l,i=t.edge(e),a=t.node(e.v),s=t.node(e.w);i.points?(n=i.points[0],l=i.points[i.points.length-1]):(i.points=[],n=s,l=a),i.points.unshift(p.intersectRect(a,n)),i.points.push(p.intersectRect(s,l))}))}(t)})),e(" reversePoints",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){l.forEach(t.nodes(),(function(n){var l=t.node(n),i=e.node(n);l&&(l.x=i.x,l.y=i.y,e.children(n).length&&(l.width=i.width,l.height=i.height))})),l.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,l.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var b=["nodesep","edgesep","ranksep","marginx","marginy"],Z={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},N=["acyclicer","ranker","rankdir","align"],R=["width","height"],S={width:0,height:0},W=["minlen","weight","width","height","labeloffset"],V={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Q=["labelpos"];function y(t,e){return l.mapValues(l.pick(t,e),Number)}function T(t){var e={};return l.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},8436:(t,e,n)=>{var l;try{l={cloneDeep:n(361),constant:n(5703),defaults:n(1747),each:n(6073),filter:n(3105),find:n(3311),flatten:n(5564),forEach:n(4486),forIn:n(2620),has:n(8721),isUndefined:n(2353),last:n(928),map:n(5161),mapValues:n(6604),max:n(6162),merge:n(3857),min:n(3632),minBy:n(2762),now:n(7771),pick:n(9722),range:n(6026),reduce:n(4061),sortBy:n(9734),uniqueId:n(3955),values:n(2628),zipObject:n(7287)}}catch(t){}l||(l=window._),t.exports=l},2981:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n,s,r,o,c){var d=t.children(c);if(d.length){var u=i.addBorderNode(t,"_bt"),h=i.addBorderNode(t,"_bb"),m=t.node(c);t.setParent(u,c),m.borderTop=u,t.setParent(h,c),m.borderBottom=h,l.forEach(d,(function(l){a(t,e,n,s,r,o,l);var i=t.node(l),d=i.borderTop?i.borderTop:l,m=i.borderBottom?i.borderBottom:l,U=i.borderTop?s:2*s,p=d!==m?1:r-o[c]+1;t.setEdge(u,d,{weight:U,minlen:p,nestingEdge:!0}),t.setEdge(m,h,{weight:U,minlen:p,nestingEdge:!0})})),t.parent(c)||t.setEdge(e,u,{weight:0,minlen:r+o[c]})}else c!==e&&t.setEdge(e,c,{weight:0,minlen:n})}t.exports={run:function(t){var e=i.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};function n(i,a){var s=t.children(i);s&&s.length&&l.forEach(s,(function(t){n(t,a+1)})),e[i]=a}return l.forEach(t.children(),(function(t){n(t,1)})),e}(t),s=l.max(l.values(n))-1,r=2*s+1;t.graph().nestingRoot=e,l.forEach(t.edges(),(function(e){t.edge(e).minlen*=r}));var o=function(t){return l.reduce(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;l.forEach(t.children(),(function(l){a(t,e,r,o,s,n,l)})),t.graph().nodeRankFactor=r},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,l.forEach(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},5995:(t,e,n)=>{var l=n(8436),i=n(1138);t.exports={run:function(t){t.graph().dummyChains=[],l.forEach(t.edges(),(function(e){!function(t,e){var n,l,a,s=e.v,r=t.node(s).rank,o=e.w,c=t.node(o).rank,d=e.name,u=t.edge(e),h=u.labelRank;if(c!==r+1){for(t.removeEdge(e),a=0,++r;r{var l=n(8436);t.exports=function(t,e,n){var i,a={};l.forEach(n,(function(n){for(var l,s,r=t.parent(n);r;){if((l=t.parent(r))?(s=a[l],a[l]=r):(s=i,i=r),s&&s!==r)return void e.setEdge(s,r);r=l}}))}},5439:(t,e,n)=>{var l=n(8436);t.exports=function(t,e){return l.map(e,(function(e){var n=t.inEdges(e);if(n.length){var i=l.reduce(n,(function(e,n){var l=t.edge(n),i=t.node(n.v);return{sum:e.sum+l.weight*i.order,weight:e.weight+l.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}},3128:(t,e,n)=>{var l=n(8436),i=n(574).Graph;t.exports=function(t,e,n){var a=function(t){for(var e;t.hasNode(e=l.uniqueId("_root")););return e}(t),s=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return l.forEach(t.nodes(),(function(i){var r=t.node(i),o=t.parent(i);(r.rank===e||r.minRank<=e&&e<=r.maxRank)&&(s.setNode(i),s.setParent(i,o||a),l.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=s.edge(n,i),r=l.isUndefined(a)?0:a.weight;s.setEdge(n,i,{weight:t.edge(e).weight+r})})),l.has(r,"minRank")&&s.setNode(i,{borderLeft:r.borderLeft[e],borderRight:r.borderRight[e]}))})),s}},6630:(t,e,n)=>{var l=n(8436);function i(t,e,n){for(var i=l.zipObject(n,l.map(n,(function(t,e){return e}))),a=l.flatten(l.map(e,(function(e){return l.sortBy(l.map(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")})),!0),s=1;s0;)e%2&&(n+=o[e+1]),o[e=e-1>>1]+=t.weight;c+=t.weight*n}))),c}t.exports=function(t,e){for(var n=0,l=1;l{var l=n(8436),i=n(2588),a=n(6630),s=n(1026),r=n(3128),o=n(5093),c=n(574).Graph,d=n(1138);function u(t,e,n){return l.map(e,(function(e){return r(t,e,n)}))}function h(t,e){var n=new c;l.forEach(t,(function(t){var i=t.graph().root,a=s(t,i,n,e);l.forEach(a.vs,(function(e,n){t.node(e).order=n})),o(t,n,a.vs)}))}function m(t,e){l.forEach(e,(function(e){l.forEach(e,(function(e,n){t.node(e).order=n}))}))}t.exports=function(t){var e=d.maxRank(t),n=u(t,l.range(1,e+1),"inEdges"),s=u(t,l.range(e-1,-1,-1),"outEdges"),r=i(t);m(t,r);for(var o,c=Number.POSITIVE_INFINITY,U=0,p=0;p<4;++U,++p){h(U%2?n:s,U%4>=2),r=d.buildLayerMatrix(t);var F=a(t,r);F{var l=n(8436);t.exports=function(t){var e={},n=l.filter(t.nodes(),(function(e){return!t.children(e).length})),i=l.max(l.map(n,(function(e){return t.node(e).rank}))),a=l.map(l.range(i+1),(function(){return[]})),s=l.sortBy(n,(function(e){return t.node(e).rank}));return l.forEach(s,(function n(i){if(!l.has(e,i)){e[i]=!0;var s=t.node(i);a[s.rank].push(i),l.forEach(t.successors(i),n)}})),a}},9567:(t,e,n)=>{var l=n(8436);t.exports=function(t,e){var n={};return l.forEach(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};l.isUndefined(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),l.forEach(e.edges(),(function(t){var e=n[t.v],i=n[t.w];l.isUndefined(e)||l.isUndefined(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){var n,i,a,s;e.merged||(l.isUndefined(e.barycenter)||l.isUndefined(t.barycenter)||e.barycenter>=t.barycenter)&&(i=e,a=0,s=0,(n=t).weight&&(a+=n.barycenter*n.weight,s+=n.weight),i.weight&&(a+=i.barycenter*i.weight,s+=i.weight),n.vs=i.vs.concat(n.vs),n.barycenter=a/s,n.weight=s,n.i=Math.min(i.i,n.i),i.merged=!0)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),l.forEach(a.in.reverse(),n(a)),l.forEach(a.out,i(a))}return l.map(l.filter(e,(function(t){return!t.merged})),(function(t){return l.pick(t,["vs","i","barycenter","weight"])}))}(l.filter(n,(function(t){return!t.indegree})))}},1026:(t,e,n)=>{var l=n(8436),i=n(5439),a=n(9567),s=n(7304);t.exports=function t(e,n,r,o){var c=e.children(n),d=e.node(n),u=d?d.borderLeft:void 0,h=d?d.borderRight:void 0,m={};u&&(c=l.filter(c,(function(t){return t!==u&&t!==h})));var U=i(e,c);l.forEach(U,(function(n){if(e.children(n.v).length){var i=t(e,n.v,r,o);m[n.v]=i,l.has(i,"barycenter")&&(a=n,s=i,l.isUndefined(a.barycenter)?(a.barycenter=s.barycenter,a.weight=s.weight):(a.barycenter=(a.barycenter*a.weight+s.barycenter*s.weight)/(a.weight+s.weight),a.weight+=s.weight))}var a,s}));var p=a(U,r);!function(t,e){l.forEach(t,(function(t){t.vs=l.flatten(t.vs.map((function(t){return e[t]?e[t].vs:t})),!0)}))}(p,m);var F=s(p,o);if(u&&(F.vs=l.flatten([u,F.vs,h],!0),e.predecessors(u).length)){var b=e.node(e.predecessors(u)[0]),Z=e.node(e.predecessors(h)[0]);l.has(F,"barycenter")||(F.barycenter=0,F.weight=0),F.barycenter=(F.barycenter*F.weight+b.order+Z.order)/(F.weight+2),F.weight+=2}return F}},7304:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n){for(var i;e.length&&(i=l.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n,s=i.partition(t,(function(t){return l.has(t,"barycenter")})),r=s.lhs,o=l.sortBy(s.rhs,(function(t){return-t.i})),c=[],d=0,u=0,h=0;r.sort((n=!!e,function(t,e){return t.barycentere.barycenter?1:n?e.i-t.i:t.i-e.i})),h=a(c,o,h),l.forEach(r,(function(t){h+=t.vs.length,c.push(t.vs),d+=t.barycenter*t.weight,u+=t.weight,h=a(c,o,h)}));var m={vs:l.flatten(c,!0)};return u&&(m.barycenter=d/u,m.weight=u),m}},4219:(t,e,n)=>{var l=n(8436);t.exports=function(t){var e=function(t){var e={},n=0;return l.forEach(t.children(),(function i(a){var s=n;l.forEach(t.children(a),i),e[a]={low:s,lim:n++}})),e}(t);l.forEach(t.graph().dummyChains,(function(n){for(var l=t.node(n),i=l.edgeObj,a=function(t,e,n,l){var i,a,s=[],r=[],o=Math.min(e[n].low,e[l].low),c=Math.max(e[n].lim,e[l].lim);i=n;do{i=t.parent(i),s.push(i)}while(i&&(e[i].low>o||c>e[i].lim));for(a=i,i=l;(i=t.parent(i))!==a;)r.push(i);return{path:s.concat(r.reverse()),lca:a}}(t,e,i.v,i.w),s=a.path,r=a.lca,o=0,c=s[o],d=!0;n!==i.w;){if(l=t.node(n),d){for(;(c=s[o])!==r&&t.node(c).maxRank{var l=n(8436),i=n(574).Graph,a=n(1138);function s(t,e){var n={};return l.reduce(e,(function(e,i){var a=0,s=0,r=e.length,c=l.last(i);return l.forEach(i,(function(e,d){var u=function(t,e){if(t.node(e).dummy)return l.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=u?t.node(u).order:r;(u||e===c)&&(l.forEach(i.slice(s,d+1),(function(e){l.forEach(t.predecessors(e),(function(l){var i=t.node(l),s=i.order;!(sr)&&o(n,e,c)}))}))}return l.reduce(e,(function(e,n){var a,s=-1,r=0;return l.forEach(n,(function(l,o){if("border"===t.node(l).dummy){var c=t.predecessors(l);c.length&&(a=t.node(c[0]).order,i(n,r,o,s,a),r=o,s=a)}i(n,r,n.length,a,e.length)})),n})),n}function o(t,e,n){if(e>n){var l=e;e=n,n=l}var i=t[e];i||(t[e]=i={}),i[n]=!0}function c(t,e,n){if(e>n){var i=e;e=n,n=i}return l.has(t[e],n)}function d(t,e,n,i){var a={},s={},r={};return l.forEach(e,(function(t){l.forEach(t,(function(t,e){a[t]=t,s[t]=t,r[t]=e}))})),l.forEach(e,(function(t){var e=-1;l.forEach(t,(function(t){var o=i(t);if(o.length){o=l.sortBy(o,(function(t){return r[t]}));for(var d=(o.length-1)/2,u=Math.floor(d),h=Math.ceil(d);u<=h;++u){var m=o[u];s[t]===t&&e{var l=n(8436),i=n(1138),a=n(3573).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;l.forEach(e,(function(e){var i=l.max(l.map(e,(function(e){return t.node(e).height})));l.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),l.forEach(a(t),(function(e,n){t.node(n).x=e}))}},300:(t,e,n)=>{var l=n(8436),i=n(574).Graph,a=n(6681).slack;function s(t,e){return l.forEach(t.nodes(),(function n(i){l.forEach(e.nodeEdges(i),(function(l){var s=l.v,r=i===s?l.w:s;t.hasNode(r)||a(e,l)||(t.setNode(r,{}),t.setEdge(i,r,{}),n(r))}))})),t.nodeCount()}function r(t,e){return l.minBy(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return a(e,n)}))}function o(t,e,n){l.forEach(t.nodes(),(function(t){e.node(t).rank+=n}))}t.exports=function(t){var e,n,l=new i({directed:!1}),c=t.nodes()[0],d=t.nodeCount();for(l.setNode(c,{});s(l,t){var l=n(6681).longestPath,i=n(300),a=n(2472);t.exports=function(t){switch(t.graph().ranker){case"network-simplex":default:!function(t){a(t)}(t);break;case"tight-tree":!function(t){l(t),i(t)}(t);break;case"longest-path":s(t)}};var s=l},2472:(t,e,n)=>{var l=n(8436),i=n(300),a=n(6681).slack,s=n(6681).longestPath,r=n(574).alg.preorder,o=n(574).alg.postorder,c=n(1138).simplify;function d(t){t=c(t),s(t);var e,n=i(t);for(m(n),u(n,t);e=p(n);)b(n,t,e,F(n,t,e))}function u(t,e){var n=o(t,t.nodes());n=n.slice(0,n.length-1),l.forEach(n,(function(n){!function(t,e,n){var l=t.node(n).parent;t.edge(n,l).cutvalue=h(t,e,n)}(t,e,n)}))}function h(t,e,n){var i=t.node(n).parent,a=!0,s=e.edge(n,i),r=0;return s||(a=!1,s=e.edge(i,n)),r=s.weight,l.forEach(e.nodeEdges(n),(function(l){var s,o,c=l.v===n,d=c?l.w:l.v;if(d!==i){var u=c===a,h=e.edge(l).weight;if(r+=u?h:-h,s=n,o=d,t.hasEdge(s,o)){var m=t.edge(n,d).cutvalue;r+=u?-m:m}}})),r}function m(t,e){arguments.length<2&&(e=t.nodes()[0]),U(t,{},1,e)}function U(t,e,n,i,a){var s=n,r=t.node(i);return e[i]=!0,l.forEach(t.neighbors(i),(function(a){l.has(e,a)||(n=U(t,e,n,a,i))})),r.low=s,r.lim=n++,a?r.parent=a:delete r.parent,n}function p(t){return l.find(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function F(t,e,n){var i=n.v,s=n.w;e.hasEdge(i,s)||(i=n.w,s=n.v);var r=t.node(i),o=t.node(s),c=r,d=!1;r.lim>o.lim&&(c=o,d=!0);var u=l.filter(e.edges(),(function(e){return d===Z(0,t.node(e.v),c)&&d!==Z(0,t.node(e.w),c)}));return l.minBy(u,(function(t){return a(e,t)}))}function b(t,e,n,i){var a=n.v,s=n.w;t.removeEdge(a,s),t.setEdge(i.v,i.w,{}),m(t),u(t,e),function(t,e){var n=l.find(t.nodes(),(function(t){return!e.node(t).parent})),i=r(t,n);i=i.slice(1),l.forEach(i,(function(n){var l=t.node(n).parent,i=e.edge(n,l),a=!1;i||(i=e.edge(l,n),a=!0),e.node(n).rank=e.node(l).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function Z(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=d,d.initLowLimValues=m,d.initCutValues=u,d.calcCutValue=h,d.leaveEdge=p,d.enterEdge=F,d.exchangeEdges=b},6681:(t,e,n)=>{var l=n(8436);t.exports={longestPath:function(t){var e={};l.forEach(t.sources(),(function n(i){var a=t.node(i);if(l.has(e,i))return a.rank;e[i]=!0;var s=l.min(l.map(t.outEdges(i),(function(e){return n(e.w)-t.edge(e).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),a.rank=s}))},slack:function(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}}},1138:(t,e,n)=>{var l=n(8436),i=n(574).Graph;function a(t,e,n,i){var a;do{a=l.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function s(t){return l.max(l.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!l.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return l.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),l.forEach(t.edges(),(function(n){var l=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:l.weight+i.weight,minlen:Math.max(l.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return l.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),l.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=l.map(t.nodes(),(function(e){var n={};return l.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return l.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=l.map(t.nodes(),(function(e){var n={};return l.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return l.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,l,i=t.x,a=t.y,s=e.x-i,r=e.y-a,o=t.width/2,c=t.height/2;if(!s&&!r)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(r)*o>Math.abs(s)*c?(r<0&&(c=-c),n=c*s/r,l=c):(s<0&&(o=-o),n=o,l=o*r/s),{x:i+n,y:a+l}},buildLayerMatrix:function(t){var e=l.map(l.range(s(t)+1),(function(){return[]}));return l.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;l.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=l.min(l.map(t.nodes(),(function(e){return t.node(e).rank})));l.forEach(t.nodes(),(function(n){var i=t.node(n);l.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=l.min(l.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];l.forEach(t.nodes(),(function(l){var i=t.node(l).rank-e;n[i]||(n[i]=[]),n[i].push(l)}));var i=0,a=t.graph().nodeRankFactor;l.forEach(n,(function(e,n){l.isUndefined(e)&&n%a!=0?--i:i&&l.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,l){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=l),a(t,"border",i,e)},maxRank:s,partition:function(t,e){var n={lhs:[],rhs:[]};return l.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=l.now();try{return e()}finally{console.log(t+" time: "+(l.now()-n)+"ms")}},notime:function(t,e){return e()}}},8177:t=>{t.exports="0.8.5"},7856:function(t){t.exports=function(){var t=Object.hasOwnProperty,e=Object.setPrototypeOf,n=Object.isFrozen,l=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,s=Object.seal,r=Object.create,o="undefined"!=typeof Reflect&&Reflect,c=o.apply,d=o.construct;c||(c=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),s||(s=function(t){return t}),d||(d=function(t,e){return new(Function.prototype.bind.apply(t,[null].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?n-1:0),i=1;i/gm),f=s(/^data-[\-\w.\u00B7-\uFFFF]/),L=s(/^aria-[\-\w]+$/),w=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),x=s(/^(?:\w+script|data):/i),z=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function O(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e0&&void 0!==arguments[0]?arguments[0]:_(),n=function(e){return t(e)};if(n.version="2.3.5",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var l=e.document,i=e.document,s=e.DocumentFragment,r=e.HTMLTemplateElement,o=e.Node,c=e.Element,d=e.NodeFilter,u=e.NamedNodeMap,W=void 0===u?e.NamedNodeMap||e.MozNamedAttrMap:u,K=e.HTMLFormElement,P=e.DOMParser,A=e.trustedTypes,H=c.prototype,q=y(H,"cloneNode"),$=y(H,"nextSibling"),tt=y(H,"childNodes"),et=y(H,"parentNode");if("function"==typeof r){var nt=i.createElement("template");nt.content&&nt.content.ownerDocument&&(i=nt.content.ownerDocument)}var lt=j(A,l),it=lt?lt.createHTML(""):"",at=i,st=at.implementation,rt=at.createNodeIterator,ot=at.createDocumentFragment,ct=at.getElementsByTagName,dt=l.importNode,ut={};try{ut=Q(i).documentMode?i.documentMode:{}}catch(t){}var ht={};n.isSupported="function"==typeof et&&st&&void 0!==st.createHTMLDocument&&9!==ut;var mt=I,Ut=D,pt=f,Ft=L,bt=x,Zt=z,Nt=w,Rt=null,St=V({},[].concat(O(T),O(M),O(g),O(G),O(J))),Wt=null,Vt=V({},[].concat(O(k),O(Y),O(C),O(X))),Qt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),yt=null,Tt=null,Mt=!0,gt=!0,Et=!1,Gt=!1,Bt=!1,Jt=!1,kt=!1,Yt=!1,Ct=!1,Xt=!1,It=!0,Dt=!0,ft=!1,Lt={},wt=null,xt=V({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),zt=null,vt=V({},["audio","video","img","source","image","track"]),Ot=null,_t=V({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),jt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Pt="http://www.w3.org/1999/xhtml",At=Pt,Ht=!1,qt=void 0,$t=["application/xhtml+xml","text/html"],te="text/html",ee=void 0,ne=null,le=i.createElement("form"),ie=function(t){return t instanceof RegExp||t instanceof Function},ae=function(t){ne&&ne===t||(t&&"object"===(void 0===t?"undefined":v(t))||(t={}),t=Q(t),Rt="ALLOWED_TAGS"in t?V({},t.ALLOWED_TAGS):St,Wt="ALLOWED_ATTR"in t?V({},t.ALLOWED_ATTR):Vt,Ot="ADD_URI_SAFE_ATTR"in t?V(Q(_t),t.ADD_URI_SAFE_ATTR):_t,zt="ADD_DATA_URI_TAGS"in t?V(Q(vt),t.ADD_DATA_URI_TAGS):vt,wt="FORBID_CONTENTS"in t?V({},t.FORBID_CONTENTS):xt,yt="FORBID_TAGS"in t?V({},t.FORBID_TAGS):{},Tt="FORBID_ATTR"in t?V({},t.FORBID_ATTR):{},Lt="USE_PROFILES"in t&&t.USE_PROFILES,Mt=!1!==t.ALLOW_ARIA_ATTR,gt=!1!==t.ALLOW_DATA_ATTR,Et=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Gt=t.SAFE_FOR_TEMPLATES||!1,Bt=t.WHOLE_DOCUMENT||!1,Yt=t.RETURN_DOM||!1,Ct=t.RETURN_DOM_FRAGMENT||!1,Xt=t.RETURN_TRUSTED_TYPE||!1,kt=t.FORCE_BODY||!1,It=!1!==t.SANITIZE_DOM,Dt=!1!==t.KEEP_CONTENT,ft=t.IN_PLACE||!1,Nt=t.ALLOWED_URI_REGEXP||Nt,At=t.NAMESPACE||Pt,t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Qt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Qt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Qt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),qt=qt=-1===$t.indexOf(t.PARSER_MEDIA_TYPE)?te:t.PARSER_MEDIA_TYPE,ee="application/xhtml+xml"===qt?function(t){return t}:p,Gt&&(gt=!1),Ct&&(Yt=!0),Lt&&(Rt=V({},[].concat(O(J))),Wt=[],!0===Lt.html&&(V(Rt,T),V(Wt,k)),!0===Lt.svg&&(V(Rt,M),V(Wt,Y),V(Wt,X)),!0===Lt.svgFilters&&(V(Rt,g),V(Wt,Y),V(Wt,X)),!0===Lt.mathMl&&(V(Rt,G),V(Wt,C),V(Wt,X))),t.ADD_TAGS&&(Rt===St&&(Rt=Q(Rt)),V(Rt,t.ADD_TAGS)),t.ADD_ATTR&&(Wt===Vt&&(Wt=Q(Wt)),V(Wt,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&V(Ot,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(wt===xt&&(wt=Q(wt)),V(wt,t.FORBID_CONTENTS)),Dt&&(Rt["#text"]=!0),Bt&&V(Rt,["html","head","body"]),Rt.table&&(V(Rt,["tbody"]),delete yt.tbody),a&&a(t),ne=t)},se=V({},["mi","mo","mn","ms","mtext"]),re=V({},["foreignobject","desc","title","annotation-xml"]),oe=V({},M);V(oe,g),V(oe,E);var ce=V({},G);V(ce,B);var de=function(t){var e=et(t);e&&e.tagName||(e={namespaceURI:Pt,tagName:"template"});var n=p(t.tagName),l=p(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Pt?"svg"===n:e.namespaceURI===jt?"svg"===n&&("annotation-xml"===l||se[l]):Boolean(oe[n]);if(t.namespaceURI===jt)return e.namespaceURI===Pt?"math"===n:e.namespaceURI===Kt?"math"===n&&re[l]:Boolean(ce[n]);if(t.namespaceURI===Pt){if(e.namespaceURI===Kt&&!re[l])return!1;if(e.namespaceURI===jt&&!se[l])return!1;var i=V({},["title","style","font","a","script"]);return!ce[n]&&(i[n]||!oe[n])}return!1},ue=function(t){U(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){try{t.outerHTML=it}catch(e){t.remove()}}},he=function(t,e){try{U(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){U(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!Wt[t])if(Yt||Ct)try{ue(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},me=function(t){var e=void 0,n=void 0;if(kt)t=""+t;else{var l=F(t,/^[\r\n\t ]+/);n=l&&l[0]}"application/xhtml+xml"===qt&&(t=''+t+"");var a=lt?lt.createHTML(t):t;if(At===Pt)try{e=(new P).parseFromString(a,qt)}catch(t){}if(!e||!e.documentElement){e=st.createDocument(At,"template",null);try{e.documentElement.innerHTML=Ht?"":a}catch(t){}}var s=e.body||e.documentElement;return t&&n&&s.insertBefore(i.createTextNode(n),s.childNodes[0]||null),At===Pt?ct.call(e,Bt?"html":"body")[0]:Bt?e.documentElement:s},Ue=function(t){return rt.call(t.ownerDocument||t,t,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT,null,!1)},pe=function(t){return t instanceof K&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof W)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore)},Fe=function(t){return"object"===(void 0===o?"undefined":v(o))?t instanceof o:t&&"object"===(void 0===t?"undefined":v(t))&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},be=function(t,e,l){ht[t]&&h(ht[t],(function(t){t.call(n,e,l,ne)}))},Ze=function(t){var e=void 0;if(be("beforeSanitizeElements",t,null),pe(t))return ue(t),!0;if(F(t.nodeName,/[\u0080-\uFFFF]/))return ue(t),!0;var l=ee(t.nodeName);if(be("uponSanitizeElement",t,{tagName:l,allowedTags:Rt}),!Fe(t.firstElementChild)&&(!Fe(t.content)||!Fe(t.content.firstElementChild))&&R(/<[/\w]/g,t.innerHTML)&&R(/<[/\w]/g,t.textContent))return ue(t),!0;if("select"===l&&R(/