Skip to content

Instantly share code, notes, and snippets.

@justlebeau
Last active April 4, 2016 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save justlebeau/06c5cf11d91b99eee5ac1304604b9394 to your computer and use it in GitHub Desktop.
Save justlebeau/06c5cf11d91b99eee5ac1304604b9394 to your computer and use it in GitHub Desktop.
Gun Purchases Multi-Line with dygraphs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEltcGxlbWVudCBhIHZhZ3VlIGZhY3NpbWlsaWUgb2YgalF1ZXJ5J3MgZGF0YSBtZXRob2QKICBmdW5jdGlvbiBlbGVtZW50RGF0YShlbCwgbmFtZSwgdmFsdWUpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgcmV0dXJuIGVsWyJodG1sd2lkZ2V0X2RhdGFfIiArIG5hbWVdOwogICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHsKICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsKICAgICAgcmV0dXJuIGVsOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArCiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7CiAgICB9CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0NDYxNzAvZXNjYXBlLXN0cmluZy1mb3ItdXNlLWluLWphdmFzY3JpcHQtcmVnZXgKICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpIHsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBlc2NhcGVSZWdFeHAoY2xhc3NOYW1lKSArICJcXGIiKTsKICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7CiAgfQoKICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cwogIC8vIGNsYXNzTmFtZSAtIGNsYXNzIG5hbWUgdG8gdGVzdCBmb3IKICAvLyBpbmNsdWRlIC0gaWYgdHJ1ZSwgb25seSByZXR1cm4gZWxlbWVudHMgd2l0aCBnaXZlbiBjbGFzc05hbWU7CiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQogIGZ1bmN0aW9uIGZpbHRlckJ5Q2xhc3MoZWxlbWVudHMsIGNsYXNzTmFtZSwgaW5jbHVkZSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnRzW2ldLCBjbGFzc05hbWUpID09IGluY2x1ZGUpCiAgICAgICAgcmVzdWx0cy5wdXNoKGVsZW1lbnRzW2ldKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KCiAgZnVuY3Rpb24gb24ob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KSB7CiAgICAgIG9iai5hdHRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7CiAgICBpZiAob2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgIG9iai5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7CiAgICAgIG9iai5kZXRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgLy8gVHJhbnNsYXRlIGFycmF5IG9mIHZhbHVlcyB0byB0b3AvcmlnaHQvYm90dG9tL2xlZnQsIGFzIHVzdWFsIHdpdGgKICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQogIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wYWRkaW5nCiAgZnVuY3Rpb24gdW5wYWNrUGFkZGluZyh2YWx1ZSkgewogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQogICAgICB2YWx1ZSA9IFt2YWx1ZV07CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAyKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAzKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSA0KSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07CiAgICB9CiAgfQoKICAvLyBDb252ZXJ0IGFuIHVucGFja2VkIHBhZGRpbmcgb2JqZWN0IHRvIGEgQ1NTIHZhbHVlCiAgZnVuY3Rpb24gcGFkZGluZ1RvQ3NzKHBhZGRpbmdPYmopIHsKICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7CiAgfQoKICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTCiAgZnVuY3Rpb24gcHgoeCkgewogICAgaWYgKHR5cGVvZih4KSA9PT0gIm51bWJlciIpCiAgICAgIHJldHVybiB4ICsgInB4IjsKICAgIGVsc2UKICAgICAgcmV0dXJuIHg7CiAgfQoKICAvLyBSZXRyaWV2ZXMgcnVudGltZSB3aWRnZXQgc2l6aW5nIGluZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LgogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsCiAgLy8gZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0IGZpZWxkcy4KICBmdW5jdGlvbiBzaXppbmdQb2xpY3koZWwpIHsKICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsKICAgIGlmICghc2l6aW5nRWwpCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOwogICAgaWYgKHZpZXdlck1vZGUpIHsKICAgICAgcmV0dXJuIHNwLnZpZXdlcjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBzcC5icm93c2VyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gYXMgYW4gb3V0cHV0IGJpbmRpbmcuCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyBhIFNoaW55IG91dHB1dCBiaW5kaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZSwKICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0IGlmIHdlJ3JlIG5vdC4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IGV4dGVuZChuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpLCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgLy8gTkI6IHNoaW55QmluZGluZy5pbml0aWFsaXplIG1heSBiZSB1bmRlZmluZWQsIGFzIGl0J3Mgb3B0aW9uYWwuCgogICAgICAvLyBSZW5hbWUgaW5pdGlhbGl6ZSB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgY2FsbGVkIGJ5IGEgZnV0dXJlIHZlcnNpb24KICAgICAgLy8gb2YgU2hpbnkgdGhhdCBkb2VzIHN1cHBvcnQgaW5pdGlhbGl6ZSBkaXJlY3RseS4KICAgICAgc2hpbnlCaW5kaW5nLl9odG1sd2lkZ2V0c19pbml0aWFsaXplID0gc2hpbnlCaW5kaW5nLmluaXRpYWxpemU7CiAgICAgIGRlbGV0ZSBzaGlueUJpbmRpbmcuaW5pdGlhbGl6ZTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKCiAgICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CgogICAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAgIC8vIHRpbWVzLgogICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICAgIH07CiAgICAgIH0pOwoKICAgICAgb3ZlcnJpZGVNZXRob2Qoc2hpbnlCaW5kaW5nLCAicmVuZGVyVmFsdWUiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICh0aGlzLl9odG1sd2lkZ2V0c19pbml0aWFsaXplKSB7CiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2h0bWx3aWRnZXRzX2luaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgICBzdXBlcmZ1bmMoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgInJlc2l6ZSIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIHN1cGVyZnVuYyhlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgc2hpbnlCaW5kaW5nLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKCJzaG93biIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigiaGlkZGVuIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICAvLyBXYWl0IHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgbG9hZGVkIHRvIHJlbmRlciB0aGUgd2lkZ2V0cy4KICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07Cn0pKCk7Cgo="></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2ZvcihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwppZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGNiKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2IoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYigpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWI6YmIpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmI7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRiKGEpe3ZhciBiPWViLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYj1uZXcgUmVnRXhwKCI8KD86IitlYisiKVtcXHMvPl0iLCJpIiksaGI9L15ccysvLGliPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamI9LzwoW1x3Ol0rKS8sa2I9Lzx0Ym9keS9pLGxiPS88fCYjP1x3KzsvLG1iPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2I9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBiPS9edHJ1ZVwvKC4qKS8scWI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJiPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2I9ZGIoeSksdGI9c2IuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmIub3B0Z3JvdXA9cmIub3B0aW9uLHJiLnRib2R5PXJiLnRmb290PXJiLmNvbGdyb3VwPXJiLmNhcHRpb249cmIudGhlYWQscmIudGg9cmIudGQ7ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWIoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZiKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdiKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWIoYSl7dmFyIGI9cGIuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YihhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYihhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYihhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGIoYikudGV4dD1hLnRleHQseWIoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYi50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRiLmlubmVySFRNTD1hLm91dGVySFRNTCx0Yi5yZW1vdmVDaGlsZChmPXRiLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YihmKSxoPXViKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmIoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWIoYSksZD1kfHx1YihmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFiKGUsZFtnXSk7ZWxzZSBBYihhLGYpO3JldHVybiBkPXViKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnpiKGQsIWkmJnViKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYihiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYi50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamIuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJiW2ldfHxyYi5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYiwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhiLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2IudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYi50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHViKHAsImlucHV0IiksdmIpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXViKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnpiKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2IudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWIoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6Yih1YihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHViKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmIsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWIudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2IudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoYSl8fHJiWyhqYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGliLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWIodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5iLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YihpLCJzY3JpcHQiKSx4YiksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWIoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWIpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYi50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWIsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENiLERiPXt9O2Z1bmN0aW9uIEViKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYihhKXt2YXIgYj15LGM9RGJbYV07cmV0dXJuIGN8fChjPUViKGEsYiksIm5vbmUiIT09YyYmY3x8KENiPShDYnx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2JbMF0uY29udGVudFdpbmRvd3x8Q2JbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWIoYSxiKSxDYi5kZXRhY2goKSksRGJbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYj0vXm1hcmdpbi8sSGI9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYixKYixLYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxtLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bS5zdHlsZShhLGIpKSxIYi50ZXN0KGcpJiZHYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSGIudGVzdChnKSYmIUtiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBMYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ZCYmZC5zdHlsZSl7Yy5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGsub3BhY2l0eT0iMC41Ij09PWMub3BhY2l0eSxrLmNzc0Zsb2F0PSEhYy5jc3NGbG9hdCxiLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsYi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGsuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1iLnN0eWxlLmJhY2tncm91bmRDbGlwLGsuYm94U2l6aW5nPSIiPT09Yy5ib3hTaXppbmd8fCIiPT09Yy5Nb3pCb3hTaXppbmd8fCIiPT09Yy5XZWJraXRCb3hTaXppbmcsbS5leHRlbmQoayx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWcmJmkoKSxnfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1mJiZpKCksZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1lJiZpKCksZX0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZpKCksaH19KTtmdW5jdGlvbiBpKCl7dmFyIGIsYyxkLGk7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixlPWY9ITEsaD0hMCxhLmdldENvbXB1dGVkU3R5bGUmJihlPSIxJSIhPT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt9KS50b3AsZj0iNHB4Ij09PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsaT1iLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpLGkuc3R5bGUuY3NzVGV4dD1iLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsaS5zdHlsZS5tYXJnaW5SaWdodD1pLnN0eWxlLndpZHRoPSIwIixiLnN0eWxlLndpZHRoPSIxcHgiLGg9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpKSxiLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGlbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZz0wPT09aVswXS5vZmZzZXRIZWlnaHQsZyYmKGlbMF0uc3R5bGUuZGlzcGxheT0iIixpWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0KSxjLnJlbW92ZUNoaWxkKGQpKX19fSgpLG0uc3dhcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07dmFyIE1iPS9hbHBoYVwoW14pXSpcKS9pLE5iPS9vcGFjaXR5XHMqPVxzKihbXildKikvLE9iPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxQYj1uZXcgUmVnRXhwKCJeKCIrUysiKSguKikkIiwiaSIpLFFiPW5ldyBSZWdFeHAoIl4oWystXSk9KCIrUysiKSIsImkiKSxSYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sU2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFRiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gVWIoYSxiKXtpZihiIGluIGEpcmV0dXJuIGI7dmFyIGM9Yi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPVRiLmxlbmd0aDt3aGlsZShlLS0paWYoYj1UYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSxjPWQuc3R5bGUuZGlzcGxheSxiPyhmW2ddfHwibm9uZSIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmVShkKSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IixGYihkLm5vZGVOYW1lKSkpKTooZT1VKGQpLChjJiYibm9uZSIhPT1jfHwhZSkmJm0uX2RhdGEoZCwib2xkZGlzcGxheSIsZT9jOm0uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkPVBiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gWGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW0uY3NzKGEsYytUW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBZYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9SWIoYSksZz1rLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUpiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSGIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihrLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWGIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW0uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9SmIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjprLmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtpZihiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVViKGksaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTtpZihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9UWIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChtLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bS5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksIShnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSkpKSl0cnl7aVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYik7cmV0dXJuIGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoYS5zdHlsZSxoKSksZz1tLmNzc0hvb2tzW2JdfHxtLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9SmIoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gU2ImJihmPVNiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG0uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxtLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9PYi50ZXN0KG0uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP20uc3dhcChhLFJiLGZ1bmN0aW9uKCl7cmV0dXJuIFliKGEsYixkKX0pOlliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSWIoYSk7cmV0dXJuIFdiKGEsYyxkP1hiKGEsYixkLGsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGUpOjApfX19KSxrLm9wYWNpdHl8fChtLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBOYi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9bS5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IisxMDAqYisiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xLChiPj0xfHwiIj09PWIpJiYiIj09PW0udHJpbShmLnJlcGxhY2UoTWIsIiIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT1ifHxkJiYhZC5maWx0ZXIpfHwoYy5maWx0ZXI9TWIudGVzdChmKT9mLnJlcGxhY2UoTWIsZSk6ZisiICIrZSl9fSksbS5jc3NIb29rcy5tYXJnaW5SaWdodD1MYihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9tLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sSmIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG0uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1RbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sR2IudGVzdChhKXx8KG0uY3NzSG9va3NbYStiXS5zZXQ9V2IpfSksbS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobS5pc0FycmF5KGIpKXtmb3IoZD1JYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1tLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bS5zdHlsZShhLGIsYyk6bS5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VSh0aGlzKT9tKHRoaXMpLnNob3coKTptKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIFpiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBaYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW0uVHdlZW49WmIsWmIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobS5jc3NOdW1iZXJbY10/IiI6InB4IikKfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxaYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9iLGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJjLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpjKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYnx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRsZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMmJnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMpfX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVOYW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCksd2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFjPS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3QoeWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxjKEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsiIikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNlKEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixjKSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZYyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<link href="data:text/css;charset=utf-8,%0Adiv%20%2Edygraphs%20input%5Btype%3D%22text%22%5D%20%7B%0Awidth%3A%2025px%3B%0A%7D%0Adiv%20%2Eqt%20%2Edygraph%2Daxis%2Dlabel%20%7B%0Afont%2Dsize%3A%2011px%3B%0A%7D" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyohIEBsaWNlbnNlIENvcHlyaWdodCAyMDE0IERhbiBWYW5kZXJrYW0gKGRhbnZka0BnbWFpbC5jb20pIE1JVC1saWNlbnNlZCAoaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkgKi8KIWZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijtmb3IodmFyIGUsYSxpPXt9LHI9ZnVuY3Rpb24oKXt9LG49Im1lbW9yeSIuc3BsaXQoIiwiKSxvPSJhc3NlcnQsY2xlYXIsY291bnQsZGVidWcsZGlyLGRpcnhtbCxlcnJvcixleGNlcHRpb24sZ3JvdXAsZ3JvdXBDb2xsYXBzZWQsZ3JvdXBFbmQsaW5mbyxsb2csbWFya1RpbWVsaW5lLHByb2ZpbGUscHJvZmlsZXMscHJvZmlsZUVuZCxzaG93LHRhYmxlLHRpbWUsdGltZUVuZCx0aW1lbGluZSx0aW1lbGluZUVuZCx0aW1lU3RhbXAsdHJhY2Usd2FybiIuc3BsaXQoIiwiKTtlPW4ucG9wKCk7KXRbZV09dFtlXXx8aTtmb3IoO2E9by5wb3AoKTspdFthXT10W2FdfHxyfSh0aGlzLmNvbnNvbGU9dGhpcy5jb25zb2xlfHx7fSksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5pbnN0YWxsUGF0dGVybj1mdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuaXNQYXR0ZXJuSW5zdGFsbGVkKXRocm93Ik11c3QgdW4taW5zdGFsbCBvbGQgbGluZSBwYXR0ZXJuIGJlZm9yZSBpbnN0YWxsaW5nIGEgbmV3IG9uZS4iO3RoaXMuaXNQYXR0ZXJuSW5zdGFsbGVkPSEwO3ZhciBlPVswLDBdLGE9W10saT10aGlzLmJlZ2luUGF0aCxyPXRoaXMubGluZVRvLG49dGhpcy5tb3ZlVG8sbz10aGlzLnN0cm9rZTt0aGlzLnVuaW5zdGFsbFBhdHRlcm49ZnVuY3Rpb24oKXt0aGlzLmJlZ2luUGF0aD1pLHRoaXMubGluZVRvPXIsdGhpcy5tb3ZlVG89bix0aGlzLnN0cm9rZT1vLHRoaXMudW5pbnN0YWxsUGF0dGVybj12b2lkIDAsdGhpcy5pc1BhdHRlcm5JbnN0YWxsZWQ9dm9pZCAwfSx0aGlzLmJlZ2luUGF0aD1mdW5jdGlvbigpe2E9W10saS5jYWxsKHRoaXMpfSx0aGlzLm1vdmVUbz1mdW5jdGlvbih0LGUpe2EucHVzaChbW3QsZV1dKSxuLmNhbGwodGhpcyx0LGUpfSx0aGlzLmxpbmVUbz1mdW5jdGlvbih0LGUpe3ZhciBpPWFbYS5sZW5ndGgtMV07aS5wdXNoKFt0LGVdKX0sdGhpcy5zdHJva2U9ZnVuY3Rpb24oKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIHZvaWQgby5jYWxsKHRoaXMpO2Zvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKWZvcih2YXIgcz1hW2ldLGw9c1swXVswXSxoPXNbMF1bMV0scD0xO3A8cy5sZW5ndGg7cCsrKXt2YXIgZz1zW3BdWzBdLGQ9c1twXVsxXTt0aGlzLnNhdmUoKTt2YXIgdT1nLWwsYz1kLWgseT1NYXRoLnNxcnQodSp1K2MqYyksXz1NYXRoLmF0YW4yKGMsdSk7dGhpcy50cmFuc2xhdGUobCxoKSxuLmNhbGwodGhpcywwLDApLHRoaXMucm90YXRlKF8pO2Zvcih2YXIgdj1lWzBdLGY9MDt5PmY7KXt2YXIgeD10W3ZdO2YrPWVbMV0/ZVsxXTp4LGY+eT8oZT1bdixmLXldLGY9eSk6ZT1bKHYrMSkldC5sZW5ndGgsMF0sdiUyPT09MD9yLmNhbGwodGhpcyxmLDApOm4uY2FsbCh0aGlzLGYsMCksdj0odisxKSV0Lmxlbmd0aH10aGlzLnJlc3RvcmUoKSxsPWcsaD1kfW8uY2FsbCh0aGlzKSxhPVtdfX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS51bmluc3RhbGxQYXR0ZXJuPWZ1bmN0aW9uKCl7dGhyb3ciTXVzdCBpbnN0YWxsIGEgbGluZSBwYXR0ZXJuIGJlZm9yZSB1bmluc3RhbGxpbmcgaXQuIn19KCk7dmFyIER5Z3JhcGhPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKHQpe3RoaXMuZHlncmFwaF89dCx0aGlzLnlBeGVzXz1bXSx0aGlzLnhBeGlzXz17fSx0aGlzLnNlcmllc189e30sdGhpcy5nbG9iYWxfPXRoaXMuZHlncmFwaF8uYXR0cnNfLHRoaXMudXNlcl89dGhpcy5keWdyYXBoXy51c2VyX2F0dHJzX3x8e30sdGhpcy5sYWJlbHNfPVtdLHRoaXMuaGlnaGxpZ2h0U2VyaWVzXz10aGlzLmdldCgiaGlnaGxpZ2h0U2VyaWVzT3B0cyIpfHx7fSx0aGlzLnJlcGFyc2VTZXJpZXMoKX07dC5BWElTX1NUUklOR19NQVBQSU5HU189e3k6MCxZOjAseTE6MCxZMTowLHkyOjEsWTI6MX0sdC5heGlzVG9JbmRleF89ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZih0LkFYSVNfU1RSSU5HX01BUFBJTkdTXy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gdC5BWElTX1NUUklOR19NQVBQSU5HU19bZV07dGhyb3ciVW5rbm93biBheGlzIDogIitlfWlmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoMD09PWV8fDE9PT1lKXJldHVybiBlO3Rocm93IkR5Z3JhcGhzIG9ubHkgc3VwcG9ydHMgdHdvIHktYXhlcywgaW5kZXhlZCBmcm9tIDAtMS4ifWlmKGUpdGhyb3ciVW5rbm93biBheGlzIDogIitlO3JldHVybiAwfSx0LnByb3RvdHlwZS5yZXBhcnNlU2VyaWVzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQoImxhYmVscyIpO2lmKGUpe3RoaXMubGFiZWxzXz1lLnNsaWNlKDEpLHRoaXMueUF4ZXNfPVt7c2VyaWVzOltdLG9wdGlvbnM6e319XSx0aGlzLnhBeGlzXz17b3B0aW9uczp7fX0sdGhpcy5zZXJpZXNfPXt9O3ZhciBhPSF0aGlzLnVzZXJfLnNlcmllcztpZihhKXtmb3IodmFyIGk9MCxyPTA7cjx0aGlzLmxhYmVsc18ubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5sYWJlbHNfW3JdLG89dGhpcy51c2VyX1tuXXx8e30scz0wLGw9by5heGlzOyJvYmplY3QiPT10eXBlb2YgbCYmKHM9KytpLHRoaXMueUF4ZXNfW3NdPXtzZXJpZXM6W25dLG9wdGlvbnM6bH0pLGx8fHRoaXMueUF4ZXNfWzBdLnNlcmllcy5wdXNoKG4pLHRoaXMuc2VyaWVzX1tuXT17aWR4OnIseUF4aXM6cyxvcHRpb25zOm99fWZvcih2YXIgcj0wO3I8dGhpcy5sYWJlbHNfLmxlbmd0aDtyKyspe3ZhciBuPXRoaXMubGFiZWxzX1tyXSxvPXRoaXMuc2VyaWVzX1tuXS5vcHRpb25zLGw9by5heGlzO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7aWYoIXRoaXMuc2VyaWVzXy5oYXNPd25Qcm9wZXJ0eShsKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJTZXJpZXMgIituKyIgd2FudHMgdG8gc2hhcmUgYSB5LWF4aXMgd2l0aCBzZXJpZXMgIitsKyIsIHdoaWNoIGRvZXMgbm90IGRlZmluZSBpdHMgb3duIGF4aXMuIik7dmFyIHM9dGhpcy5zZXJpZXNfW2xdLnlBeGlzO3RoaXMuc2VyaWVzX1tuXS55QXhpcz1zLHRoaXMueUF4ZXNfW3NdLnNlcmllcy5wdXNoKG4pfX19ZWxzZSBmb3IodmFyIHI9MDtyPHRoaXMubGFiZWxzXy5sZW5ndGg7cisrKXt2YXIgbj10aGlzLmxhYmVsc19bcl0sbz10aGlzLnVzZXJfLnNlcmllc1tuXXx8e30scz10LmF4aXNUb0luZGV4XyhvLmF4aXMpO3RoaXMuc2VyaWVzX1tuXT17aWR4OnIseUF4aXM6cyxvcHRpb25zOm99LHRoaXMueUF4ZXNfW3NdP3RoaXMueUF4ZXNfW3NdLnNlcmllcy5wdXNoKG4pOnRoaXMueUF4ZXNfW3NdPXtzZXJpZXM6W25dLG9wdGlvbnM6e319fXZhciBoPXRoaXMudXNlcl8uYXhlc3x8e307RHlncmFwaC51cGRhdGUodGhpcy55QXhlc19bMF0ub3B0aW9ucyxoLnl8fHt9KSx0aGlzLnlBeGVzXy5sZW5ndGg+MSYmRHlncmFwaC51cGRhdGUodGhpcy55QXhlc19bMV0ub3B0aW9ucyxoLnkyfHx7fSksRHlncmFwaC51cGRhdGUodGhpcy54QXhpc18ub3B0aW9ucyxoLnh8fHt9KX19LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEdsb2JhbFVzZXJfKHQpO3JldHVybiBudWxsIT09ZT9lOnRoaXMuZ2V0R2xvYmFsRGVmYXVsdF8odCl9LHQucHJvdG90eXBlLmdldEdsb2JhbFVzZXJfPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVzZXJfLmhhc093blByb3BlcnR5KHQpP3RoaXMudXNlcl9bdF06bnVsbH0sdC5wcm90b3R5cGUuZ2V0R2xvYmFsRGVmYXVsdF89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2xvYmFsXy5oYXNPd25Qcm9wZXJ0eSh0KT90aGlzLmdsb2JhbF9bdF06RHlncmFwaC5ERUZBVUxUX0FUVFJTLmhhc093blByb3BlcnR5KHQpP0R5Z3JhcGguREVGQVVMVF9BVFRSU1t0XTpudWxsfSx0LnByb3RvdHlwZS5nZXRGb3JBeGlzPWZ1bmN0aW9uKHQsZSl7dmFyIGEsaTtpZigibnVtYmVyIj09dHlwZW9mIGUpYT1lLGk9MD09PWE/InkiOiJ5MiI7ZWxzZXtpZigieTEiPT1lJiYoZT0ieSIpLCJ5Ij09ZSlhPTA7ZWxzZSBpZigieTIiPT1lKWE9MTtlbHNle2lmKCJ4IiE9ZSl0aHJvdyJVbmtub3duIGF4aXMgIitlO2E9LTF9aT1lfXZhciByPS0xPT1hP3RoaXMueEF4aXNfOnRoaXMueUF4ZXNfW2FdO2lmKHIpe3ZhciBuPXIub3B0aW9ucztpZihuLmhhc093blByb3BlcnR5KHQpKXJldHVybiBuW3RdfWlmKCJ4IiE9PWV8fCJsb2dzY2FsZSIhPT10KXt2YXIgbz10aGlzLmdldEdsb2JhbFVzZXJfKHQpO2lmKG51bGwhPT1vKXJldHVybiBvfXZhciBzPUR5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzW2ldO3JldHVybiBzLmhhc093blByb3BlcnR5KHQpP3NbdF06dGhpcy5nZXRHbG9iYWxEZWZhdWx0Xyh0KX0sdC5wcm90b3R5cGUuZ2V0Rm9yU2VyaWVzPWZ1bmN0aW9uKHQsZSl7aWYoZT09PXRoaXMuZHlncmFwaF8uZ2V0SGlnaGxpZ2h0U2VyaWVzKCkmJnRoaXMuaGlnaGxpZ2h0U2VyaWVzXy5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gdGhpcy5oaWdobGlnaHRTZXJpZXNfW3RdO2lmKCF0aGlzLnNlcmllc18uaGFzT3duUHJvcGVydHkoZSkpdGhyb3ciVW5rbm93biBzZXJpZXM6ICIrZTt2YXIgYT10aGlzLnNlcmllc19bZV0saT1hLm9wdGlvbnM7cmV0dXJuIGkuaGFzT3duUHJvcGVydHkodCk/aVt0XTp0aGlzLmdldEZvckF4aXModCxhLnlBeGlzKX0sdC5wcm90b3R5cGUubnVtQXhlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnlBeGVzXy5sZW5ndGh9LHQucHJvdG90eXBlLmF4aXNGb3JTZXJpZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VyaWVzX1t0XS55QXhpc30sdC5wcm90b3R5cGUuYXhpc09wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueUF4ZXNfW3RdLm9wdGlvbnN9LHQucHJvdG90eXBlLnNlcmllc0ZvckF4aXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueUF4ZXNfW3RdLnNlcmllc30sdC5wcm90b3R5cGUuc2VyaWVzTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYWJlbHNffTtyZXR1cm4gdH0oKX0oKSxEeWdyYXBoTGF5b3V0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKHQpe3RoaXMuZHlncmFwaF89dCx0aGlzLnBvaW50cz1bXSx0aGlzLnNldE5hbWVzPVtdLHRoaXMuYW5ub3RhdGlvbnM9W10sdGhpcy55QXhlc189bnVsbCx0aGlzLnhUaWNrc189bnVsbCx0aGlzLnlUaWNrc189bnVsbH07cmV0dXJuIHQucHJvdG90eXBlLmFkZERhdGFzZXQ9ZnVuY3Rpb24odCxlKXt0aGlzLnBvaW50cy5wdXNoKGUpLHRoaXMuc2V0TmFtZXMucHVzaCh0KX0sdC5wcm90b3R5cGUuZ2V0UGxvdEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcmVhX30sdC5wcm90b3R5cGUuY29tcHV0ZVBsb3RBcmVhPWZ1bmN0aW9uKCl7dmFyIHQ9e3g6MCx5OjB9O3Qudz10aGlzLmR5Z3JhcGhfLndpZHRoXy10LngtdGhpcy5keWdyYXBoXy5nZXRPcHRpb24oInJpZ2h0R2FwIiksdC5oPXRoaXMuZHlncmFwaF8uaGVpZ2h0Xzt2YXIgZT17Y2hhcnRfZGl2OnRoaXMuZHlncmFwaF8uZ3JhcGhEaXYscmVzZXJ2ZVNwYWNlTGVmdDpmdW5jdGlvbihlKXt2YXIgYT17eDp0LngseTp0LnksdzplLGg6dC5ofTtyZXR1cm4gdC54Kz1lLHQudy09ZSxhfSxyZXNlcnZlU3BhY2VSaWdodDpmdW5jdGlvbihlKXt2YXIgYT17eDp0LngrdC53LWUseTp0LnksdzplLGg6dC5ofTtyZXR1cm4gdC53LT1lLGF9LHJlc2VydmVTcGFjZVRvcDpmdW5jdGlvbihlKXt2YXIgYT17eDp0LngseTp0Lnksdzp0LncsaDplfTtyZXR1cm4gdC55Kz1lLHQuaC09ZSxhfSxyZXNlcnZlU3BhY2VCb3R0b206ZnVuY3Rpb24oZSl7dmFyIGE9e3g6dC54LHk6dC55K3QuaC1lLHc6dC53LGg6ZX07cmV0dXJuIHQuaC09ZSxhfSxjaGFydFJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm57eDp0LngseTp0Lnksdzp0LncsaDp0Lmh9fX07dGhpcy5keWdyYXBoXy5jYXNjYWRlRXZlbnRzXygibGF5b3V0IixlKSx0aGlzLmFyZWFfPXR9LHQucHJvdG90eXBlLnNldEFubm90YXRpb25zPWZ1bmN0aW9uKHQpe3RoaXMuYW5ub3RhdGlvbnM9W107Zm9yKHZhciBlPXRoaXMuZHlncmFwaF8uZ2V0T3B0aW9uKCJ4VmFsdWVQYXJzZXIiKXx8ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9e307aWYoIXRbYV0ueHZhbCYmdm9pZCAwPT09dFthXS54KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkFubm90YXRpb25zIG11c3QgaGF2ZSBhbiAneCcgcHJvcGVydHkiKTtpZih0W2FdLmljb24mJighdFthXS5oYXNPd25Qcm9wZXJ0eSgid2lkdGgiKXx8IXRbYV0uaGFzT3duUHJvcGVydHkoImhlaWdodCIpKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJNdXN0IHNldCB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gc2V0dGluZyBhbm5vdGF0aW9uLmljb24gcHJvcGVydHkiKTtEeWdyYXBoLnVwZGF0ZShpLHRbYV0pLGkueHZhbHx8KGkueHZhbD1lKGkueCkpLHRoaXMuYW5ub3RhdGlvbnMucHVzaChpKX19LHQucHJvdG90eXBlLnNldFhUaWNrcz1mdW5jdGlvbih0KXt0aGlzLnhUaWNrc189dH0sdC5wcm90b3R5cGUuc2V0WUF4ZXM9ZnVuY3Rpb24odCl7dGhpcy55QXhlc189dH0sdC5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLl94QXhpcz17fSx0aGlzLl9ldmFsdWF0ZUxpbWl0cygpLHRoaXMuX2V2YWx1YXRlTGluZUNoYXJ0cygpLHRoaXMuX2V2YWx1YXRlTGluZVRpY2tzKCksdGhpcy5fZXZhbHVhdGVBbm5vdGF0aW9ucygpfSx0LnByb3RvdHlwZS5fZXZhbHVhdGVMaW1pdHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmR5Z3JhcGhfLnhBeGlzUmFuZ2UoKTt0aGlzLl94QXhpcy5taW52YWw9dFswXSx0aGlzLl94QXhpcy5tYXh2YWw9dFsxXTt2YXIgZT10WzFdLXRbMF07dGhpcy5feEF4aXMuc2NhbGU9MCE9PWU/MS9lOjEsdGhpcy5keWdyYXBoXy5nZXRPcHRpb25Gb3JBeGlzKCJsb2dzY2FsZSIsIngiKSYmKHRoaXMuX3hBeGlzLnhsb2dyYW5nZT1EeWdyYXBoLmxvZzEwKHRoaXMuX3hBeGlzLm1heHZhbCktRHlncmFwaC5sb2cxMCh0aGlzLl94QXhpcy5taW52YWwpLHRoaXMuX3hBeGlzLnhsb2dzY2FsZT0wIT09dGhpcy5feEF4aXMueGxvZ3JhbmdlPzEvdGhpcy5feEF4aXMueGxvZ3JhbmdlOjEpO2Zvcih2YXIgYT0wO2E8dGhpcy55QXhlc18ubGVuZ3RoO2ErKyl7dmFyIGk9dGhpcy55QXhlc19bYV07aS5taW55dmFsPWkuY29tcHV0ZWRWYWx1ZVJhbmdlWzBdLGkubWF4eXZhbD1pLmNvbXB1dGVkVmFsdWVSYW5nZVsxXSxpLnlyYW5nZT1pLm1heHl2YWwtaS5taW55dmFsLGkueXNjYWxlPTAhPT1pLnlyYW5nZT8xL2kueXJhbmdlOjEsdGhpcy5keWdyYXBoXy5nZXRPcHRpb24oImxvZ3NjYWxlIikmJihpLnlsb2dyYW5nZT1EeWdyYXBoLmxvZzEwKGkubWF4eXZhbCktRHlncmFwaC5sb2cxMChpLm1pbnl2YWwpLGkueWxvZ3NjYWxlPTAhPT1pLnlsb2dyYW5nZT8xL2kueWxvZ3JhbmdlOjEsKCFpc0Zpbml0ZShpLnlsb2dyYW5nZSl8fGlzTmFOKGkueWxvZ3JhbmdlKSkmJmNvbnNvbGUuZXJyb3IoImF4aXMgIithKyIgb2YgZ3JhcGggYXQgIitpLmcrIiBjYW4ndCBiZSBkaXNwbGF5ZWQgaW4gbG9nIHNjYWxlIGZvciByYW5nZSBbIitpLm1pbnl2YWwrIiAtICIraS5tYXh5dmFsKyJdIikpfX0sdC5jYWxjWE5vcm1hbF89ZnVuY3Rpb24odCxlLGEpe3JldHVybiBhPyhEeWdyYXBoLmxvZzEwKHQpLUR5Z3JhcGgubG9nMTAoZS5taW52YWwpKSplLnhsb2dzY2FsZToodC1lLm1pbnZhbCkqZS5zY2FsZX0sdC5jYWxjWU5vcm1hbF89ZnVuY3Rpb24odCxlLGEpe2lmKGEpe3ZhciBpPTEtKER5Z3JhcGgubG9nMTAoZSktRHlncmFwaC5sb2cxMCh0Lm1pbnl2YWwpKSp0Lnlsb2dzY2FsZTtyZXR1cm4gaXNGaW5pdGUoaSk/aTowLzB9cmV0dXJuIDEtKGUtdC5taW55dmFsKSp0LnlzY2FsZX0sdC5wcm90b3R5cGUuX2V2YWx1YXRlTGluZUNoYXJ0cz1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbigic3RhY2tlZEdyYXBoIiksYT10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbkZvckF4aXMoImxvZ3NjYWxlIiwieCIpLGk9MDtpPHRoaXMucG9pbnRzLmxlbmd0aDtpKyspe2Zvcih2YXIgcj10aGlzLnBvaW50c1tpXSxuPXRoaXMuc2V0TmFtZXNbaV0sbz10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbigiY29ubmVjdFNlcGFyYXRlZFBvaW50cyIsbikscz10aGlzLmR5Z3JhcGhfLmF4aXNQcm9wZXJ0aWVzRm9yU2VyaWVzKG4pLGw9dGhpcy5keWdyYXBoXy5hdHRyaWJ1dGVzXy5nZXRGb3JTZXJpZXMoImxvZ3NjYWxlIixuKSxoPTA7aDxyLmxlbmd0aDtoKyspe3ZhciBwPXJbaF07cC54PXQuY2FsY1hOb3JtYWxfKHAueHZhbCx0aGlzLl94QXhpcyxhKTt2YXIgZz1wLnl2YWw7ZSYmKHAueV9zdGFja2VkPXQuY2FsY1lOb3JtYWxfKHMscC55dmFsX3N0YWNrZWQsbCksbnVsbD09PWd8fGlzTmFOKGcpfHwoZz1wLnl2YWxfc3RhY2tlZCkpLG51bGw9PT1nJiYoZz0wLzAsb3x8KHAueXZhbD0wLzApKSxwLnk9dC5jYWxjWU5vcm1hbF8ocyxnLGwpfXRoaXMuZHlncmFwaF8uZGF0YUhhbmRsZXJfLm9uTGluZUV2YWx1YXRlZChyLHMsbCl9fSx0LnByb3RvdHlwZS5fZXZhbHVhdGVMaW5lVGlja3M9ZnVuY3Rpb24oKXt2YXIgdCxlLGEsaTtmb3IodGhpcy54dGlja3M9W10sdD0wO3Q8dGhpcy54VGlja3NfLmxlbmd0aDt0KyspZT10aGlzLnhUaWNrc19bdF0sYT1lLmxhYmVsLGk9dGhpcy5keWdyYXBoXy50b1BlcmNlbnRYQ29vcmQoZS52KSxpPj0wJiYxPmkmJnRoaXMueHRpY2tzLnB1c2goW2ksYV0pO2Zvcih0aGlzLnl0aWNrcz1bXSx0PTA7dDx0aGlzLnlBeGVzXy5sZW5ndGg7dCsrKWZvcih2YXIgcj10aGlzLnlBeGVzX1t0XSxuPTA7bjxyLnRpY2tzLmxlbmd0aDtuKyspZT1yLnRpY2tzW25dLGE9ZS5sYWJlbCxpPXRoaXMuZHlncmFwaF8udG9QZXJjZW50WUNvb3JkKGUudix0KSxpPjAmJjE+PWkmJnRoaXMueXRpY2tzLnB1c2goW3QsaSxhXSl9LHQucHJvdG90eXBlLl9ldmFsdWF0ZUFubm90YXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQsZT17fTtmb3IodD0wO3Q8dGhpcy5hbm5vdGF0aW9ucy5sZW5ndGg7dCsrKXt2YXIgYT10aGlzLmFubm90YXRpb25zW3RdO2VbYS54dmFsKyIsIithLnNlcmllc109YX1pZih0aGlzLmFubm90YXRlZF9wb2ludHM9W10sdGhpcy5hbm5vdGF0aW9ucyYmdGhpcy5hbm5vdGF0aW9ucy5sZW5ndGgpZm9yKHZhciBpPTA7aTx0aGlzLnBvaW50cy5sZW5ndGg7aSsrKXt2YXIgcj10aGlzLnBvaW50c1tpXTtmb3IodD0wO3Q8ci5sZW5ndGg7dCsrKXt2YXIgbj1yW3RdLG89bi54dmFsKyIsIituLm5hbWU7byBpbiBlJiYobi5hbm5vdGF0aW9uPWVbb10sdGhpcy5hbm5vdGF0ZWRfcG9pbnRzLnB1c2gobikpfX19LHQucHJvdG90eXBlLnJlbW92ZUFsbERhdGFzZXRzPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMucG9pbnRzLGRlbGV0ZSB0aGlzLnNldE5hbWVzLGRlbGV0ZSB0aGlzLnNldFBvaW50c0xlbmd0aHMsZGVsZXRlIHRoaXMuc2V0UG9pbnRzT2Zmc2V0cyx0aGlzLnBvaW50cz1bXSx0aGlzLnNldE5hbWVzPVtdLHRoaXMuc2V0UG9pbnRzTGVuZ3Rocz1bXSx0aGlzLnNldFBvaW50c09mZnNldHM9W119LHR9KCksRHlncmFwaENhbnZhc1JlbmRlcmVyPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKHQsZSxhLGkpe2lmKHRoaXMuZHlncmFwaF89dCx0aGlzLmxheW91dD1pLHRoaXMuZWxlbWVudD1lLHRoaXMuZWxlbWVudENvbnRleHQ9YSx0aGlzLmhlaWdodD10LmhlaWdodF8sdGhpcy53aWR0aD10LndpZHRoXywhdGhpcy5pc0lFJiYhRHlncmFwaC5pc0NhbnZhc1N1cHBvcnRlZCh0aGlzLmVsZW1lbnQpKXRocm93IkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLiI7aWYodGhpcy5hcmVhPWkuZ2V0UGxvdEFyZWEoKSx0aGlzLmR5Z3JhcGhfLmlzVXNpbmdFeGNhbnZhc18pdGhpcy5fY3JlYXRlSUVDbGlwQXJlYSgpO2Vsc2UgaWYoIUR5Z3JhcGguaXNBbmRyb2lkKCkpe3ZhciByPXRoaXMuZHlncmFwaF8uY2FudmFzX2N0eF87ci5iZWdpblBhdGgoKSxyLnJlY3QodGhpcy5hcmVhLngsdGhpcy5hcmVhLnksdGhpcy5hcmVhLncsdGhpcy5hcmVhLmgpLHIuY2xpcCgpLHI9dGhpcy5keWdyYXBoXy5oaWRkZW5fY3R4XyxyLmJlZ2luUGF0aCgpLHIucmVjdCh0aGlzLmFyZWEueCx0aGlzLmFyZWEueSx0aGlzLmFyZWEudyx0aGlzLmFyZWEuaCksci5jbGlwKCl9fTtyZXR1cm4gdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgdDtpZih0aGlzLmlzSUUpdHJ5e3RoaXMuY2xlYXJEZWxheSYmKHRoaXMuY2xlYXJEZWxheS5jYW5jZWwoKSx0aGlzLmNsZWFyRGVsYXk9bnVsbCksdD10aGlzLmVsZW1lbnRDb250ZXh0fWNhdGNoKGUpe3JldHVybn10PXRoaXMuZWxlbWVudENvbnRleHQsdC5jbGVhclJlY3QoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQb2ludHMoKSx0aGlzLl9yZW5kZXJMaW5lQ2hhcnQoKX0sdC5wcm90b3R5cGUuX2NyZWF0ZUlFQ2xpcEFyZWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKDAhPT10LncmJjAhPT10Lmgpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NOYW1lPWUsaS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9cixpLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaS5zdHlsZS5sZWZ0PXQueCsicHgiLGkuc3R5bGUudG9wPXQueSsicHgiLGkuc3R5bGUud2lkdGg9dC53KyJweCIsaS5zdHlsZS5oZWlnaHQ9dC5oKyJweCIsYS5hcHBlbmRDaGlsZChpKX19Zm9yKHZhciBlPSJkeWdyYXBoLWNsaXAtZGl2IixhPXRoaXMuZHlncmFwaF8uZ3JhcGhEaXYsaT1hLmNoaWxkTm9kZXMubGVuZ3RoLTE7aT49MDtpLS0pYS5jaGlsZE5vZGVzW2ldLmNsYXNzTmFtZT09ZSYmYS5yZW1vdmVDaGlsZChhLmNoaWxkTm9kZXNbaV0pO2Zvcih2YXIgcj1kb2N1bWVudC5iZ0NvbG9yLG49dGhpcy5keWdyYXBoXy5ncmFwaERpdjtuIT1kb2N1bWVudDspe3ZhciBvPW4uY3VycmVudFN0eWxlLmJhY2tncm91bmRDb2xvcjtpZihvJiYidHJhbnNwYXJlbnQiIT1vKXtyPW87YnJlYWt9bj1uLnBhcmVudE5vZGV9dmFyIHM9dGhpcy5hcmVhO3Qoe3g6MCx5OjAsdzpzLngsaDp0aGlzLmhlaWdodH0pLHQoe3g6cy54LHk6MCx3OnRoaXMud2lkdGgtcy54LGg6cy55fSksdCh7eDpzLngrcy53LHk6MCx3OnRoaXMud2lkdGgtcy54LXMudyxoOnRoaXMuaGVpZ2h0fSksdCh7eDpzLngseTpzLnkrcy5oLHc6dGhpcy53aWR0aC1zLngsaDp0aGlzLmhlaWdodC1zLmgtcy55fSl9LHQuX2dldEl0ZXJhdG9yUHJlZGljYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlP3QuX3ByZWRpY2F0ZVRoYXRTa2lwc0VtcHR5UG9pbnRzOm51bGx9LHQuX3ByZWRpY2F0ZVRoYXRTa2lwc0VtcHR5UG9pbnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGwhPT10W2VdLnl2YWx9LHQuX2RyYXdTdHlsZWRMaW5lPWZ1bmN0aW9uKGUsYSxpLHIsbixvLHMpe3ZhciBsPWUuZHlncmFwaCxoPWwuZ2V0Qm9vbGVhbk9wdGlvbigic3RlcFBsb3QiLGUuc2V0TmFtZSk7RHlncmFwaC5pc0FycmF5TGlrZShyKXx8KHI9bnVsbCk7dmFyIHA9bC5nZXRCb29sZWFuT3B0aW9uKCJkcmF3R2FwRWRnZVBvaW50cyIsZS5zZXROYW1lKSxnPWUucG9pbnRzLGQ9ZS5zZXROYW1lLHU9RHlncmFwaC5jcmVhdGVJdGVyYXRvcihnLDAsZy5sZW5ndGgsdC5fZ2V0SXRlcmF0b3JQcmVkaWNhdGUobC5nZXRCb29sZWFuT3B0aW9uKCJjb25uZWN0U2VwYXJhdGVkUG9pbnRzIixkKSkpLGM9ciYmci5sZW5ndGg+PTIseT1lLmRyYXdpbmdDb250ZXh0O3kuc2F2ZSgpLGMmJnkuaW5zdGFsbFBhdHRlcm4ocik7dmFyIF89dC5fZHJhd1NlcmllcyhlLHUsaSxzLG4scCxoLGEpO3QuX2RyYXdQb2ludHNPbkxpbmUoZSxfLG8sYSxzKSxjJiZ5LnVuaW5zdGFsbFBhdHRlcm4oKSx5LnJlc3RvcmUoKX0sdC5fZHJhd1Nlcmllcz1mdW5jdGlvbih0LGUsYSxpLHIsbixvLHMpe3ZhciBsLGgscD1udWxsLGc9bnVsbCxkPW51bGwsdT1bXSxjPSEwLHk9dC5kcmF3aW5nQ29udGV4dDt5LmJlZ2luUGF0aCgpLHkuc3Ryb2tlU3R5bGU9cyx5LmxpbmVXaWR0aD1hO2Zvcih2YXIgXz1lLmFycmF5Xyx2PWUuZW5kXyxmPWUucHJlZGljYXRlXyx4PWUuc3RhcnRfO3Y+eDt4Kyspe2lmKGg9X1t4XSxmKXtmb3IoO3Y+eCYmIWYoXyx4KTspeCsrO2lmKHg9PXYpYnJlYWs7aD1fW3hdfWlmKG51bGw9PT1oLmNhbnZhc3l8fGguY2FudmFzeSE9aC5jYW52YXN5KW8mJm51bGwhPT1wJiYoeS5tb3ZlVG8ocCxnKSx5LmxpbmVUbyhoLmNhbnZhc3gsZykpLHA9Zz1udWxsO2Vsc2V7aWYobD0hMSxufHwhcCl7ZS5uZXh0SWR4Xz14LGUubmV4dCgpLGQ9ZS5oYXNOZXh0P2UucGVlay5jYW52YXN5Om51bGw7dmFyIG09bnVsbD09PWR8fGQhPWQ7bD0hcCYmbSxuJiYoIWMmJiFwfHxlLmhhc05leHQmJm0pJiYobD0hMCl9bnVsbCE9PXA/YSYmKG8mJih5Lm1vdmVUbyhwLGcpLHkubGluZVRvKGguY2FudmFzeCxnKSkseS5saW5lVG8oaC5jYW52YXN4LGguY2FudmFzeSkpOnkubW92ZVRvKGguY2FudmFzeCxoLmNhbnZhc3kpLChyfHxsKSYmdS5wdXNoKFtoLmNhbnZhc3gsaC5jYW52YXN5LGguaWR4XSkscD1oLmNhbnZhc3gsZz1oLmNhbnZhc3l9Yz0hMX1yZXR1cm4geS5zdHJva2UoKSx1fSx0Ll9kcmF3UG9pbnRzT25MaW5lPWZ1bmN0aW9uKHQsZSxhLGkscil7Zm9yKHZhciBuPXQuZHJhd2luZ0NvbnRleHQsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgcz1lW29dO24uc2F2ZSgpLGEuY2FsbCh0LmR5Z3JhcGgsdC5keWdyYXBoLHQuc2V0TmFtZSxuLHNbMF0sc1sxXSxpLHIsc1syXSksbi5yZXN0b3JlKCl9fSx0LnByb3RvdHlwZS5fdXBkYXRlUG9pbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMubGF5b3V0LnBvaW50cyxlPXQubGVuZ3RoO2UtLTspZm9yKHZhciBhPXRbZV0saT1hLmxlbmd0aDtpLS07KXt2YXIgcj1hW2ldO3IuY2FudmFzeD10aGlzLmFyZWEudypyLngrdGhpcy5hcmVhLngsci5jYW52YXN5PXRoaXMuYXJlYS5oKnIueSt0aGlzLmFyZWEueX19LHQucHJvdG90eXBlLl9yZW5kZXJMaW5lQ2hhcnQ9ZnVuY3Rpb24odCxlKXt2YXIgYSxpLHI9ZXx8dGhpcy5lbGVtZW50Q29udGV4dCxuPXRoaXMubGF5b3V0LnBvaW50cyxvPXRoaXMubGF5b3V0LnNldE5hbWVzO3RoaXMuY29sb3JzPXRoaXMuZHlncmFwaF8uY29sb3JzTWFwXzt2YXIgcz10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbigicGxvdHRlciIpLGw9cztEeWdyYXBoLmlzQXJyYXlMaWtlKGwpfHwobD1bbF0pO3ZhciBoPXt9O2ZvcihhPTA7YTxvLmxlbmd0aDthKyspe2k9b1thXTt2YXIgcD10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbigicGxvdHRlciIsaSk7cCE9cyYmKGhbaV09cCl9Zm9yKGE9MDthPGwubGVuZ3RoO2ErKylmb3IodmFyIGc9bFthXSxkPWE9PWwubGVuZ3RoLTEsdT0wO3U8bi5sZW5ndGg7dSsrKWlmKGk9b1t1XSwhdHx8aT09dCl7dmFyIGM9blt1XSx5PWc7aWYoaSBpbiBoKXtpZighZCljb250aW51ZTt5PWhbaV19dmFyIF89dGhpcy5jb2xvcnNbaV0sdj10aGlzLmR5Z3JhcGhfLmdldE9wdGlvbigic3Ryb2tlV2lkdGgiLGkpO3Iuc2F2ZSgpLHIuc3Ryb2tlU3R5bGU9XyxyLmxpbmVXaWR0aD12LHkoe3BvaW50czpjLHNldE5hbWU6aSxkcmF3aW5nQ29udGV4dDpyLGNvbG9yOl8sc3Ryb2tlV2lkdGg6dixkeWdyYXBoOnRoaXMuZHlncmFwaF8sYXhpczp0aGlzLmR5Z3JhcGhfLmF4aXNQcm9wZXJ0aWVzRm9yU2VyaWVzKGkpLHBsb3RBcmVhOnRoaXMuYXJlYSxzZXJpZXNJbmRleDp1LHNlcmllc0NvdW50Om4ubGVuZ3RoLHNpbmdsZVNlcmllc05hbWU6dCxhbGxTZXJpZXNQb2ludHM6bn0pLHIucmVzdG9yZSgpfX0sdC5fUGxvdHRlcnM9e2xpbmVQbG90dGVyOmZ1bmN0aW9uKGUpe3QuX2xpbmVQbG90dGVyKGUpfSxmaWxsUGxvdHRlcjpmdW5jdGlvbihlKXt0Ll9maWxsUGxvdHRlcihlKX0sZXJyb3JQbG90dGVyOmZ1bmN0aW9uKGUpe3QuX2Vycm9yUGxvdHRlcihlKX19LHQuX2xpbmVQbG90dGVyPWZ1bmN0aW9uKGUpe3ZhciBhPWUuZHlncmFwaCxpPWUuc2V0TmFtZSxyPWUuc3Ryb2tlV2lkdGgsbj1hLmdldE51bWVyaWNPcHRpb24oInN0cm9rZUJvcmRlcldpZHRoIixpKSxvPWEuZ2V0T3B0aW9uKCJkcmF3UG9pbnRDYWxsYmFjayIsaSl8fER5Z3JhcGguQ2lyY2xlcy5ERUZBVUxULHM9YS5nZXRPcHRpb24oInN0cm9rZVBhdHRlcm4iLGkpLGw9YS5nZXRCb29sZWFuT3B0aW9uKCJkcmF3UG9pbnRzIixpKSxoPWEuZ2V0TnVtZXJpY09wdGlvbigicG9pbnRTaXplIixpKTtuJiZyJiZ0Ll9kcmF3U3R5bGVkTGluZShlLGEuZ2V0T3B0aW9uKCJzdHJva2VCb3JkZXJDb2xvciIsaSkscisyKm4scyxsLG8saCksdC5fZHJhd1N0eWxlZExpbmUoZSxlLmNvbG9yLHIscyxsLG8saCl9LHQuX2Vycm9yUGxvdHRlcj1mdW5jdGlvbihlKXt2YXIgYT1lLmR5Z3JhcGgsaT1lLnNldE5hbWUscj1hLmdldEJvb2xlYW5PcHRpb24oImVycm9yQmFycyIpfHxhLmdldEJvb2xlYW5PcHRpb24oImN1c3RvbUJhcnMiKTtpZihyKXt2YXIgbj1hLmdldEJvb2xlYW5PcHRpb24oImZpbGxHcmFwaCIsaSk7biYmY29uc29sZS53YXJuKCJDYW4ndCB1c2UgZmlsbEdyYXBoIG9wdGlvbiB3aXRoIGVycm9yIGJhcnMiKTt2YXIgbyxzPWUuZHJhd2luZ0NvbnRleHQsbD1lLmNvbG9yLGg9YS5nZXROdW1lcmljT3B0aW9uKCJmaWxsQWxwaGEiLGkpLHA9YS5nZXRCb29sZWFuT3B0aW9uKCJzdGVwUGxvdCIsaSksZz1lLnBvaW50cyxkPUR5Z3JhcGguY3JlYXRlSXRlcmF0b3IoZywwLGcubGVuZ3RoLHQuX2dldEl0ZXJhdG9yUHJlZGljYXRlKGEuZ2V0Qm9vbGVhbk9wdGlvbigiY29ubmVjdFNlcGFyYXRlZFBvaW50cyIsaSkpKSx1PTAvMCxjPTAvMCx5PVstMSwtMV0sXz1EeWdyYXBoLnRvUkdCXyhsKSx2PSJyZ2JhKCIrXy5yKyIsIitfLmcrIiwiK18uYisiLCIraCsiKSI7cy5maWxsU3R5bGU9dixzLmJlZ2luUGF0aCgpO2Zvcih2YXIgZj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXR8fHZvaWQgMD09PXR8fGlzTmFOKHQpfTtkLmhhc05leHQ7KXt2YXIgeD1kLm5leHQoKTshcCYmZih4LnkpfHxwJiYhaXNOYU4oYykmJmYoYyk/dT0wLzA6KG89W3gueV9ib3R0b20seC55X3RvcF0scCYmKGM9eC55KSxpc05hTihvWzBdKSYmKG9bMF09eC55KSxpc05hTihvWzFdKSYmKG9bMV09eC55KSxvWzBdPWUucGxvdEFyZWEuaCpvWzBdK2UucGxvdEFyZWEueSxvWzFdPWUucGxvdEFyZWEuaCpvWzFdK2UucGxvdEFyZWEueSxpc05hTih1KXx8KHA/KHMubW92ZVRvKHUseVswXSkscy5saW5lVG8oeC5jYW52YXN4LHlbMF0pLHMubGluZVRvKHguY2FudmFzeCx5WzFdKSk6KHMubW92ZVRvKHUseVswXSkscy5saW5lVG8oeC5jYW52YXN4LG9bMF0pLHMubGluZVRvKHguY2FudmFzeCxvWzFdKSkscy5saW5lVG8odSx5WzFdKSxzLmNsb3NlUGF0aCgpKSx5PW8sdT14LmNhbnZhc3gpfXMuZmlsbCgpfX0sdC5fZmFzdENhbnZhc1Byb3h5PWZ1bmN0aW9uKHQpe3ZhciBlPVtdLGE9bnVsbCxpPW51bGwscj0xLG49MixvPTAscz1mdW5jdGlvbih0KXtpZighKGUubGVuZ3RoPD0xKSl7Zm9yKHZhciBhPWUubGVuZ3RoLTE7YT4wO2EtLSl7dmFyIGk9ZVthXTtpZihpWzBdPT1uKXt2YXIgbz1lW2EtMV07b1sxXT09aVsxXSYmb1syXT09aVsyXSYmZS5zcGxpY2UoYSwxKX19Zm9yKHZhciBhPTA7YTxlLmxlbmd0aC0xOyl7dmFyIGk9ZVthXTtpWzBdPT1uJiZlW2ErMV1bMF09PW4/ZS5zcGxpY2UoYSwxKTphKyt9aWYoZS5sZW5ndGg+MiYmIXQpe3ZhciBzPTA7ZVswXVswXT09biYmcysrO2Zvcih2YXIgbD1udWxsLGg9bnVsbCxhPXM7YTxlLmxlbmd0aDthKyspe3ZhciBpPWVbYV07aWYoaVswXT09cilpZihudWxsPT09bCYmbnVsbD09PWgpbD1hLGg9YTtlbHNle3ZhciBwPWlbMl07cDxlW2xdWzJdP2w9YTpwPmVbaF1bMl0mJihoPWEpfX12YXIgZz1lW2xdLGQ9ZVtoXTtlLnNwbGljZShzLGUubGVuZ3RoLXMpLGg+bD8oZS5wdXNoKGcpLGUucHVzaChkKSk6bD5oPyhlLnB1c2goZCksZS5wdXNoKGcpKTplLnB1c2goZyl9fX0sbD1mdW5jdGlvbihhKXtzKGEpO2Zvcih2YXIgbD0wLGg9ZS5sZW5ndGg7aD5sO2wrKyl7dmFyIHA9ZVtsXTtwWzBdPT1yP3QubGluZVRvKHBbMV0scFsyXSk6cFswXT09biYmdC5tb3ZlVG8ocFsxXSxwWzJdKX1lLmxlbmd0aCYmKGk9ZVtlLmxlbmd0aC0xXVsxXSksbys9ZS5sZW5ndGgsZT1bXX0saD1mdW5jdGlvbih0LHIsbil7dmFyIG89TWF0aC5yb3VuZChyKTtpZihudWxsPT09YXx8byE9YSl7dmFyIHM9YS1pPjEsaD1vLWE+MSxwPXN8fGg7bChwKSxhPW99ZS5wdXNoKFt0LHIsbl0pfTtyZXR1cm57bW92ZVRvOmZ1bmN0aW9uKHQsZSl7aChuLHQsZSl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe2gocix0LGUpfSxzdHJva2U6ZnVuY3Rpb24oKXtsKCEwKSx0LnN0cm9rZSgpfSxmaWxsOmZ1bmN0aW9uKCl7bCghMCksdC5maWxsKCl9LGJlZ2luUGF0aDpmdW5jdGlvbigpe2woITApLHQuYmVnaW5QYXRoKCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe2woITApLHQuY2xvc2VQYXRoKCl9LF9jb3VudDpmdW5jdGlvbigpe3JldHVybiBvfX19LHQuX2ZpbGxQbG90dGVyPWZ1bmN0aW9uKGUpe2lmKCFlLnNpbmdsZVNlcmllc05hbWUmJjA9PT1lLnNlcmllc0luZGV4KXtmb3IodmFyIGE9ZS5keWdyYXBoLGk9YS5nZXRMYWJlbHMoKS5zbGljZSgxKSxyPWkubGVuZ3RoO3I+PTA7ci0tKWEudmlzaWJpbGl0eSgpW3JdfHxpLnNwbGljZShyLDEpO3ZhciBuPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxpLmxlbmd0aDt0KyspaWYoYS5nZXRCb29sZWFuT3B0aW9uKCJmaWxsR3JhcGgiLGlbdF0pKXJldHVybiEwO3JldHVybiExfSgpO2lmKG4pZm9yKHZhciBvLHMsbD1lLnBsb3RBcmVhLGg9ZS5hbGxTZXJpZXNQb2ludHMscD1oLmxlbmd0aCxnPWEuZ2V0TnVtZXJpY09wdGlvbigiZmlsbEFscGhhIiksZD1hLmdldEJvb2xlYW5PcHRpb24oInN0YWNrZWRHcmFwaCIpLHU9YS5nZXRDb2xvcnMoKSxjPXt9LHk9ZnVuY3Rpb24odCxlLGEsaSl7aWYodC5saW5lVG8oZSxhKSxkKWZvcih2YXIgcj1pLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj1pW3JdO3QubGluZVRvKG5bMF0sblsxXSl9fSxfPXAtMTtfPj0wO18tLSl7dmFyIHY9ZS5kcmF3aW5nQ29udGV4dCxmPWlbX107aWYoYS5nZXRCb29sZWFuT3B0aW9uKCJmaWxsR3JhcGgiLGYpKXt2YXIgeD1hLmdldEJvb2xlYW5PcHRpb24oInN0ZXBQbG90IixmKSxtPXVbX10sRD1hLmF4aXNQcm9wZXJ0aWVzRm9yU2VyaWVzKGYpLHc9MStELm1pbnl2YWwqRC55c2NhbGU7MD53P3c9MDp3PjEmJih3PTEpLHc9bC5oKncrbC55O3ZhciBBLGI9aFtfXSxUPUR5Z3JhcGguY3JlYXRlSXRlcmF0b3IoYiwwLGIubGVuZ3RoLHQuX2dldEl0ZXJhdG9yUHJlZGljYXRlKGEuZ2V0Qm9vbGVhbk9wdGlvbigiY29ubmVjdFNlcGFyYXRlZFBvaW50cyIsZikpKSxFPTAvMCxDPVstMSwtMV0sTD1EeWdyYXBoLnRvUkdCXyhtKSxQPSJyZ2JhKCIrTC5yKyIsIitMLmcrIiwiK0wuYisiLCIrZysiKSI7di5maWxsU3R5bGU9UCx2LmJlZ2luUGF0aCgpO3ZhciBTLE89ITA7KGIubGVuZ3RoPjIqYS53aWR0aF98fER5Z3JhcGguRk9SQ0VfRkFTVF9QUk9YWSkmJih2PXQuX2Zhc3RDYW52YXNQcm94eSh2KSk7Zm9yKHZhciBNLFI9W107VC5oYXNOZXh0OylpZihNPVQubmV4dCgpLER5Z3JhcGguaXNPSyhNLnkpfHx4KXtpZihkKXtpZighTyYmUz09TS54dmFsKWNvbnRpbnVlO089ITEsUz1NLnh2YWwsbz1jW00uY2FudmFzeF07dmFyIEY7Rj12b2lkIDA9PT1vP3c6cz9vWzBdOm8sQT1bTS5jYW52YXN5LEZdLHg/LTE9PT1DWzBdP2NbTS5jYW52YXN4XT1bTS5jYW52YXN5LHddOmNbTS5jYW52YXN4XT1bTS5jYW52YXN5LENbMF1dOmNbTS5jYW52YXN4XT1NLmNhbnZhc3l9ZWxzZSBBPWlzTmFOKE0uY2FudmFzeSkmJng/W2wueStsLmgsd106W00uY2FudmFzeSx3XTtpc05hTihFKT8odi5tb3ZlVG8oTS5jYW52YXN4LEFbMV0pLHYubGluZVRvKE0uY2FudmFzeCxBWzBdKSk6KHg/KHYubGluZVRvKE0uY2FudmFzeCxDWzBdKSx2LmxpbmVUbyhNLmNhbnZhc3gsQVswXSkpOnYubGluZVRvKE0uY2FudmFzeCxBWzBdKSxkJiYoUi5wdXNoKFtFLENbMV1dKSxSLnB1c2gocyYmbz9bTS5jYW52YXN4LG9bMV1dOltNLmNhbnZhc3gsQVsxXV0pKSksQz1BLEU9TS5jYW52YXN4fWVsc2UgeSh2LEUsQ1sxXSxSKSxSPVtdLEU9MC8wLG51bGw9PT1NLnlfc3RhY2tlZHx8aXNOYU4oTS55X3N0YWNrZWQpfHwoY1tNLmNhbnZhc3hdPWwuaCpNLnlfc3RhY2tlZCtsLnkpO3M9eCxBJiZNJiYoeSh2LE0uY2FudmFzeCxBWzFdLFIpLFI9W10pLHYuZmlsbCgpfX19fSx0fSgpLER5Z3JhcGg9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24odCxlLGEsaSl7dGhpcy5pc19pbml0aWFsX2RyYXdfPSEwLHRoaXMucmVhZHlGbnNfPVtdLHZvaWQgMCE9PWk/KGNvbnNvbGUud2FybigiVXNpbmcgZGVwcmVjYXRlZCBmb3VyLWFyZ3VtZW50IGR5Z3JhcGggY29uc3RydWN0b3IiKSx0aGlzLl9fb2xkX2luaXRfXyh0LGUsYSxpKSk6dGhpcy5fX2luaXRfXyh0LGUsYSl9O3JldHVybiB0Lk5BTUU9IkR5Z3JhcGgiLHQuVkVSU0lPTj0iMS4xLjEiLHQuX19yZXByX189ZnVuY3Rpb24oKXtyZXR1cm4iWyIrdC5OQU1FKyIgIit0LlZFUlNJT04rIl0ifSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX19yZXByX18oKX0sdC5ERUZBVUxUX1JPTExfUEVSSU9EPTEsdC5ERUZBVUxUX1dJRFRIPTQ4MCx0LkRFRkFVTFRfSEVJR0hUPTMyMCx0LkFOSU1BVElPTl9TVEVQUz0xMix0LkFOSU1BVElPTl9EVVJBVElPTj0yMDAsdC5LTUJfTEFCRUxTPVsiSyIsIk0iLCJCIiwiVCIsIlEiXSx0LktNRzJfQklHX0xBQkVMUz1bImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl0sdC5LTUcyX1NNQUxMX0xBQkVMUz1bIm0iLCJ1IiwibiIsInAiLCJmIiwiYSIsInoiLCJ5Il0sdC5udW1iZXJWYWx1ZUZvcm1hdHRlcj1mdW5jdGlvbihlLGEpe3ZhciBpPWEoInNpZ0ZpZ3MiKTtpZihudWxsIT09aSlyZXR1cm4gdC5mbG9hdEZvcm1hdChlLGkpO3ZhciByLG49YSgiZGlnaXRzQWZ0ZXJEZWNpbWFsIiksbz1hKCJtYXhOdW1iZXJXaWR0aCIpLHM9YSgibGFiZWxzS01CIiksbD1hKCJsYWJlbHNLTUcyIik7aWYocj0wIT09ZSYmKE1hdGguYWJzKGUpPj1NYXRoLnBvdygxMCxvKXx8TWF0aC5hYnMoZSk8TWF0aC5wb3coMTAsLW4pKT9lLnRvRXhwb25lbnRpYWwobik6IiIrdC5yb3VuZF8oZSxuKSxzfHxsKXt2YXIgaCxwPVtdLGc9W107cyYmKGg9MWUzLHA9dC5LTUJfTEFCRUxTKSxsJiYocyYmY29uc29sZS53YXJuKCJTZXR0aW5nIGJvdGggbGFiZWxzS01CIGFuZCBsYWJlbHNLTUcyLiBQaWNrIG9uZSEiKSxoPTEwMjQscD10LktNRzJfQklHX0xBQkVMUyxnPXQuS01HMl9TTUFMTF9MQUJFTFMpO2Zvcih2YXIgZD1NYXRoLmFicyhlKSx1PXQucG93KGgscC5sZW5ndGgpLGM9cC5sZW5ndGgtMTtjPj0wO2MtLSx1Lz1oKWlmKGQ+PXUpe3I9dC5yb3VuZF8oZS91LG4pK3BbY107YnJlYWt9aWYobCl7dmFyIHk9U3RyaW5nKGUudG9FeHBvbmVudGlhbCgpKS5zcGxpdCgiZS0iKTsyPT09eS5sZW5ndGgmJnlbMV0+PTMmJnlbMV08PTI0JiYocj15WzFdJTM+MD90LnJvdW5kXyh5WzBdL3QucG93KDEwLHlbMV0lMyksbik6TnVtYmVyKHlbMF0pLnRvRml4ZWQoMikscis9Z1tNYXRoLmZsb29yKHlbMV0vMyktMV0pfX1yZXR1cm4gcn0sdC5udW1iZXJBeGlzTGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24oZSxhLGkpe3JldHVybiB0Lm51bWJlclZhbHVlRm9ybWF0dGVyLmNhbGwodGhpcyxlLGkpfSx0LlNIT1JUX01PTlRIX05BTUVTXz1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHQuZGF0ZUF4aXNMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbihlLGEsaSl7dmFyIHI9aSgibGFiZWxzVVRDIiksbj1yP3QuRGF0ZUFjY2Vzc29yc1VUQzp0LkRhdGVBY2Nlc3NvcnNMb2NhbCxvPW4uZ2V0RnVsbFllYXIoZSkscz1uLmdldE1vbnRoKGUpLGw9bi5nZXREYXRlKGUpLGg9bi5nZXRIb3VycyhlKSxwPW4uZ2V0TWludXRlcyhlKSxnPW4uZ2V0U2Vjb25kcyhlKSxkPW4uZ2V0U2Vjb25kcyhlKTtpZihhPj10LkRFQ0FEQUwpcmV0dXJuIiIrbztpZihhPj10Lk1PTlRITFkpcmV0dXJuIHQuU0hPUlRfTU9OVEhfTkFNRVNfW3NdKyImIzE2MDsiK287dmFyIHU9MzYwMCpoKzYwKnArZysuMDAxKmQ7cmV0dXJuIDA9PT11fHxhPj10LkRBSUxZP3QuemVyb3BhZChsKSsiJiMxNjA7Iit0LlNIT1JUX01PTlRIX05BTUVTX1tzXTp0Lmhtc1N0cmluZ18oaCxwLGcpfSx0LmRhdGVBeGlzRm9ybWF0dGVyPXQuZGF0ZUF4aXNMYWJlbEZvcm1hdHRlcix0LmRhdGVWYWx1ZUZvcm1hdHRlcj1mdW5jdGlvbihlLGEpe3JldHVybiB0LmRhdGVTdHJpbmdfKGUsYSgibGFiZWxzVVRDIikpfSx0LlBsb3R0ZXJzPUR5Z3JhcGhDYW52YXNSZW5kZXJlci5fUGxvdHRlcnMsdC5ERUZBVUxUX0FUVFJTPXtoaWdobGlnaHRDaXJjbGVTaXplOjMsaGlnaGxpZ2h0U2VyaWVzT3B0czpudWxsLGhpZ2hsaWdodFNlcmllc0JhY2tncm91bmRBbHBoYTouNSxsYWJlbHNEaXZXaWR0aDoyNTAsbGFiZWxzRGl2U3R5bGVzOnt9LGxhYmVsc1NlcGFyYXRlTGluZXM6ITEsbGFiZWxzU2hvd1plcm9WYWx1ZXM6ITAsbGFiZWxzS01COiExLGxhYmVsc0tNRzI6ITEsc2hvd0xhYmVsc09uSGlnaGxpZ2h0OiEwLGRpZ2l0c0FmdGVyRGVjaW1hbDoyLG1heE51bWJlcldpZHRoOjYsc2lnRmlnczpudWxsLHN0cm9rZVdpZHRoOjEsc3Ryb2tlQm9yZGVyV2lkdGg6MCxzdHJva2VCb3JkZXJDb2xvcjoid2hpdGUiLGF4aXNUaWNrU2l6ZTozLGF4aXNMYWJlbEZvbnRTaXplOjE0LHJpZ2h0R2FwOjUsc2hvd1JvbGxlcjohMSx4VmFsdWVQYXJzZXI6dC5kYXRlUGFyc2VyLGRlbGltaXRlcjoiLCIsc2lnbWE6MixlcnJvckJhcnM6ITEsZnJhY3Rpb25zOiExLHdpbHNvbkludGVydmFsOiEwLGN1c3RvbUJhcnM6ITEsZmlsbEdyYXBoOiExLGZpbGxBbHBoYTouMTUsY29ubmVjdFNlcGFyYXRlZFBvaW50czohMSxzdGFja2VkR3JhcGg6ITEsc3RhY2tlZEdyYXBoTmFORmlsbDoiYWxsIixoaWRlT3ZlcmxheU9uTW91c2VPdXQ6ITAsbGVnZW5kOiJvbm1vdXNlb3ZlciIsc3RlcFBsb3Q6ITEsYXZvaWRNaW5aZXJvOiExLHhSYW5nZVBhZDowLHlSYW5nZVBhZDpudWxsLGRyYXdBeGVzQXRaZXJvOiExLHRpdGxlSGVpZ2h0OjI4LHhMYWJlbEhlaWdodDoxOCx5TGFiZWxXaWR0aDoxOCxkcmF3WEF4aXM6ITAsZHJhd1lBeGlzOiEwLGF4aXNMaW5lQ29sb3I6ImJsYWNrIixheGlzTGluZVdpZHRoOi4zLGdyaWRMaW5lV2lkdGg6LjMsYXhpc0xhYmVsQ29sb3I6ImJsYWNrIixheGlzTGFiZWxXaWR0aDo1MCxkcmF3WUdyaWQ6ITAsZHJhd1hHcmlkOiEwLGdyaWRMaW5lQ29sb3I6InJnYigxMjgsMTI4LDEyOCkiLGludGVyYWN0aW9uTW9kZWw6bnVsbCxhbmltYXRlZFpvb21zOiExLHNob3dSYW5nZVNlbGVjdG9yOiExLHJhbmdlU2VsZWN0b3JIZWlnaHQ6NDAscmFuZ2VTZWxlY3RvclBsb3RTdHJva2VDb2xvcjoiIzgwOEZBQiIscmFuZ2VTZWxlY3RvclBsb3RGaWxsQ29sb3I6IiNBN0IxQzQiLHNob3dJblJhbmdlU2VsZWN0b3I6bnVsbCxwbG90dGVyOlt0LlBsb3R0ZXJzLmZpbGxQbG90dGVyLHQuUGxvdHRlcnMuZXJyb3JQbG90dGVyLHQuUGxvdHRlcnMubGluZVBsb3R0ZXJdLHBsdWdpbnM6W10sYXhlczp7eDp7cGl4ZWxzUGVyTGFiZWw6NzAsYXhpc0xhYmVsV2lkdGg6NjAsYXhpc0xhYmVsRm9ybWF0dGVyOnQuZGF0ZUF4aXNMYWJlbEZvcm1hdHRlcix2YWx1ZUZvcm1hdHRlcjp0LmRhdGVWYWx1ZUZvcm1hdHRlcixkcmF3R3JpZDohMCxkcmF3QXhpczohMCxpbmRlcGVuZGVudFRpY2tzOiEwLHRpY2tlcjpudWxsfSx5OntheGlzTGFiZWxXaWR0aDo1MCxwaXhlbHNQZXJMYWJlbDozMCx2YWx1ZUZvcm1hdHRlcjp0Lm51bWJlclZhbHVlRm9ybWF0dGVyLGF4aXNMYWJlbEZvcm1hdHRlcjp0Lm51bWJlckF4aXNMYWJlbEZvcm1hdHRlcixkcmF3R3JpZDohMCxkcmF3QXhpczohMCxpbmRlcGVuZGVudFRpY2tzOiEwLHRpY2tlcjpudWxsfSx5Mjp7YXhpc0xhYmVsV2lkdGg6NTAscGl4ZWxzUGVyTGFiZWw6MzAsdmFsdWVGb3JtYXR0ZXI6dC5udW1iZXJWYWx1ZUZvcm1hdHRlcixheGlzTGFiZWxGb3JtYXR0ZXI6dC5udW1iZXJBeGlzTGFiZWxGb3JtYXR0ZXIsZHJhd0F4aXM6ITAsZHJhd0dyaWQ6ITEsaW5kZXBlbmRlbnRUaWNrczohMSx0aWNrZXI6bnVsbH19fSx0LkhPUklaT05UQUw9MSx0LlZFUlRJQ0FMPTIsdC5QTFVHSU5TPVtdLHQuYWRkZWRBbm5vdGF0aW9uQ1NTPSExLHQucHJvdG90eXBlLl9fb2xkX2luaXRfXz1mdW5jdGlvbihlLGEsaSxyKXtpZihudWxsIT09aSl7Zm9yKHZhciBuPVsiRGF0ZSJdLG89MDtvPGkubGVuZ3RoO28rKyluLnB1c2goaVtvXSk7dC51cGRhdGUocix7bGFiZWxzOm59KX10aGlzLl9faW5pdF9fKGUsYSxyKX0sdC5wcm90b3R5cGUuX19pbml0X189ZnVuY3Rpb24oZSxhLGkpe2lmKC9NU0lFLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhd2luZG93Lm9wZXJhJiYidW5kZWZpbmVkIiE9dHlwZW9mIEdfdm1sQ2FudmFzTWFuYWdlciYmImNvbXBsZXRlIiE9ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHI9dGhpcztyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5fX2luaXRfXyhlLGEsaSl9LDEwMCl9aWYoKG51bGw9PT1pfHx2b2lkIDA9PT1pKSYmKGk9e30pLGk9dC5tYXBMZWdhY3lPcHRpb25zXyhpKSwic3RyaW5nIj09dHlwZW9mIGUmJihlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpKSwhZSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJDb25zdHJ1Y3RpbmcgZHlncmFwaCB3aXRoIGEgbm9uLWV4aXN0ZW50IGRpdiEiKTt0aGlzLmlzVXNpbmdFeGNhbnZhc189InVuZGVmaW5lZCIhPXR5cGVvZiBHX3ZtbENhbnZhc01hbmFnZXIsdGhpcy5tYWluZGl2Xz1lLHRoaXMuZmlsZV89YSx0aGlzLnJvbGxQZXJpb2RfPWkucm9sbFBlcmlvZHx8dC5ERUZBVUxUX1JPTExfUEVSSU9ELHRoaXMucHJldmlvdXNWZXJ0aWNhbFhfPS0xLHRoaXMuZnJhY3Rpb25zXz1pLmZyYWN0aW9uc3x8ITEsdGhpcy5kYXRlV2luZG93Xz1pLmRhdGVXaW5kb3d8fG51bGwsdGhpcy5hbm5vdGF0aW9uc189W10sdGhpcy56b29tZWRfeF89ITEsdGhpcy56b29tZWRfeV89ITEsZS5pbm5lckhUTUw9IiIsIiI9PT1lLnN0eWxlLndpZHRoJiZpLndpZHRoJiYoZS5zdHlsZS53aWR0aD1pLndpZHRoKyJweCIpLCIiPT09ZS5zdHlsZS5oZWlnaHQmJmkuaGVpZ2h0JiYoZS5zdHlsZS5oZWlnaHQ9aS5oZWlnaHQrInB4IiksIiI9PT1lLnN0eWxlLmhlaWdodCYmMD09PWUuY2xpZW50SGVpZ2h0JiYoZS5zdHlsZS5oZWlnaHQ9dC5ERUZBVUxUX0hFSUdIVCsicHgiLCIiPT09ZS5zdHlsZS53aWR0aCYmKGUuc3R5bGUud2lkdGg9dC5ERUZBVUxUX1dJRFRIKyJweCIpKSx0aGlzLndpZHRoXz1lLmNsaWVudFdpZHRofHxpLndpZHRofHwwLHRoaXMuaGVpZ2h0Xz1lLmNsaWVudEhlaWdodHx8aS5oZWlnaHR8fDAsaS5zdGFja2VkR3JhcGgmJihpLmZpbGxHcmFwaD0hMCksdGhpcy51c2VyX2F0dHJzXz17fSx0LnVwZGF0ZSh0aGlzLnVzZXJfYXR0cnNfLGkpLHRoaXMuYXR0cnNfPXt9LHQudXBkYXRlRGVlcCh0aGlzLmF0dHJzXyx0LkRFRkFVTFRfQVRUUlMpLHRoaXMuYm91bmRhcnlJZHNfPVtdLHRoaXMuc2V0SW5kZXhCeU5hbWVfPXt9LHRoaXMuZGF0YXNldEluZGV4Xz1bXSx0aGlzLnJlZ2lzdGVyZWRFdmVudHNfPVtdLHRoaXMuZXZlbnRMaXN0ZW5lcnNfPXt9LHRoaXMuYXR0cmlidXRlc189bmV3IER5Z3JhcGhPcHRpb25zKHRoaXMpLHRoaXMuY3JlYXRlSW50ZXJmYWNlXygpLHRoaXMucGx1Z2luc189W107Zm9yKHZhciBuPXQuUExVR0lOUy5jb25jYXQodGhpcy5nZXRPcHRpb24oInBsdWdpbnMiKSksbz0wO288bi5sZW5ndGg7bysrKXt2YXIgcyxsPW5bb107cz0idW5kZWZpbmVkIiE9dHlwZW9mIGwuYWN0aXZhdGU/bDpuZXcgbDt2YXIgaD17cGx1Z2luOnMsZXZlbnRzOnt9LG9wdGlvbnM6e30scGx1Z2luT3B0aW9uczp7fX0scD1zLmFjdGl2YXRlKHRoaXMpO2Zvcih2YXIgZyBpbiBwKXAuaGFzT3duUHJvcGVydHkoZykmJihoLmV2ZW50c1tnXT1wW2ddKTt0aGlzLnBsdWdpbnNfLnB1c2goaCl9Zm9yKHZhciBvPTA7bzx0aGlzLnBsdWdpbnNfLmxlbmd0aDtvKyspe3ZhciBkPXRoaXMucGx1Z2luc19bb107Zm9yKHZhciBnIGluIGQuZXZlbnRzKWlmKGQuZXZlbnRzLmhhc093blByb3BlcnR5KGcpKXt2YXIgdT1kLmV2ZW50c1tnXSxjPVtkLnBsdWdpbix1XTtnIGluIHRoaXMuZXZlbnRMaXN0ZW5lcnNfP3RoaXMuZXZlbnRMaXN0ZW5lcnNfW2ddLnB1c2goYyk6dGhpcy5ldmVudExpc3RlbmVyc19bZ109W2NdfX10aGlzLmNyZWF0ZURyYWdJbnRlcmZhY2VfKCksdGhpcy5zdGFydF8oKX0sdC5wcm90b3R5cGUuY2FzY2FkZUV2ZW50c189ZnVuY3Rpb24oZSxhKXtpZighKGUgaW4gdGhpcy5ldmVudExpc3RlbmVyc18pKXJldHVybiExO3ZhciBpPXtkeWdyYXBoOnRoaXMsY2FuY2VsYWJsZTohMSxkZWZhdWx0UHJldmVudGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7aWYoIWkuY2FuY2VsYWJsZSl0aHJvdyJDYW5ub3QgY2FsbCBwcmV2ZW50RGVmYXVsdCBvbiBub24tY2FuY2VsYWJsZSBldmVudC4iO2kuZGVmYXVsdFByZXZlbnRlZD0hMH0scHJvcGFnYXRpb25TdG9wcGVkOiExLHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe2kucHJvcGFnYXRpb25TdG9wcGVkPSEwfX07dC51cGRhdGUoaSxhKTt2YXIgcj10aGlzLmV2ZW50TGlzdGVuZXJzX1tlXTtpZihyKWZvcih2YXIgbj1yLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgbz1yW25dWzBdLHM9cltuXVsxXTtpZihzLmNhbGwobyxpKSxpLnByb3BhZ2F0aW9uU3RvcHBlZClicmVha31yZXR1cm4gaS5kZWZhdWx0UHJldmVudGVkfSx0LnByb3RvdHlwZS5nZXRQbHVnaW5JbnN0YW5jZV89ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLnBsdWdpbnNfLmxlbmd0aDtlKyspe3ZhciBhPXRoaXMucGx1Z2luc19bZV07aWYoYS5wbHVnaW4gaW5zdGFuY2VvZiB0KXJldHVybiBhLnBsdWdpbn1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuaXNab29tZWQ9ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fHZvaWQgMD09PXQpcmV0dXJuIHRoaXMuem9vbWVkX3hffHx0aGlzLnpvb21lZF95XztpZigieCI9PT10KXJldHVybiB0aGlzLnpvb21lZF94XztpZigieSI9PT10KXJldHVybiB0aGlzLnpvb21lZF95Xzt0aHJvdyJheGlzIHBhcmFtZXRlciBpcyBbIit0KyJdIG11c3QgYmUgbnVsbCwgJ3gnIG9yICd5Jy4ifSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMubWFpbmRpdl8sZT10JiZ0LmlkP3QuaWQ6dDtyZXR1cm4iW0R5Z3JhcGggIitlKyJdIn0sdC5wcm90b3R5cGUuYXR0cl89ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT90aGlzLmF0dHJpYnV0ZXNfLmdldEZvclNlcmllcyh0LGUpOnRoaXMuYXR0cmlidXRlc18uZ2V0KHQpfSx0LnByb3RvdHlwZS5nZXRPcHRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyXyh0LGUpfSx0LnByb3RvdHlwZS5nZXROdW1lcmljT3B0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKHQsZSl9LHQucHJvdG90eXBlLmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldE9wdGlvbih0LGUpfSx0LnByb3RvdHlwZS5nZXRCb29sZWFuT3B0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKHQsZSl9LHQucHJvdG90eXBlLmdldEZ1bmN0aW9uT3B0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0T3B0aW9uKHQsZSl9LHQucHJvdG90eXBlLmdldE9wdGlvbkZvckF4aXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzXy5nZXRGb3JBeGlzKHQsZSl9LHQucHJvdG90eXBlLm9wdGlvbnNWaWV3Rm9yQXhpc189ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGk9ZS51c2VyX2F0dHJzXy5heGVzO3JldHVybiBpJiZpW3RdJiZpW3RdLmhhc093blByb3BlcnR5KGEpP2lbdF1bYV06IngiPT09dCYmImxvZ3NjYWxlIj09PWE/ITE6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnVzZXJfYXR0cnNfW2FdP2UudXNlcl9hdHRyc19bYV06KGk9ZS5hdHRyc18uYXhlcyxpJiZpW3RdJiZpW3RdLmhhc093blByb3BlcnR5KGEpP2lbdF1bYV06InkiPT10JiZlLmF4ZXNfWzBdLmhhc093blByb3BlcnR5KGEpP2UuYXhlc19bMF1bYV06InkyIj09dCYmZS5heGVzX1sxXS5oYXNPd25Qcm9wZXJ0eShhKT9lLmF4ZXNfWzFdW2FdOmUuYXR0cl8oYSkpfX0sdC5wcm90b3R5cGUucm9sbFBlcmlvZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvbGxQZXJpb2RffSx0LnByb3RvdHlwZS54QXhpc1JhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZVdpbmRvd18/dGhpcy5kYXRlV2luZG93Xzp0aGlzLnhBeGlzRXh0cmVtZXMoKX0sdC5wcm90b3R5cGUueEF4aXNFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0TnVtZXJpY09wdGlvbigieFJhbmdlUGFkIikvdGhpcy5wbG90dGVyXy5hcmVhLnc7aWYoMD09PXRoaXMubnVtUm93cygpKXJldHVyblswLXQsMSt0XTt2YXIgZT10aGlzLnJhd0RhdGFfWzBdWzBdLGE9dGhpcy5yYXdEYXRhX1t0aGlzLnJhd0RhdGFfLmxlbmd0aC0xXVswXTtpZih0KXt2YXIgaT1hLWU7ZS09aSp0LGErPWkqdH1yZXR1cm5bZSxhXX0sdC5wcm90b3R5cGUueUF4aXNSYW5nZT1mdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHQmJih0PTApLDA+dHx8dD49dGhpcy5heGVzXy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5heGVzX1t0XTtyZXR1cm5bZS5jb21wdXRlZFZhbHVlUmFuZ2VbMF0sZS5jb21wdXRlZFZhbHVlUmFuZ2VbMV1dfSx0LnByb3RvdHlwZS55QXhpc1Jhbmdlcz1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTx0aGlzLmF4ZXNfLmxlbmd0aDtlKyspdC5wdXNoKHRoaXMueUF4aXNSYW5nZShlKSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnRvRG9tQ29vcmRzPWZ1bmN0aW9uKHQsZSxhKXtyZXR1cm5bdGhpcy50b0RvbVhDb29yZCh0KSx0aGlzLnRvRG9tWUNvb3JkKGUsYSldfSx0LnByb3RvdHlwZS50b0RvbVhDb29yZD1mdW5jdGlvbih0KXtpZihudWxsPT09dClyZXR1cm4gbnVsbDt2YXIgZT10aGlzLnBsb3R0ZXJfLmFyZWEsYT10aGlzLnhBeGlzUmFuZ2UoKTtyZXR1cm4gZS54Kyh0LWFbMF0pLyhhWzFdLWFbMF0pKmUud30sdC5wcm90b3R5cGUudG9Eb21ZQ29vcmQ9ZnVuY3Rpb24odCxlKXt2YXIgYT10aGlzLnRvUGVyY2VudFlDb29yZCh0LGUpO2lmKG51bGw9PT1hKXJldHVybiBudWxsO3ZhciBpPXRoaXMucGxvdHRlcl8uYXJlYTtyZXR1cm4gaS55K2EqaS5ofSx0LnByb3RvdHlwZS50b0RhdGFDb29yZHM9ZnVuY3Rpb24odCxlLGEpe3JldHVyblt0aGlzLnRvRGF0YVhDb29yZCh0KSx0aGlzLnRvRGF0YVlDb29yZChlLGEpXX0sdC5wcm90b3R5cGUudG9EYXRhWENvb3JkPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBhPXRoaXMucGxvdHRlcl8uYXJlYSxpPXRoaXMueEF4aXNSYW5nZSgpO2lmKHRoaXMuYXR0cmlidXRlc18uZ2V0Rm9yQXhpcygibG9nc2NhbGUiLCJ4Iikpe3ZhciByPShlLWEueCkvYS53LG49dC5sb2cxMChpWzBdKSxvPXQubG9nMTAoaVsxXSkscz1uK3IqKG8tbiksbD1NYXRoLnBvdyh0LkxPR19TQ0FMRSxzKTtyZXR1cm4gbH1yZXR1cm4gaVswXSsoZS1hLngpL2EudyooaVsxXS1pWzBdKX0sdC5wcm90b3R5cGUudG9EYXRhWUNvb3JkPWZ1bmN0aW9uKGUsYSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7dmFyIGk9dGhpcy5wbG90dGVyXy5hcmVhLHI9dGhpcy55QXhpc1JhbmdlKGEpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYSYmKGE9MCksdGhpcy5hdHRyaWJ1dGVzXy5nZXRGb3JBeGlzKCJsb2dzY2FsZSIsYSkpe3ZhciBuPShlLWkueSkvaS5oLG89dC5sb2cxMChyWzBdKSxzPXQubG9nMTAoclsxXSksbD1zLW4qKHMtbyksaD1NYXRoLnBvdyh0LkxPR19TQ0FMRSxsKTtyZXR1cm4gaH1yZXR1cm4gclswXSsoaS55K2kuaC1lKS9pLmgqKHJbMV0tclswXSl9LHQucHJvdG90eXBlLnRvUGVyY2VudFlDb29yZD1mdW5jdGlvbihlLGEpe2lmKG51bGw9PT1lKXJldHVybiBudWxsOyJ1bmRlZmluZWQiPT10eXBlb2YgYSYmKGE9MCk7dmFyIGkscj10aGlzLnlBeGlzUmFuZ2UoYSksbj10aGlzLmF0dHJpYnV0ZXNfLmdldEZvckF4aXMoImxvZ3NjYWxlIixhKTtpZihuKXt2YXIgbz10LmxvZzEwKHJbMF0pLHM9dC5sb2cxMChyWzFdKTtpPShzLXQubG9nMTAoZSkpLyhzLW8pfWVsc2UgaT0oclsxXS1lKS8oclsxXS1yWzBdKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUudG9QZXJjZW50WENvb3JkPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBhLGk9dGhpcy54QXhpc1JhbmdlKCkscj10aGlzLmF0dHJpYnV0ZXNfLmdldEZvckF4aXMoImxvZ3NjYWxlIiwieCIpO2lmKHI9PT0hMCl7dmFyIG49dC5sb2cxMChpWzBdKSxvPXQubG9nMTAoaVsxXSk7YT0odC5sb2cxMChlKS1uKS8oby1uKX1lbHNlIGE9KGUtaVswXSkvKGlbMV0taVswXSk7cmV0dXJuIGF9LHQucHJvdG90eXBlLm51bUNvbHVtbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYXdEYXRhXz90aGlzLnJhd0RhdGFfWzBdP3RoaXMucmF3RGF0YV9bMF0ubGVuZ3RoOnRoaXMuYXR0cl8oImxhYmVscyIpLmxlbmd0aDowfSx0LnByb3RvdHlwZS5udW1Sb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmF3RGF0YV8/dGhpcy5yYXdEYXRhXy5sZW5ndGg6MH0sdC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD50fHx0PnRoaXMucmF3RGF0YV8ubGVuZ3RoP251bGw6MD5lfHxlPnRoaXMucmF3RGF0YV9bdF0ubGVuZ3RoP251bGw6dGhpcy5yYXdEYXRhX1t0XVtlXX0sdC5wcm90b3R5cGUuY3JlYXRlSW50ZXJmYWNlXz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFpbmRpdl87dGhpcy5ncmFwaERpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmdyYXBoRGl2LnN0eWxlLnRleHRBbGlnbj0ibGVmdCIsdGhpcy5ncmFwaERpdi5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGUuYXBwZW5kQ2hpbGQodGhpcy5ncmFwaERpdiksdGhpcy5jYW52YXNfPXQuY3JlYXRlQ2FudmFzKCksdGhpcy5jYW52YXNfLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5oaWRkZW5fPXRoaXMuY3JlYXRlUGxvdEtpdENhbnZhc18odGhpcy5jYW52YXNfKSx0aGlzLmNhbnZhc19jdHhfPXQuZ2V0Q29udGV4dCh0aGlzLmNhbnZhc18pLHRoaXMuaGlkZGVuX2N0eF89dC5nZXRDb250ZXh0KHRoaXMuaGlkZGVuXyksdGhpcy5yZXNpemVFbGVtZW50c18oKSx0aGlzLmdyYXBoRGl2LmFwcGVuZENoaWxkKHRoaXMuaGlkZGVuXyksdGhpcy5ncmFwaERpdi5hcHBlbmRDaGlsZCh0aGlzLmNhbnZhc18pLHRoaXMubW91c2VFdmVudEVsZW1lbnRfPXRoaXMuY3JlYXRlTW91c2VFdmVudEVsZW1lbnRfKCksdGhpcy5sYXlvdXRfPW5ldyBEeWdyYXBoTGF5b3V0KHRoaXMpO3ZhciBhPXRoaXM7dGhpcy5tb3VzZU1vdmVIYW5kbGVyXz1mdW5jdGlvbih0KXthLm1vdXNlTW92ZV8odCl9LHRoaXMubW91c2VPdXRIYW5kbGVyXz1mdW5jdGlvbihlKXt2YXIgaT1lLnRhcmdldHx8ZS5mcm9tRWxlbWVudCxyPWUucmVsYXRlZFRhcmdldHx8ZS50b0VsZW1lbnQ7dC5pc05vZGVDb250YWluZWRCeShpLGEuZ3JhcGhEaXYpJiYhdC5pc05vZGVDb250YWluZWRCeShyLGEuZ3JhcGhEaXYpJiZhLm1vdXNlT3V0XyhlKX0sdGhpcy5hZGRBbmRUcmFja0V2ZW50KHdpbmRvdywibW91c2VvdXQiLHRoaXMubW91c2VPdXRIYW5kbGVyXyksdGhpcy5hZGRBbmRUcmFja0V2ZW50KHRoaXMubW91c2VFdmVudEVsZW1lbnRfLCJtb3VzZW1vdmUiLHRoaXMubW91c2VNb3ZlSGFuZGxlcl8pLHRoaXMucmVzaXplSGFuZGxlcl98fCh0aGlzLnJlc2l6ZUhhbmRsZXJfPWZ1bmN0aW9uKHQpe2EucmVzaXplKCl9LHRoaXMuYWRkQW5kVHJhY2tFdmVudCh3aW5kb3csInJlc2l6ZSIsdGhpcy5yZXNpemVIYW5kbGVyXykpfSx0LnByb3RvdHlwZS5yZXNpemVFbGVtZW50c189ZnVuY3Rpb24oKXt0aGlzLmdyYXBoRGl2LnN0eWxlLndpZHRoPXRoaXMud2lkdGhfKyJweCIsdGhpcy5ncmFwaERpdi5zdHlsZS5oZWlnaHQ9dGhpcy5oZWlnaHRfKyJweCI7dmFyIGU9dC5nZXRDb250ZXh0UGl4ZWxSYXRpbyh0aGlzLmNhbnZhc19jdHhfKTt0aGlzLmNhbnZhc18ud2lkdGg9dGhpcy53aWR0aF8qZSx0aGlzLmNhbnZhc18uaGVpZ2h0PXRoaXMuaGVpZ2h0XyplLHRoaXMuY2FudmFzXy5zdHlsZS53aWR0aD10aGlzLndpZHRoXysicHgiLHRoaXMuY2FudmFzXy5zdHlsZS5oZWlnaHQ9dGhpcy5oZWlnaHRfKyJweCIsMSE9PWUmJnRoaXMuY2FudmFzX2N0eF8uc2NhbGUoZSxlKTt2YXIgYT10LmdldENvbnRleHRQaXhlbFJhdGlvKHRoaXMuaGlkZGVuX2N0eF8pO3RoaXMuaGlkZGVuXy53aWR0aD10aGlzLndpZHRoXyphLHRoaXMuaGlkZGVuXy5oZWlnaHQ9dGhpcy5oZWlnaHRfKmEsdGhpcy5oaWRkZW5fLnN0eWxlLndpZHRoPXRoaXMud2lkdGhfKyJweCIsdGhpcy5oaWRkZW5fLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodF8rInB4IiwxIT09YSYmdGhpcy5oaWRkZW5fY3R4Xy5zY2FsZShhLGEpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5jYW52YXNfY3R4Xy5yZXN0b3JlKCksdGhpcy5oaWRkZW5fY3R4Xy5yZXN0b3JlKCk7Zm9yKHZhciBlPXRoaXMucGx1Z2luc18ubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBhPXRoaXMucGx1Z2luc18ucG9wKCk7YS5wbHVnaW4uZGVzdHJveSYmYS5wbHVnaW4uZGVzdHJveSgpfXZhciBpPWZ1bmN0aW9uKHQpe2Zvcig7dC5oYXNDaGlsZE5vZGVzKCk7KWkodC5maXJzdENoaWxkKSx0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9O3RoaXMucmVtb3ZlVHJhY2tlZEV2ZW50c18oKSx0LnJlbW92ZUV2ZW50KHdpbmRvdywibW91c2VvdXQiLHRoaXMubW91c2VPdXRIYW5kbGVyXyksdC5yZW1vdmVFdmVudCh0aGlzLm1vdXNlRXZlbnRFbGVtZW50XywibW91c2Vtb3ZlIix0aGlzLm1vdXNlTW92ZUhhbmRsZXJfKSx0LnJlbW92ZUV2ZW50KHdpbmRvdywicmVzaXplIix0aGlzLnJlc2l6ZUhhbmRsZXJfKSx0aGlzLnJlc2l6ZUhhbmRsZXJfPW51bGwsaSh0aGlzLm1haW5kaXZfKTt2YXIgcj1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCkib2JqZWN0Ij09dHlwZW9mIHRbZV0mJih0W2VdPW51bGwpfTtyKHRoaXMubGF5b3V0Xykscih0aGlzLnBsb3R0ZXJfKSxyKHRoaXMpfSx0LnByb3RvdHlwZS5jcmVhdGVQbG90S2l0Q2FudmFzXz1mdW5jdGlvbihlKXt2YXIgYT10LmNyZWF0ZUNhbnZhcygpO3JldHVybiBhLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYS5zdHlsZS50b3A9ZS5zdHlsZS50b3AsYS5zdHlsZS5sZWZ0PWUuc3R5bGUubGVmdCxhLndpZHRoPXRoaXMud2lkdGhfLGEuaGVpZ2h0PXRoaXMuaGVpZ2h0XyxhLnN0eWxlLndpZHRoPXRoaXMud2lkdGhfKyJweCIsYS5zdHlsZS5oZWlnaHQ9dGhpcy5oZWlnaHRfKyJweCIsYX0sdC5wcm90b3R5cGUuY3JlYXRlTW91c2VFdmVudEVsZW1lbnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1VzaW5nRXhjYW52YXNfKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIsdC5zdHlsZS5maWx0ZXI9ImFscGhhKG9wYWNpdHk9MCkiLHQuc3R5bGUud2lkdGg9dGhpcy53aWR0aF8rInB4Iix0LnN0eWxlLmhlaWdodD10aGlzLmhlaWdodF8rInB4Iix0aGlzLmdyYXBoRGl2LmFwcGVuZENoaWxkKHQpLHR9cmV0dXJuIHRoaXMuY2FudmFzX30sdC5wcm90b3R5cGUuc2V0Q29sb3JzXz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0TGFiZWxzKCksYT1lLmxlbmd0aC0xO3RoaXMuY29sb3JzXz1bXSx0aGlzLmNvbG9yc01hcF89e307Zm9yKHZhciBpPXRoaXMuZ2V0TnVtZXJpY09wdGlvbigiY29sb3JTYXR1cmF0aW9uIil8fDEscj10aGlzLmdldE51bWVyaWNPcHRpb24oImNvbG9yVmFsdWUiKXx8LjUsbj1NYXRoLmNlaWwoYS8yKSxvPXRoaXMuZ2V0T3B0aW9uKCJjb2xvcnMiKSxzPXRoaXMudmlzaWJpbGl0eSgpLGw9MDthPmw7bCsrKWlmKHNbbF0pewp2YXIgaD1lW2wrMV0scD10aGlzLmF0dHJpYnV0ZXNfLmdldEZvclNlcmllcygiY29sb3IiLGgpO2lmKCFwKWlmKG8pcD1vW2wlby5sZW5ndGhdO2Vsc2V7dmFyIGc9bCUyP24rKGwrMSkvMjpNYXRoLmNlaWwoKGwrMSkvMiksZD0xKmcvKDErYSk7cD10LmhzdlRvUkdCKGQsaSxyKX10aGlzLmNvbG9yc18ucHVzaChwKSx0aGlzLmNvbG9yc01hcF9baF09cH19LHQucHJvdG90eXBlLmdldENvbG9ycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbG9yc199LHQucHJvdG90eXBlLmdldFByb3BlcnRpZXNGb3JTZXJpZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPS0xLGE9dGhpcy5nZXRMYWJlbHMoKSxpPTE7aTxhLmxlbmd0aDtpKyspaWYoYVtpXT09dCl7ZT1pO2JyZWFrfXJldHVybi0xPT1lP251bGw6e25hbWU6dCxjb2x1bW46ZSx2aXNpYmxlOnRoaXMudmlzaWJpbGl0eSgpW2UtMV0sY29sb3I6dGhpcy5jb2xvcnNNYXBfW3RdLGF4aXM6MSt0aGlzLmF0dHJpYnV0ZXNfLmF4aXNGb3JTZXJpZXModCl9fSx0LnByb3RvdHlwZS5jcmVhdGVSb2xsSW50ZXJmYWNlXz1mdW5jdGlvbigpe3RoaXMucm9sbGVyX3x8KHRoaXMucm9sbGVyXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHRoaXMucm9sbGVyXy50eXBlPSJ0ZXh0Iix0aGlzLnJvbGxlcl8uc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5ncmFwaERpdi5hcHBlbmRDaGlsZCh0aGlzLnJvbGxlcl8pKTt2YXIgdD10aGlzLmdldEJvb2xlYW5PcHRpb24oInNob3dSb2xsZXIiKT8iYmxvY2siOiJub25lIixlPXRoaXMucGxvdHRlcl8uYXJlYSxhPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHpJbmRleDoxMCx0b3A6ZS55K2UuaC0yNSsicHgiLGxlZnQ6ZS54KzErInB4IixkaXNwbGF5OnR9O3RoaXMucm9sbGVyXy5zaXplPSIyIix0aGlzLnJvbGxlcl8udmFsdWU9dGhpcy5yb2xsUGVyaW9kXztmb3IodmFyIGkgaW4gYSlhLmhhc093blByb3BlcnR5KGkpJiYodGhpcy5yb2xsZXJfLnN0eWxlW2ldPWFbaV0pO3ZhciByPXRoaXM7dGhpcy5yb2xsZXJfLm9uY2hhbmdlPWZ1bmN0aW9uKCl7ci5hZGp1c3RSb2xsKHIucm9sbGVyXy52YWx1ZSl9fSx0LnByb3RvdHlwZS5jcmVhdGVEcmFnSW50ZXJmYWNlXz1mdW5jdGlvbigpe3ZhciBlPXtpc1pvb21pbmc6ITEsaXNQYW5uaW5nOiExLGlzMkRQYW46ITEsZHJhZ1N0YXJ0WDpudWxsLGRyYWdTdGFydFk6bnVsbCxkcmFnRW5kWDpudWxsLGRyYWdFbmRZOm51bGwsZHJhZ0RpcmVjdGlvbjpudWxsLHByZXZFbmRYOm51bGwscHJldkVuZFk6bnVsbCxwcmV2RHJhZ0RpcmVjdGlvbjpudWxsLGNhbmNlbE5leHREYmxjbGljazohMSxpbml0aWFsTGVmdG1vc3REYXRlOm51bGwseFVuaXRzUGVyUGl4ZWw6bnVsbCxkYXRlUmFuZ2U6bnVsbCxweDowLHB5OjAsYm91bmRlZERhdGVzOm51bGwsYm91bmRlZFZhbHVlczpudWxsLHRhcnA6bmV3IHQuSUZyYW1lVGFycCxpbml0aWFsaXplTW91c2VEb3duOmZ1bmN0aW9uKGUsYSxpKXtlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTooZS5yZXR1cm5WYWx1ZT0hMSxlLmNhbmNlbEJ1YmJsZT0hMCk7dmFyIHI9dC5maW5kUG9zKGEuY2FudmFzXyk7aS5weD1yLngsaS5weT1yLnksaS5kcmFnU3RhcnRYPXQuZHJhZ0dldFhfKGUsaSksaS5kcmFnU3RhcnRZPXQuZHJhZ0dldFlfKGUsaSksaS5jYW5jZWxOZXh0RGJsY2xpY2s9ITEsaS50YXJwLmNvdmVyKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKCh0LmlzWm9vbWluZ3x8dC5pc1Bhbm5pbmcpJiYodC5pc1pvb21pbmc9ITEsdC5kcmFnU3RhcnRYPW51bGwsdC5kcmFnU3RhcnRZPW51bGwpLHQuaXNQYW5uaW5nKXt0LmlzUGFubmluZz0hMSx0LmRyYWdnaW5nRGF0ZT1udWxsLHQuZGF0ZVJhbmdlPW51bGw7Zm9yKHZhciBlPTA7ZTxpLmF4ZXNfLmxlbmd0aDtlKyspZGVsZXRlIGkuYXhlc19bZV0uZHJhZ2dpbmdWYWx1ZSxkZWxldGUgaS5heGVzX1tlXS5kcmFnVmFsdWVSYW5nZX10LnRhcnAudW5jb3ZlcigpfX0sYT10aGlzLmdldE9wdGlvbigiaW50ZXJhY3Rpb25Nb2RlbCIpLGk9dGhpcyxyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihhKXt0KGEsaSxlKX19O2Zvcih2YXIgbiBpbiBhKWEuaGFzT3duUHJvcGVydHkobikmJnRoaXMuYWRkQW5kVHJhY2tFdmVudCh0aGlzLm1vdXNlRXZlbnRFbGVtZW50XyxuLHIoYVtuXSkpO2lmKCFhLndpbGxEZXN0cm95Q29udGV4dE15c2VsZil7dmFyIG89ZnVuY3Rpb24odCl7ZS5kZXN0cm95KCl9O3RoaXMuYWRkQW5kVHJhY2tFdmVudChkb2N1bWVudCwibW91c2V1cCIsbyl9fSx0LnByb3RvdHlwZS5kcmF3Wm9vbVJlY3RfPWZ1bmN0aW9uKGUsYSxpLHIsbixvLHMsbCl7dmFyIGg9dGhpcy5jYW52YXNfY3R4XztvPT10LkhPUklaT05UQUw/aC5jbGVhclJlY3QoTWF0aC5taW4oYSxzKSx0aGlzLmxheW91dF8uZ2V0UGxvdEFyZWEoKS55LE1hdGguYWJzKGEtcyksdGhpcy5sYXlvdXRfLmdldFBsb3RBcmVhKCkuaCk6bz09dC5WRVJUSUNBTCYmaC5jbGVhclJlY3QodGhpcy5sYXlvdXRfLmdldFBsb3RBcmVhKCkueCxNYXRoLm1pbihyLGwpLHRoaXMubGF5b3V0Xy5nZXRQbG90QXJlYSgpLncsTWF0aC5hYnMoci1sKSksZT09dC5IT1JJWk9OVEFMP2kmJmEmJihoLmZpbGxTdHlsZT0icmdiYSgxMjgsMTI4LDEyOCwwLjMzKSIsaC5maWxsUmVjdChNYXRoLm1pbihhLGkpLHRoaXMubGF5b3V0Xy5nZXRQbG90QXJlYSgpLnksTWF0aC5hYnMoaS1hKSx0aGlzLmxheW91dF8uZ2V0UGxvdEFyZWEoKS5oKSk6ZT09dC5WRVJUSUNBTCYmbiYmciYmKGguZmlsbFN0eWxlPSJyZ2JhKDEyOCwxMjgsMTI4LDAuMzMpIixoLmZpbGxSZWN0KHRoaXMubGF5b3V0Xy5nZXRQbG90QXJlYSgpLngsTWF0aC5taW4ocixuKSx0aGlzLmxheW91dF8uZ2V0UGxvdEFyZWEoKS53LE1hdGguYWJzKG4tcikpKSx0aGlzLmlzVXNpbmdFeGNhbnZhc18mJih0aGlzLmN1cnJlbnRab29tUmVjdEFyZ3NfPVtlLGEsaSxyLG4sMCwwLDBdKX0sdC5wcm90b3R5cGUuY2xlYXJab29tUmVjdF89ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRab29tUmVjdEFyZ3NfPW51bGwsdGhpcy5jYW52YXNfY3R4Xy5jbGVhclJlY3QoMCwwLHRoaXMud2lkdGhfLHRoaXMuaGVpZ2h0Xyl9LHQucHJvdG90eXBlLmRvWm9vbVhfPWZ1bmN0aW9uKHQsZSl7dGhpcy5jdXJyZW50Wm9vbVJlY3RBcmdzXz1udWxsO3ZhciBhPXRoaXMudG9EYXRhWENvb3JkKHQpLGk9dGhpcy50b0RhdGFYQ29vcmQoZSk7dGhpcy5kb1pvb21YRGF0ZXNfKGEsaSl9LHQucHJvdG90eXBlLmRvWm9vbVhEYXRlc189ZnVuY3Rpb24odCxlKXt2YXIgYT10aGlzLnhBeGlzUmFuZ2UoKSxpPVt0LGVdO3RoaXMuem9vbWVkX3hfPSEwO3ZhciByPXRoaXM7dGhpcy5kb0FuaW1hdGVkWm9vbShhLGksbnVsbCxudWxsLGZ1bmN0aW9uKCl7ci5nZXRGdW5jdGlvbk9wdGlvbigiem9vbUNhbGxiYWNrIikmJnIuZ2V0RnVuY3Rpb25PcHRpb24oInpvb21DYWxsYmFjayIpLmNhbGwocix0LGUsci55QXhpc1JhbmdlcygpKX0pfSx0LnByb3RvdHlwZS5kb1pvb21ZXz1mdW5jdGlvbih0LGUpe3RoaXMuY3VycmVudFpvb21SZWN0QXJnc189bnVsbDtmb3IodmFyIGE9dGhpcy55QXhpc1JhbmdlcygpLGk9W10scj0wO3I8dGhpcy5heGVzXy5sZW5ndGg7cisrKXt2YXIgbj10aGlzLnRvRGF0YVlDb29yZCh0LHIpLG89dGhpcy50b0RhdGFZQ29vcmQoZSxyKTtpLnB1c2goW28sbl0pfXRoaXMuem9vbWVkX3lfPSEwO3ZhciBzPXRoaXM7dGhpcy5kb0FuaW1hdGVkWm9vbShudWxsLG51bGwsYSxpLGZ1bmN0aW9uKCl7aWYocy5nZXRGdW5jdGlvbk9wdGlvbigiem9vbUNhbGxiYWNrIikpe3ZhciB0PXMueEF4aXNSYW5nZSgpO3MuZ2V0RnVuY3Rpb25PcHRpb24oInpvb21DYWxsYmFjayIpLmNhbGwocyx0WzBdLHRbMV0scy55QXhpc1JhbmdlcygpKX19KX0sdC56b29tQW5pbWF0aW9uRnVuY3Rpb249ZnVuY3Rpb24odCxlKXt2YXIgYT0xLjU7cmV0dXJuKDEtTWF0aC5wb3coYSwtdCkpLygxLU1hdGgucG93KGEsLWUpKX0sdC5wcm90b3R5cGUucmVzZXRab29tPWZ1bmN0aW9uKCl7dmFyIHQ9ITEsZT0hMSxhPSExO251bGwhPT10aGlzLmRhdGVXaW5kb3dfJiYodD0hMCxlPSEwKTtmb3IodmFyIGk9MDtpPHRoaXMuYXhlc18ubGVuZ3RoO2krKykidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuYXhlc19baV0udmFsdWVXaW5kb3cmJm51bGwhPT10aGlzLmF4ZXNfW2ldLnZhbHVlV2luZG93JiYodD0hMCxhPSEwKTtpZih0aGlzLmNsZWFyU2VsZWN0aW9uKCksdCl7dGhpcy56b29tZWRfeF89ITEsdGhpcy56b29tZWRfeV89ITE7dmFyIHI9dGhpcy5yYXdEYXRhX1swXVswXSxuPXRoaXMucmF3RGF0YV9bdGhpcy5yYXdEYXRhXy5sZW5ndGgtMV1bMF07aWYoIXRoaXMuZ2V0Qm9vbGVhbk9wdGlvbigiYW5pbWF0ZWRab29tcyIpKXtmb3IodGhpcy5kYXRlV2luZG93Xz1udWxsLGk9MDtpPHRoaXMuYXhlc18ubGVuZ3RoO2krKyludWxsIT09dGhpcy5heGVzX1tpXS52YWx1ZVdpbmRvdyYmZGVsZXRlIHRoaXMuYXhlc19baV0udmFsdWVXaW5kb3c7cmV0dXJuIHRoaXMuZHJhd0dyYXBoXygpLHZvaWQodGhpcy5nZXRGdW5jdGlvbk9wdGlvbigiem9vbUNhbGxiYWNrIikmJnRoaXMuZ2V0RnVuY3Rpb25PcHRpb24oInpvb21DYWxsYmFjayIpLmNhbGwodGhpcyxyLG4sdGhpcy55QXhpc1JhbmdlcygpKSl9dmFyIG89bnVsbCxzPW51bGwsbD1udWxsLGg9bnVsbDtpZihlJiYobz10aGlzLnhBeGlzUmFuZ2UoKSxzPVtyLG5dKSxhKXtsPXRoaXMueUF4aXNSYW5nZXMoKTt2YXIgcD10aGlzLmdhdGhlckRhdGFzZXRzXyh0aGlzLnJvbGxlZFNlcmllc18sbnVsbCksZz1wLmV4dHJlbWVzO2Zvcih0aGlzLmNvbXB1dGVZQXhpc1Jhbmdlc18oZyksaD1bXSxpPTA7aTx0aGlzLmF4ZXNfLmxlbmd0aDtpKyspe3ZhciBkPXRoaXMuYXhlc19baV07aC5wdXNoKG51bGwhPT1kLnZhbHVlUmFuZ2UmJnZvaWQgMCE9PWQudmFsdWVSYW5nZT9kLnZhbHVlUmFuZ2U6ZC5leHRyZW1lUmFuZ2UpfX12YXIgdT10aGlzO3RoaXMuZG9BbmltYXRlZFpvb20obyxzLGwsaCxmdW5jdGlvbigpe3UuZGF0ZVdpbmRvd189bnVsbDtmb3IodmFyIHQ9MDt0PHUuYXhlc18ubGVuZ3RoO3QrKyludWxsIT09dS5heGVzX1t0XS52YWx1ZVdpbmRvdyYmZGVsZXRlIHUuYXhlc19bdF0udmFsdWVXaW5kb3c7dS5nZXRGdW5jdGlvbk9wdGlvbigiem9vbUNhbGxiYWNrIikmJnUuZ2V0RnVuY3Rpb25PcHRpb24oInpvb21DYWxsYmFjayIpLmNhbGwodSxyLG4sdS55QXhpc1JhbmdlcygpKX0pfX0sdC5wcm90b3R5cGUuZG9BbmltYXRlZFpvb209ZnVuY3Rpb24oZSxhLGkscixuKXt2YXIgbyxzLGw9dGhpcy5nZXRCb29sZWFuT3B0aW9uKCJhbmltYXRlZFpvb21zIik/dC5BTklNQVRJT05fU1RFUFM6MSxoPVtdLHA9W107aWYobnVsbCE9PWUmJm51bGwhPT1hKWZvcihvPTE7bD49bztvKyspcz10Lnpvb21BbmltYXRpb25GdW5jdGlvbihvLGwpLGhbby0xXT1bZVswXSooMS1zKStzKmFbMF0sZVsxXSooMS1zKStzKmFbMV1dO2lmKG51bGwhPT1pJiZudWxsIT09cilmb3Iobz0xO2w+PW87bysrKXtzPXQuem9vbUFuaW1hdGlvbkZ1bmN0aW9uKG8sbCk7Zm9yKHZhciBnPVtdLGQ9MDtkPHRoaXMuYXhlc18ubGVuZ3RoO2QrKylnLnB1c2goW2lbZF1bMF0qKDEtcykrcypyW2RdWzBdLGlbZF1bMV0qKDEtcykrcypyW2RdWzFdXSk7cFtvLTFdPWd9dmFyIHU9dGhpczt0LnJlcGVhdEFuZENsZWFudXAoZnVuY3Rpb24odCl7aWYocC5sZW5ndGgpZm9yKHZhciBlPTA7ZTx1LmF4ZXNfLmxlbmd0aDtlKyspe3ZhciBhPXBbdF1bZV07dS5heGVzX1tlXS52YWx1ZVdpbmRvdz1bYVswXSxhWzFdXX1oLmxlbmd0aCYmKHUuZGF0ZVdpbmRvd189aFt0XSksdS5kcmF3R3JhcGhfKCl9LGwsdC5BTklNQVRJT05fRFVSQVRJT04vbCxuKX0sdC5wcm90b3R5cGUuZ2V0QXJlYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBsb3R0ZXJfLmFyZWF9LHQucHJvdG90eXBlLmV2ZW50VG9Eb21Db29yZHM9ZnVuY3Rpb24oZSl7aWYoZS5vZmZzZXRYJiZlLm9mZnNldFkpcmV0dXJuW2Uub2Zmc2V0WCxlLm9mZnNldFldO3ZhciBhPXQuZmluZFBvcyh0aGlzLm1vdXNlRXZlbnRFbGVtZW50XyksaT10LnBhZ2VYKGUpLWEueCxyPXQucGFnZVkoZSktYS55O3JldHVybltpLHJdfSx0LnByb3RvdHlwZS5maW5kQ2xvc2VzdFJvdz1mdW5jdGlvbihlKXtmb3IodmFyIGE9MS8wLGk9LTEscj10aGlzLmxheW91dF8ucG9pbnRzLG49MDtuPHIubGVuZ3RoO24rKylmb3IodmFyIG89cltuXSxzPW8ubGVuZ3RoLGw9MDtzPmw7bCsrKXt2YXIgaD1vW2xdO2lmKHQuaXNWYWxpZFBvaW50KGgsITApKXt2YXIgcD1NYXRoLmFicyhoLmNhbnZhc3gtZSk7YT5wJiYoYT1wLGk9aC5pZHgpfX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuZmluZENsb3Nlc3RQb2ludD1mdW5jdGlvbihlLGEpe2Zvcih2YXIgaSxyLG4sbyxzLGwsaCxwPTEvMCxnPXRoaXMubGF5b3V0Xy5wb2ludHMubGVuZ3RoLTE7Zz49MDstLWcpZm9yKHZhciBkPXRoaXMubGF5b3V0Xy5wb2ludHNbZ10sdT0wO3U8ZC5sZW5ndGg7Kyt1KW89ZFt1XSx0LmlzVmFsaWRQb2ludChvKSYmKHI9by5jYW52YXN4LWUsbj1vLmNhbnZhc3ktYSxpPXIqcituKm4scD5pJiYocD1pLHM9byxsPWcsaD1vLmlkeCkpO3ZhciBjPXRoaXMubGF5b3V0Xy5zZXROYW1lc1tsXTtyZXR1cm57cm93Omgsc2VyaWVzTmFtZTpjLHBvaW50OnN9fSx0LnByb3RvdHlwZS5maW5kU3RhY2tlZFBvaW50PWZ1bmN0aW9uKGUsYSl7Zm9yKHZhciBpLHIsbj10aGlzLmZpbmRDbG9zZXN0Um93KGUpLG89MDtvPHRoaXMubGF5b3V0Xy5wb2ludHMubGVuZ3RoOysrbyl7dmFyIHM9dGhpcy5nZXRMZWZ0Qm91bmRhcnlfKG8pLGw9bi1zLGg9dGhpcy5sYXlvdXRfLnBvaW50c1tvXTtpZighKGw+PWgubGVuZ3RoKSl7dmFyIHA9aFtsXTtpZih0LmlzVmFsaWRQb2ludChwKSl7dmFyIGc9cC5jYW52YXN5O2lmKGU+cC5jYW52YXN4JiZsKzE8aC5sZW5ndGgpe3ZhciBkPWhbbCsxXTtpZih0LmlzVmFsaWRQb2ludChkKSl7dmFyIHU9ZC5jYW52YXN4LXAuY2FudmFzeDtpZih1PjApe3ZhciBjPShlLXAuY2FudmFzeCkvdTtnKz1jKihkLmNhbnZhc3ktcC5jYW52YXN5KX19fWVsc2UgaWYoZTxwLmNhbnZhc3gmJmw+MCl7dmFyIHk9aFtsLTFdO2lmKHQuaXNWYWxpZFBvaW50KHkpKXt2YXIgdT1wLmNhbnZhc3gteS5jYW52YXN4O2lmKHU+MCl7dmFyIGM9KHAuY2FudmFzeC1lKS91O2crPWMqKHkuY2FudmFzeS1wLmNhbnZhc3kpfX19KDA9PT1vfHxhPmcpJiYoaT1wLHI9byl9fX12YXIgXz10aGlzLmxheW91dF8uc2V0TmFtZXNbcl07cmV0dXJue3JvdzpuLHNlcmllc05hbWU6Xyxwb2ludDppfX0sdC5wcm90b3R5cGUubW91c2VNb3ZlXz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxheW91dF8ucG9pbnRzO2lmKHZvaWQgMCE9PWUmJm51bGwhPT1lKXt2YXIgYT10aGlzLmV2ZW50VG9Eb21Db29yZHModCksaT1hWzBdLHI9YVsxXSxuPXRoaXMuZ2V0T3B0aW9uKCJoaWdobGlnaHRTZXJpZXNPcHRzIiksbz0hMTtpZihuJiYhdGhpcy5pc1Nlcmllc0xvY2tlZCgpKXt2YXIgcztzPXRoaXMuZ2V0Qm9vbGVhbk9wdGlvbigic3RhY2tlZEdyYXBoIik/dGhpcy5maW5kU3RhY2tlZFBvaW50KGkscik6dGhpcy5maW5kQ2xvc2VzdFBvaW50KGksciksbz10aGlzLnNldFNlbGVjdGlvbihzLnJvdyxzLnNlcmllc05hbWUpfWVsc2V7dmFyIGw9dGhpcy5maW5kQ2xvc2VzdFJvdyhpKTtvPXRoaXMuc2V0U2VsZWN0aW9uKGwpfXZhciBoPXRoaXMuZ2V0RnVuY3Rpb25PcHRpb24oImhpZ2hsaWdodENhbGxiYWNrIik7aCYmbyYmaC5jYWxsKHRoaXMsdCx0aGlzLmxhc3R4Xyx0aGlzLnNlbFBvaW50c18sdGhpcy5sYXN0Um93Xyx0aGlzLmhpZ2hsaWdodFNldF8pfX0sdC5wcm90b3R5cGUuZ2V0TGVmdEJvdW5kYXJ5Xz1mdW5jdGlvbih0KXtpZih0aGlzLmJvdW5kYXJ5SWRzX1t0XSlyZXR1cm4gdGhpcy5ib3VuZGFyeUlkc19bdF1bMF07Zm9yKHZhciBlPTA7ZTx0aGlzLmJvdW5kYXJ5SWRzXy5sZW5ndGg7ZSsrKWlmKHZvaWQgMCE9PXRoaXMuYm91bmRhcnlJZHNfW2VdKXJldHVybiB0aGlzLmJvdW5kYXJ5SWRzX1tlXVswXTtyZXR1cm4gMH0sdC5wcm90b3R5cGUuYW5pbWF0ZVNlbGVjdGlvbl89ZnVuY3Rpb24oZSl7dmFyIGE9MTAsaT0zMDt2b2lkIDA9PT10aGlzLmZhZGVMZXZlbCYmKHRoaXMuZmFkZUxldmVsPTApLHZvaWQgMD09PXRoaXMuYW5pbWF0ZUlkJiYodGhpcy5hbmltYXRlSWQ9MCk7dmFyIHI9dGhpcy5mYWRlTGV2ZWwsbj0wPmU/cjphLXI7aWYoMD49bilyZXR1cm4gdm9pZCh0aGlzLmZhZGVMZXZlbCYmdGhpcy51cGRhdGVTZWxlY3Rpb25fKDEpKTt2YXIgbz0rK3RoaXMuYW5pbWF0ZUlkLHM9dGhpczt0LnJlcGVhdEFuZENsZWFudXAoZnVuY3Rpb24odCl7cy5hbmltYXRlSWQ9PW8mJihzLmZhZGVMZXZlbCs9ZSwwPT09cy5mYWRlTGV2ZWw/cy5jbGVhclNlbGVjdGlvbigpOnMudXBkYXRlU2VsZWN0aW9uXyhzLmZhZGVMZXZlbC9hKSl9LG4saSxmdW5jdGlvbigpe30pfSx0LnByb3RvdHlwZS51cGRhdGVTZWxlY3Rpb25fPWZ1bmN0aW9uKGUpe3RoaXMuY2FzY2FkZUV2ZW50c18oInNlbGVjdCIse3NlbGVjdGVkUm93OnRoaXMubGFzdFJvd18sc2VsZWN0ZWRYOnRoaXMubGFzdHhfLHNlbGVjdGVkUG9pbnRzOnRoaXMuc2VsUG9pbnRzX30pO3ZhciBhLGk9dGhpcy5jYW52YXNfY3R4XztpZih0aGlzLmdldE9wdGlvbigiaGlnaGxpZ2h0U2VyaWVzT3B0cyIpKXtpLmNsZWFyUmVjdCgwLDAsdGhpcy53aWR0aF8sdGhpcy5oZWlnaHRfKTt2YXIgcj0xLXRoaXMuZ2V0TnVtZXJpY09wdGlvbigiaGlnaGxpZ2h0U2VyaWVzQmFja2dyb3VuZEFscGhhIik7aWYocil7dmFyIG49ITA7aWYobil7aWYodm9pZCAwPT09ZSlyZXR1cm4gdm9pZCB0aGlzLmFuaW1hdGVTZWxlY3Rpb25fKDEpO3IqPWV9aS5maWxsU3R5bGU9InJnYmEoMjU1LDI1NSwyNTUsIityKyIpIixpLmZpbGxSZWN0KDAsMCx0aGlzLndpZHRoXyx0aGlzLmhlaWdodF8pfXRoaXMucGxvdHRlcl8uX3JlbmRlckxpbmVDaGFydCh0aGlzLmhpZ2hsaWdodFNldF8saSl9ZWxzZSBpZih0aGlzLnByZXZpb3VzVmVydGljYWxYXz49MCl7dmFyIG89MCxzPXRoaXMuYXR0cl8oImxhYmVscyIpO2ZvcihhPTE7YTxzLmxlbmd0aDthKyspe3ZhciBsPXRoaXMuZ2V0TnVtZXJpY09wdGlvbigiaGlnaGxpZ2h0Q2lyY2xlU2l6ZSIsc1thXSk7bD5vJiYobz1sKX12YXIgaD10aGlzLnByZXZpb3VzVmVydGljYWxYXztpLmNsZWFyUmVjdChoLW8tMSwwLDIqbysyLHRoaXMuaGVpZ2h0Xyl9aWYodGhpcy5pc1VzaW5nRXhjYW52YXNfJiZ0aGlzLmN1cnJlbnRab29tUmVjdEFyZ3NfJiZ0LnByb3RvdHlwZS5kcmF3Wm9vbVJlY3RfLmFwcGx5KHRoaXMsdGhpcy5jdXJyZW50Wm9vbVJlY3RBcmdzXyksdGhpcy5zZWxQb2ludHNfLmxlbmd0aD4wKXt2YXIgcD10aGlzLnNlbFBvaW50c19bMF0uY2FudmFzeDtmb3IoaS5zYXZlKCksYT0wO2E8dGhpcy5zZWxQb2ludHNfLmxlbmd0aDthKyspe3ZhciBnPXRoaXMuc2VsUG9pbnRzX1thXTtpZih0LmlzT0soZy5jYW52YXN5KSl7dmFyIGQ9dGhpcy5nZXROdW1lcmljT3B0aW9uKCJoaWdobGlnaHRDaXJjbGVTaXplIixnLm5hbWUpLHU9dGhpcy5nZXRGdW5jdGlvbk9wdGlvbigiZHJhd0hpZ2hsaWdodFBvaW50Q2FsbGJhY2siLGcubmFtZSksYz10aGlzLnBsb3R0ZXJfLmNvbG9yc1tnLm5hbWVdO3V8fCh1PXQuQ2lyY2xlcy5ERUZBVUxUKSxpLmxpbmVXaWR0aD10aGlzLmdldE51bWVyaWNPcHRpb24oInN0cm9rZVdpZHRoIixnLm5hbWUpLGkuc3Ryb2tlU3R5bGU9YyxpLmZpbGxTdHlsZT1jLHUuY2FsbCh0aGlzLHRoaXMsZy5uYW1lLGkscCxnLmNhbnZhc3ksYyxkLGcuaWR4KX19aS5yZXN0b3JlKCksdGhpcy5wcmV2aW91c1ZlcnRpY2FsWF89cH19LHQucHJvdG90eXBlLnNldFNlbGVjdGlvbj1mdW5jdGlvbih0LGUsYSl7dGhpcy5zZWxQb2ludHNfPVtdO3ZhciBpPSExO2lmKHQhPT0hMSYmdD49MCl7dCE9dGhpcy5sYXN0Um93XyYmKGk9ITApLHRoaXMubGFzdFJvd189dDtmb3IodmFyIHI9MDtyPHRoaXMubGF5b3V0Xy5wb2ludHMubGVuZ3RoOysrcil7dmFyIG49dGhpcy5sYXlvdXRfLnBvaW50c1tyXSxvPXQtdGhpcy5nZXRMZWZ0Qm91bmRhcnlfKHIpO2lmKG88bi5sZW5ndGgmJm5bb10uaWR4PT10KXt2YXIgcz1uW29dO251bGwhPT1zLnl2YWwmJnRoaXMuc2VsUG9pbnRzXy5wdXNoKHMpfWVsc2UgZm9yKHZhciBsPTA7bDxuLmxlbmd0aDsrK2wpe3ZhciBzPW5bbF07aWYocy5pZHg9PXQpe251bGwhPT1zLnl2YWwmJnRoaXMuc2VsUG9pbnRzXy5wdXNoKHMpO2JyZWFrfX19fWVsc2UgdGhpcy5sYXN0Um93Xz49MCYmKGk9ITApLHRoaXMubGFzdFJvd189LTE7cmV0dXJuIHRoaXMuc2VsUG9pbnRzXy5sZW5ndGg/dGhpcy5sYXN0eF89dGhpcy5zZWxQb2ludHNfWzBdLnh2YWw6dGhpcy5sYXN0eF89LTEsdm9pZCAwIT09ZSYmKHRoaXMuaGlnaGxpZ2h0U2V0XyE9PWUmJihpPSEwKSx0aGlzLmhpZ2hsaWdodFNldF89ZSksdm9pZCAwIT09YSYmKHRoaXMubG9ja2VkU2V0Xz1hKSxpJiZ0aGlzLnVwZGF0ZVNlbGVjdGlvbl8odm9pZCAwKSxpfSx0LnByb3RvdHlwZS5tb3VzZU91dF89ZnVuY3Rpb24odCl7dGhpcy5nZXRGdW5jdGlvbk9wdGlvbigidW5oaWdobGlnaHRDYWxsYmFjayIpJiZ0aGlzLmdldEZ1bmN0aW9uT3B0aW9uKCJ1bmhpZ2hsaWdodENhbGxiYWNrIikuY2FsbCh0aGlzLHQpLHRoaXMuZ2V0Qm9vbGVhbk9wdGlvbigiaGlkZU92ZXJsYXlPbk1vdXNlT3V0IikmJiF0aGlzLmxvY2tlZFNldF8mJnRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdC5wcm90b3R5cGUuY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYXNjYWRlRXZlbnRzXygiZGVzZWxlY3QiLHt9KSx0aGlzLmxvY2tlZFNldF89ITEsdGhpcy5mYWRlTGV2ZWw/dm9pZCB0aGlzLmFuaW1hdGVTZWxlY3Rpb25fKC0xKToodGhpcy5jYW52YXNfY3R4Xy5jbGVhclJlY3QoMCwwLHRoaXMud2lkdGhfLHRoaXMuaGVpZ2h0XyksdGhpcy5mYWRlTGV2ZWw9MCx0aGlzLnNlbFBvaW50c189W10sdGhpcy5sYXN0eF89LTEsdGhpcy5sYXN0Um93Xz0tMSx2b2lkKHRoaXMuaGlnaGxpZ2h0U2V0Xz1udWxsKSl9LHQucHJvdG90eXBlLmdldFNlbGVjdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLnNlbFBvaW50c198fHRoaXMuc2VsUG9pbnRzXy5sZW5ndGg8MSlyZXR1cm4tMTtmb3IodmFyIHQ9MDt0PHRoaXMubGF5b3V0Xy5wb2ludHMubGVuZ3RoO3QrKylmb3IodmFyIGU9dGhpcy5sYXlvdXRfLnBvaW50c1t0XSxhPTA7YTxlLmxlbmd0aDthKyspaWYoZVthXS54PT10aGlzLnNlbFBvaW50c19bMF0ueClyZXR1cm4gZVthXS5pZHg7cmV0dXJuLTF9LHQucHJvdG90eXBlLmdldEhpZ2hsaWdodFNlcmllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZ2hsaWdodFNldF99LHQucHJvdG90eXBlLmlzU2VyaWVzTG9ja2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9ja2VkU2V0X30sdC5wcm90b3R5cGUubG9hZGVkRXZlbnRfPWZ1bmN0aW9uKHQpe3RoaXMucmF3RGF0YV89dGhpcy5wYXJzZUNTVl8odCksdGhpcy5jYXNjYWRlRGF0YURpZFVwZGF0ZUV2ZW50XygpLHRoaXMucHJlZHJhd18oKX0sdC5wcm90b3R5cGUuYWRkWFRpY2tzXz1mdW5jdGlvbigpe3ZhciB0O3Q9dGhpcy5kYXRlV2luZG93Xz9bdGhpcy5kYXRlV2luZG93X1swXSx0aGlzLmRhdGVXaW5kb3dfWzFdXTp0aGlzLnhBeGlzRXh0cmVtZXMoKTt2YXIgZT10aGlzLm9wdGlvbnNWaWV3Rm9yQXhpc18oIngiKSxhPWUoInRpY2tlciIpKHRbMF0sdFsxXSx0aGlzLnBsb3R0ZXJfLmFyZWEudyxlLHRoaXMpO3RoaXMubGF5b3V0Xy5zZXRYVGlja3MoYSl9LHQucHJvdG90eXBlLmdldEhhbmRsZXJDbGFzc189ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gZT10aGlzLmF0dHJfKCJkYXRhSGFuZGxlciIpP3RoaXMuYXR0cl8oImRhdGFIYW5kbGVyIik6dGhpcy5mcmFjdGlvbnNfP3RoaXMuZ2V0Qm9vbGVhbk9wdGlvbigiZXJyb3JCYXJzIik/dC5EYXRhSGFuZGxlcnMuRnJhY3Rpb25zQmFyc0hhbmRsZXI6dC5EYXRhSGFuZGxlcnMuRGVmYXVsdEZyYWN0aW9uSGFuZGxlcjp0aGlzLmdldEJvb2xlYW5PcHRpb24oImN1c3RvbUJhcnMiKT90LkRhdGFIYW5kbGVycy5DdXN0b21CYXJzSGFuZGxlcjp0aGlzLmdldEJvb2xlYW5PcHRpb24oImVycm9yQmFycyIpP3QuRGF0YUhhbmRsZXJzLkVycm9yQmFyc0hhbmRsZXI6dC5EYXRhSGFuZGxlcnMuRGVmYXVsdEhhbmRsZXJ9LHQucHJvdG90eXBlLnByZWRyYXdfPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IERhdGU7dGhpcy5kYXRhSGFuZGxlcl89bmV3KHRoaXMuZ2V0SGFuZGxlckNsYXNzXygpKSx0aGlzLmxheW91dF8uY29tcHV0ZVBsb3RBcmVhKCksdGhpcy5jb21wdXRlWUF4ZXNfKCksdGhpcy5pc19pbml0aWFsX2RyYXdffHwodGhpcy5jYW52YXNfY3R4Xy5yZXN0b3JlKCksdGhpcy5oaWRkZW5fY3R4Xy5yZXN0b3JlKCkpLHRoaXMuY2FudmFzX2N0eF8uc2F2ZSgpLHRoaXMuaGlkZGVuX2N0eF8uc2F2ZSgpLHRoaXMucGxvdHRlcl89bmV3IER5Z3JhcGhDYW52YXNSZW5kZXJlcih0aGlzLHRoaXMuaGlkZGVuXyx0aGlzLmhpZGRlbl9jdHhfLHRoaXMubGF5b3V0XyksdGhpcy5jcmVhdGVSb2xsSW50ZXJmYWNlXygpLHRoaXMuY2FzY2FkZUV2ZW50c18oInByZWRyYXciKSx0aGlzLnJvbGxlZFNlcmllc189W251bGxdO2Zvcih2YXIgZT0xO2U8dGhpcy5udW1Db2x1bW5zKCk7ZSsrKXt2YXIgYT10aGlzLmRhdGFIYW5kbGVyXy5leHRyYWN0U2VyaWVzKHRoaXMucmF3RGF0YV8sZSx0aGlzLmF0dHJpYnV0ZXNfKTt0aGlzLnJvbGxQZXJpb2RfPjEmJihhPXRoaXMuZGF0YUhhbmRsZXJfLnJvbGxpbmdBdmVyYWdlKGEsdGhpcy5yb2xsUGVyaW9kXyx0aGlzLmF0dHJpYnV0ZXNfKSksdGhpcy5yb2xsZWRTZXJpZXNfLnB1c2goYSl9dGhpcy5kcmF3R3JhcGhfKCk7dmFyIGk9bmV3IERhdGU7dGhpcy5kcmF3aW5nVGltZU1zXz1pLXR9LHQuUG9pbnRUeXBlPXZvaWQgMCx0LnN0YWNrUG9pbnRzXz1mdW5jdGlvbih0LGUsYSxpKXtmb3IodmFyIHI9bnVsbCxuPW51bGwsbz1udWxsLHM9LTEsbD1mdW5jdGlvbihlKXtpZighKHM+PWUpKWZvcih2YXIgYT1lO2E8dC5sZW5ndGg7KythKWlmKG89bnVsbCwhaXNOYU4odFthXS55dmFsKSYmbnVsbCE9PXRbYV0ueXZhbCl7cz1hLG89dFthXTticmVha319LGg9MDtoPHQubGVuZ3RoOysraCl7dmFyIHA9dFtoXSxnPXAueHZhbDt2b2lkIDA9PT1lW2ddJiYoZVtnXT0wKTt2YXIgZD1wLnl2YWw7aXNOYU4oZCl8fG51bGw9PT1kPyJub25lIj09aT9kPTA6KGwoaCksZD1uJiZvJiYibm9uZSIhPWk/bi55dmFsKyhvLnl2YWwtbi55dmFsKSooKGctbi54dmFsKS8oby54dmFsLW4ueHZhbCkpOm4mJiJhbGwiPT1pP24ueXZhbDpvJiYiYWxsIj09aT9vLnl2YWw6MCk6bj1wO3ZhciB1PWVbZ107ciE9ZyYmKHUrPWQsZVtnXT11KSxyPWcscC55dmFsX3N0YWNrZWQ9dSx1PmFbMV0mJihhWzFdPXUpLHU8YVswXSYmKGFbMF09dSl9fSx0LnByb3RvdHlwZS5nYXRoZXJEYXRhc2V0c189ZnVuY3Rpb24oZSxhKXt2YXIgaSxyLG4sbyxzLGwsaD1bXSxwPVtdLGc9W10sZD17fSx1PWUubGVuZ3RoLTE7Zm9yKGk9dTtpPj0xO2ktLSlpZih0aGlzLnZpc2liaWxpdHkoKVtpLTFdKXtpZihhKXtsPWVbaV07dmFyIGM9YVswXSx5PWFbMV07Zm9yKG49bnVsbCxvPW51bGwscj0wO3I8bC5sZW5ndGg7cisrKWxbcl1bMF0+PWMmJm51bGw9PT1uJiYobj1yKSxsW3JdWzBdPD15JiYobz1yKTtudWxsPT09biYmKG49MCk7Zm9yKHZhciBfPW4sdj0hMDt2JiZfPjA7KV8tLSx2PW51bGw9PT1sW19dWzFdO251bGw9PT1vJiYobz1sLmxlbmd0aC0xKTt2YXIgZj1vO2Zvcih2PSEwO3YmJmY8bC5sZW5ndGgtMTspZisrLHY9bnVsbD09PWxbZl1bMV07XyE9PW4mJihuPV8pLGYhPT1vJiYobz1mKSxoW2ktMV09W24sb10sbD1sLnNsaWNlKG4sbysxKX1lbHNlIGw9ZVtpXSxoW2ktMV09WzAsbC5sZW5ndGgtMV07dmFyIHg9dGhpcy5hdHRyXygibGFiZWxzIilbaV0sbT10aGlzLmRhdGFIYW5kbGVyXy5nZXRFeHRyZW1lWVZhbHVlcyhsLGEsdGhpcy5nZXRCb29sZWFuT3B0aW9uKCJzdGVwUGxvdCIseCkpLEQ9dGhpcy5kYXRhSGFuZGxlcl8uc2VyaWVzVG9Qb2ludHMobCx4LGhbaS0xXVswXSk7dGhpcy5nZXRCb29sZWFuT3B0aW9uKCJzdGFja2VkR3JhcGgiKSYmKHM9dGhpcy5hdHRyaWJ1dGVzXy5heGlzRm9yU2VyaWVzKHgpLHZvaWQgMD09PWdbc10mJihnW3NdPVtdKSx0LnN0YWNrUG9pbnRzXyhELGdbc10sbSx0aGlzLmdldEJvb2xlYW5PcHRpb24oInN0YWNrZWRHcmFwaE5hTkZpbGwiKSkpLGRbeF09bSxwW2ldPUR9cmV0dXJue3BvaW50czpwLGV4dHJlbWVzOmQsYm91bmRhcnlJZHM6aH19LHQucHJvdG90eXBlLmRyYXdHcmFwaF89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRGF0ZSxlPXRoaXMuaXNfaW5pdGlhbF9kcmF3Xzt0aGlzLmlzX2luaXRpYWxfZHJhd189ITEsdGhpcy5sYXlvdXRfLnJlbW92ZUFsbERhdGFzZXRzKCksdGhpcy5zZXRDb2xvcnNfKCksdGhpcy5hdHRyc18ucG9pbnRTaXplPS41KnRoaXMuZ2V0TnVtZXJpY09wdGlvbigiaGlnaGxpZ2h0Q2lyY2xlU2l6ZSIpO3ZhciBhPXRoaXMuZ2F0aGVyRGF0YXNldHNfKHRoaXMucm9sbGVkU2VyaWVzXyx0aGlzLmRhdGVXaW5kb3dfKSxpPWEucG9pbnRzLHI9YS5leHRyZW1lczt0aGlzLmJvdW5kYXJ5SWRzXz1hLmJvdW5kYXJ5SWRzLHRoaXMuc2V0SW5kZXhCeU5hbWVfPXt9O3ZhciBuPXRoaXMuYXR0cl8oImxhYmVscyIpO24ubGVuZ3RoPjAmJih0aGlzLnNldEluZGV4QnlOYW1lX1tuWzBdXT0wKTtmb3IodmFyIG89MCxzPTE7czxpLmxlbmd0aDtzKyspdGhpcy5zZXRJbmRleEJ5TmFtZV9bbltzXV09cyx0aGlzLnZpc2liaWxpdHkoKVtzLTFdJiYodGhpcy5sYXlvdXRfLmFkZERhdGFzZXQobltzXSxpW3NdKSx0aGlzLmRhdGFzZXRJbmRleF9bc109bysrKTt0aGlzLmNvbXB1dGVZQXhpc1Jhbmdlc18ociksdGhpcy5sYXlvdXRfLnNldFlBeGVzKHRoaXMuYXhlc18pLHRoaXMuYWRkWFRpY2tzXygpO3ZhciBsPXRoaXMuem9vbWVkX3hfO2lmKHRoaXMuem9vbWVkX3hfPWwsdGhpcy5sYXlvdXRfLmV2YWx1YXRlKCksdGhpcy5yZW5kZXJHcmFwaF8oZSksdGhpcy5nZXRTdHJpbmdPcHRpb24oInRpbWluZ05hbWUiKSl7dmFyIGg9bmV3IERhdGU7Y29uc29sZS5sb2codGhpcy5nZXRTdHJpbmdPcHRpb24oInRpbWluZ05hbWUiKSsiIC0gZHJhd0dyYXBoOiAiKyhoLXQpKyJtcyIpfX0sdC5wcm90b3R5cGUucmVuZGVyR3JhcGhfPWZ1bmN0aW9uKHQpe3RoaXMuY2FzY2FkZUV2ZW50c18oImNsZWFyQ2hhcnQiKSx0aGlzLnBsb3R0ZXJfLmNsZWFyKCksdGhpcy5nZXRGdW5jdGlvbk9wdGlvbigidW5kZXJsYXlDYWxsYmFjayIpJiZ0aGlzLmdldEZ1bmN0aW9uT3B0aW9uKCJ1bmRlcmxheUNhbGxiYWNrIikuY2FsbCh0aGlzLHRoaXMuaGlkZGVuX2N0eF8sdGhpcy5sYXlvdXRfLmdldFBsb3RBcmVhKCksdGhpcyx0aGlzKTt2YXIgZT17Y2FudmFzOnRoaXMuaGlkZGVuXyxkcmF3aW5nQ29udGV4dDp0aGlzLmhpZGRlbl9jdHhffTtpZih0aGlzLmNhc2NhZGVFdmVudHNfKCJ3aWxsRHJhd0NoYXJ0IixlKSx0aGlzLnBsb3R0ZXJfLnJlbmRlcigpLHRoaXMuY2FzY2FkZUV2ZW50c18oImRpZERyYXdDaGFydCIsZSksdGhpcy5sYXN0Um93Xz0tMSx0aGlzLmNhbnZhc18uZ2V0Q29udGV4dCgiMmQiKS5jbGVhclJlY3QoMCwwLHRoaXMud2lkdGhfLHRoaXMuaGVpZ2h0XyksbnVsbCE9PXRoaXMuZ2V0RnVuY3Rpb25PcHRpb24oImRyYXdDYWxsYmFjayIpJiZ0aGlzLmdldEZ1bmN0aW9uT3B0aW9uKCJkcmF3Q2FsbGJhY2siKS5jYWxsKHRoaXMsdGhpcyx0KSx0KWZvcih0aGlzLnJlYWR5RmlyZWRfPSEwO3RoaXMucmVhZHlGbnNfLmxlbmd0aD4wOyl7dmFyIGE9dGhpcy5yZWFkeUZuc18ucG9wKCk7YSh0aGlzKX19LHQucHJvdG90eXBlLmNvbXB1dGVZQXhlc189ZnVuY3Rpb24oKXt2YXIgZSxhLGkscixuO2lmKHZvaWQgMCE9PXRoaXMuYXhlc18mJnRoaXMudXNlcl9hdHRyc18uaGFzT3duUHJvcGVydHkoInZhbHVlUmFuZ2UiKT09PSExKWZvcihlPVtdLGk9MDtpPHRoaXMuYXhlc18ubGVuZ3RoO2krKyllLnB1c2godGhpcy5heGVzX1tpXS52YWx1ZVdpbmRvdyk7Zm9yKHRoaXMuYXhlc189W10sYT0wO2E8dGhpcy5hdHRyaWJ1dGVzXy5udW1BeGVzKCk7YSsrKXI9e2c6dGhpc30sdC51cGRhdGUocix0aGlzLmF0dHJpYnV0ZXNfLmF4aXNPcHRpb25zKGEpKSx0aGlzLmF4ZXNfW2FdPXI7aWYobj10aGlzLmF0dHJfKCJ2YWx1ZVJhbmdlIiksbiYmKHRoaXMuYXhlc19bMF0udmFsdWVSYW5nZT1uKSx2b2lkIDAhPT1lKXt2YXIgbz1NYXRoLm1pbihlLmxlbmd0aCx0aGlzLmF4ZXNfLmxlbmd0aCk7Zm9yKGk9MDtvPmk7aSsrKXRoaXMuYXhlc19baV0udmFsdWVXaW5kb3c9ZVtpXX1mb3IoYT0wO2E8dGhpcy5heGVzXy5sZW5ndGg7YSsrKWlmKDA9PT1hKXI9dGhpcy5vcHRpb25zVmlld0ZvckF4aXNfKCJ5IisoYT8iMiI6IiIpKSxuPXIoInZhbHVlUmFuZ2UiKSxuJiYodGhpcy5heGVzX1thXS52YWx1ZVJhbmdlPW4pO2Vsc2V7dmFyIHM9dGhpcy51c2VyX2F0dHJzXy5heGVzO3MmJnMueTImJihuPXMueTIudmFsdWVSYW5nZSxuJiYodGhpcy5heGVzX1thXS52YWx1ZVJhbmdlPW4pKX19LHQucHJvdG90eXBlLm51bUF4ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzXy5udW1BeGVzKCl9LHQucHJvdG90eXBlLmF4aXNQcm9wZXJ0aWVzRm9yU2VyaWVzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF4ZXNfW3RoaXMuYXR0cmlidXRlc18uYXhpc0ZvclNlcmllcyh0KV19LHQucHJvdG90eXBlLmNvbXB1dGVZQXhpc1Jhbmdlc189ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGEsaSxyLG4sbz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4ocGFyc2VGbG9hdCh0KSl9LHM9dGhpcy5hdHRyaWJ1dGVzXy5udW1BeGVzKCksbD0wO3M+bDtsKyspe3ZhciBoPXRoaXMuYXhlc19bbF0scD10aGlzLmF0dHJpYnV0ZXNfLmdldEZvckF4aXMoImxvZ3NjYWxlIixsKSxnPXRoaXMuYXR0cmlidXRlc18uZ2V0Rm9yQXhpcygiaW5jbHVkZVplcm8iLGwpLGQ9dGhpcy5hdHRyaWJ1dGVzXy5nZXRGb3JBeGlzKCJpbmRlcGVuZGVudFRpY2tzIixsKTtpZihpPXRoaXMuYXR0cmlidXRlc18uc2VyaWVzRm9yQXhpcyhsKSxlPSEwLHI9LjEsbnVsbCE9PXRoaXMuZ2V0TnVtZXJpY09wdGlvbigieVJhbmdlUGFkIikmJihlPSExLHI9dGhpcy5nZXROdW1lcmljT3B0aW9uKCJ5UmFuZ2VQYWQiKS90aGlzLnBsb3R0ZXJfLmFyZWEuaCksMD09PWkubGVuZ3RoKWguZXh0cmVtZVJhbmdlPVswLDFdO2Vsc2V7Zm9yKHZhciB1LGMseT0xLzAsXz0tKDEvMCksdj0wO3Y8aS5sZW5ndGg7disrKXQuaGFzT3duUHJvcGVydHkoaVt2XSkmJih1PXRbaVt2XV1bMF0sbnVsbCE9PXUmJih5PU1hdGgubWluKHUseSkpLGM9dFtpW3ZdXVsxXSxudWxsIT09YyYmKF89TWF0aC5tYXgoYyxfKSkpO2cmJiFwJiYoeT4wJiYoeT0wKSwwPl8mJihfPTApKSx5PT0xLzAmJih5PTApLF89PS0oMS8wKSYmKF89MSksYT1fLXksMD09PWEmJigwIT09Xz9hPU1hdGguYWJzKF8pOihfPTEsYT0xKSk7dmFyIGYseDtpZihwKWlmKGUpZj1fK3IqYSx4PXk7ZWxzZXt2YXIgbT1NYXRoLmV4cChNYXRoLmxvZyhhKSpyKTtmPV8qbSx4PXkvbX1lbHNlIGY9XytyKmEseD15LXIqYSxlJiYhdGhpcy5nZXRCb29sZWFuT3B0aW9uKCJhdm9pZE1pblplcm8iKSYmKDA+eCYmeT49MCYmKHg9MCksZj4wJiYwPj1fJiYoZj0wKSk7aC5leHRyZW1lUmFuZ2U9W3gsZl19aWYoaC52YWx1ZVdpbmRvdyloLmNvbXB1dGVkVmFsdWVSYW5nZT1baC52YWx1ZVdpbmRvd1swXSxoLnZhbHVlV2luZG93WzFdXTtlbHNlIGlmKGgudmFsdWVSYW5nZSl7dmFyIEQ9byhoLnZhbHVlUmFuZ2VbMF0pP2guZXh0cmVtZVJhbmdlWzBdOmgudmFsdWVSYW5nZVswXSx3PW8oaC52YWx1ZVJhbmdlWzFdKT9oLmV4dHJlbWVSYW5nZVsxXTpoLnZhbHVlUmFuZ2VbMV07aWYoIWUpaWYoaC5sb2dzY2FsZSl7dmFyIG09TWF0aC5leHAoTWF0aC5sb2coYSkqcik7RCo9bSx3Lz1tfWVsc2UgYT13LUQsRC09YSpyLHcrPWEqcjtoLmNvbXB1dGVkVmFsdWVSYW5nZT1bRCx3XX1lbHNlIGguY29tcHV0ZWRWYWx1ZVJhbmdlPWguZXh0cmVtZVJhbmdlO2lmKGQpe2guaW5kZXBlbmRlbnRUaWNrcz1kO3ZhciBBPXRoaXMub3B0aW9uc1ZpZXdGb3JBeGlzXygieSIrKGw/IjIiOiIiKSksYj1BKCJ0aWNrZXIiKTtoLnRpY2tzPWIoaC5jb21wdXRlZFZhbHVlUmFuZ2VbMF0saC5jb21wdXRlZFZhbHVlUmFuZ2VbMV0sdGhpcy5wbG90dGVyXy5hcmVhLmgsQSx0aGlzKSxufHwobj1oKX19aWYodm9pZCAwPT09bil0aHJvdydDb25maWd1cmF0aW9uIEVycm9yOiBBdCBsZWFzdCBvbmUgYXhpcyBoYXMgdG8gaGF2ZSB0aGUgImluZGVwZW5kZW50VGlja3MiIG9wdGlvbiBhY3RpdmF0ZWQuJztmb3IodmFyIGw9MDtzPmw7bCsrKXt2YXIgaD10aGlzLmF4ZXNfW2xdO2lmKCFoLmluZGVwZW5kZW50VGlja3Mpe2Zvcih2YXIgQT10aGlzLm9wdGlvbnNWaWV3Rm9yQXhpc18oInkiKyhsPyIyIjoiIikpLGI9QSgidGlja2VyIiksVD1uLnRpY2tzLEU9bi5jb21wdXRlZFZhbHVlUmFuZ2VbMV0tbi5jb21wdXRlZFZhbHVlUmFuZ2VbMF0sQz1oLmNvbXB1dGVkVmFsdWVSYW5nZVsxXS1oLmNvbXB1dGVkVmFsdWVSYW5nZVswXSxMPVtdLFA9MDtQPFQubGVuZ3RoO1ArKyl7dmFyIFM9KFRbUF0udi1uLmNvbXB1dGVkVmFsdWVSYW5nZVswXSkvRSxPPWguY29tcHV0ZWRWYWx1ZVJhbmdlWzBdK1MqQztMLnB1c2goTyl9aC50aWNrcz1iKGguY29tcHV0ZWRWYWx1ZVJhbmdlWzBdLGguY29tcHV0ZWRWYWx1ZVJhbmdlWzFdLHRoaXMucGxvdHRlcl8uYXJlYS5oLEEsdGhpcyxMKX19fSx0LnByb3RvdHlwZS5kZXRlY3RUeXBlRnJvbVN0cmluZ189ZnVuY3Rpb24odCl7dmFyIGU9ITEsYT10LmluZGV4T2YoIi0iKTthPjAmJiJlIiE9dFthLTFdJiYiRSIhPXRbYS0xXXx8dC5pbmRleE9mKCIvIik+PTB8fGlzTmFOKHBhcnNlRmxvYXQodCkpP2U9ITA6OD09dC5sZW5ndGgmJnQ+IjE5NzAwMTAxIiYmIjIwMzcxMjMxIj50JiYoZT0hMCksdGhpcy5zZXRYQXhpc09wdGlvbnNfKGUpfSx0LnByb3RvdHlwZS5zZXRYQXhpc09wdGlvbnNfPWZ1bmN0aW9uKGUpe2U/KHRoaXMuYXR0cnNfLnhWYWx1ZVBhcnNlcj10LmRhdGVQYXJzZXIsdGhpcy5hdHRyc18uYXhlcy54LnZhbHVlRm9ybWF0dGVyPXQuZGF0ZVZhbHVlRm9ybWF0dGVyLHRoaXMuYXR0cnNfLmF4ZXMueC50aWNrZXI9dC5kYXRlVGlja2VyLHRoaXMuYXR0cnNfLmF4ZXMueC5heGlzTGFiZWxGb3JtYXR0ZXI9dC5kYXRlQXhpc0xhYmVsRm9ybWF0dGVyKToodGhpcy5hdHRyc18ueFZhbHVlUGFyc2VyPWZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSx0aGlzLmF0dHJzXy5heGVzLngudmFsdWVGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHRoaXMuYXR0cnNfLmF4ZXMueC50aWNrZXI9dC5udW1lcmljVGlja3MsdGhpcy5hdHRyc18uYXhlcy54LmF4aXNMYWJlbEZvcm1hdHRlcj10aGlzLmF0dHJzXy5heGVzLngudmFsdWVGb3JtYXR0ZXIpfSx0LnByb3RvdHlwZS5wYXJzZUNTVl89ZnVuY3Rpb24oZSl7dmFyIGEsaSxyPVtdLG49dC5kZXRlY3RMaW5lRGVsaW1pdGVyKGUpLG89ZS5zcGxpdChufHwiXG4iKSxzPXRoaXMuZ2V0U3RyaW5nT3B0aW9uKCJkZWxpbWl0ZXIiKTstMT09b1swXS5pbmRleE9mKHMpJiZvWzBdLmluZGV4T2YoIgkiKT49MCYmKHM9IgkiKTt2YXIgbD0wOyJsYWJlbHMiaW4gdGhpcy51c2VyX2F0dHJzX3x8KGw9MSx0aGlzLmF0dHJzXy5sYWJlbHM9b1swXS5zcGxpdChzKSx0aGlzLmF0dHJpYnV0ZXNfLnJlcGFyc2VTZXJpZXMoKSk7Zm9yKHZhciBoLHA9MCxnPSExLGQ9dGhpcy5hdHRyXygibGFiZWxzIikubGVuZ3RoLHU9ITEsYz1sO2M8by5sZW5ndGg7YysrKXt2YXIgeT1vW2NdO2lmKHA9YywwIT09eS5sZW5ndGgmJiIjIiE9eVswXSl7dmFyIF89eS5zcGxpdChzKTtpZighKF8ubGVuZ3RoPDIpKXt2YXIgdj1bXTtpZihnfHwodGhpcy5kZXRlY3RUeXBlRnJvbVN0cmluZ18oX1swXSksaD10aGlzLmdldEZ1bmN0aW9uT3B0aW9uKCJ4VmFsdWVQYXJzZXIiKSxnPSEwKSx2WzBdPWgoX1swXSx0aGlzKSx0aGlzLmZyYWN0aW9uc18pZm9yKGk9MTtpPF8ubGVuZ3RoO2krKylhPV9baV0uc3BsaXQoIi8iKSwyIT1hLmxlbmd0aD8oY29uc29sZS5lcnJvcignRXhwZWN0ZWQgZnJhY3Rpb25hbCAibnVtL2RlbiIgdmFsdWVzIGluIENTViBkYXRhIGJ1dCBmb3VuZCBhIHZhbHVlIFwnJytfW2ldKyInIG9uIGxpbmUgIisoMStjKSsiICgnIit5KyInKSB3aGljaCBpcyBub3Qgb2YgdGhpcyBmb3JtLiIpLHZbaV09WzAsMF0pOnZbaV09W3QucGFyc2VGbG9hdF8oYVswXSxjLHkpLHQucGFyc2VGbG9hdF8oYVsxXSxjLHkpXTtlbHNlIGlmKHRoaXMuZ2V0Qm9vbGVhbk9wdGlvbigiZXJyb3JCYXJzIikpZm9yKF8ubGVuZ3RoJTIhPTEmJmNvbnNvbGUuZXJyb3IoIkV4cGVjdGVkIGFsdGVybmF0aW5nICh2YWx1ZSwgc3RkZXYuKSBwYWlycyBpbiBDU1YgZGF0YSBidXQgbGluZSAiKygxK2MpKyIgaGFzIGFuIG9kZCBudW1iZXIgb2YgdmFsdWVzICgiKyhfLmxlbmd0aC0xKSsiKTogJyIreSsiJyIpLGk9MTtpPF8ubGVuZ3RoO2krPTIpdlsoaSsxKS8yXT1bdC5wYXJzZUZsb2F0XyhfW2ldLGMseSksdC5wYXJzZUZsb2F0XyhfW2krMV0sYyx5KV07ZWxzZSBpZih0aGlzLmdldEJvb2xlYW5PcHRpb24oImN1c3RvbUJhcnMiKSlmb3IoaT0xO2k8Xy5sZW5ndGg7aSsrKXt2YXIgZj1fW2ldOy9eICokLy50ZXN0KGYpP3ZbaV09W251bGwsbnVsbCxudWxsXTooYT1mLnNwbGl0KCI7IiksMz09YS5sZW5ndGg/dltpXT1bdC5wYXJzZUZsb2F0XyhhWzBdLGMseSksdC5wYXJzZUZsb2F0XyhhWzFdLGMseSksdC5wYXJzZUZsb2F0XyhhWzJdLGMseSldOmNvbnNvbGUud2FybignV2hlbiB1c2luZyBjdXN0b21CYXJzLCB2YWx1ZXMgbXVzdCBiZSBlaXRoZXIgYmxhbmsgb3IgImxvdztjZW50ZXI7aGlnaCIgdHVwbGVzIChnb3QgIicrZisnIiBvbiBsaW5lICcrKDErYykpKX1lbHNlIGZvcihpPTE7aTxfLmxlbmd0aDtpKyspdltpXT10LnBhcnNlRmxvYXRfKF9baV0sYyx5KTtpZihyLmxlbmd0aD4wJiZ2WzBdPHJbci5sZW5ndGgtMV1bMF0mJih1PSEwKSx2Lmxlbmd0aCE9ZCYmY29uc29sZS5lcnJvcigiTnVtYmVyIG9mIGNvbHVtbnMgaW4gbGluZSAiK2MrIiAoIit2Lmxlbmd0aCsiKSBkb2VzIG5vdCBhZ3JlZSB3aXRoIG51bWJlciBvZiBsYWJlbHMgKCIrZCsiKSAiK3kpLDA9PT1jJiZ0aGlzLmF0dHJfKCJsYWJlbHMiKSl7dmFyIHg9ITA7Zm9yKGk9MDt4JiZpPHYubGVuZ3RoO2krKyl2W2ldJiYoeD0hMSk7aWYoeCl7Y29uc29sZS53YXJuKCJUaGUgZHlncmFwaHMgJ2xhYmVscycgb3B0aW9uIGlzIHNldCwgYnV0IHRoZSBmaXJzdCByb3cgb2YgQ1NWIGRhdGEgKCciK3krIicpIGFwcGVhcnMgdG8gYWxzbyBjb250YWluIGxhYmVscy4gV2lsbCBkcm9wIHRoZSBDU1YgbGFiZWxzIGFuZCB1c2UgdGhlIG9wdGlvbiBsYWJlbHMuIik7Y29udGludWV9fXIucHVzaCh2KX19fXJldHVybiB1JiYoY29uc29sZS53YXJuKCJDU1YgaXMgb3V0IG9mIG9yZGVyOyBvcmRlciBpdCBjb3JyZWN0bHkgdG8gc3BlZWQgbG9hZGluZy4iKSxyLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXS1lWzBdfSkpLHJ9LHQucHJvdG90eXBlLnBhcnNlQXJyYXlfPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gY29uc29sZS5lcnJvcigiQ2FuJ3QgcGxvdCBlbXB0eSBkYXRhIHNldCIpLG51bGw7aWYoMD09PWVbMF0ubGVuZ3RoKXJldHVybiBjb25zb2xlLmVycm9yKCJEYXRhIHNldCBjYW5ub3QgY29udGFpbiBhbiBlbXB0eSByb3ciKSxudWxsO3ZhciBhO2lmKG51bGw9PT10aGlzLmF0dHJfKCJsYWJlbHMiKSl7Zm9yKGNvbnNvbGUud2FybigiVXNpbmcgZGVmYXVsdCBsYWJlbHMuIFNldCBsYWJlbHMgZXhwbGljaXRseSB2aWEgJ2xhYmVscycgaW4gdGhlIG9wdGlvbnMgcGFyYW1ldGVyIiksdGhpcy5hdHRyc18ubGFiZWxzPVsiWCJdLGE9MTthPGVbMF0ubGVuZ3RoO2ErKyl0aGlzLmF0dHJzXy5sYWJlbHMucHVzaCgiWSIrYSk7dGhpcy5hdHRyaWJ1dGVzXy5yZXBhcnNlU2VyaWVzKCl9ZWxzZXt2YXIgaT10aGlzLmF0dHJfKCJsYWJlbHMiKTtpZihpLmxlbmd0aCE9ZVswXS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIk1pc21hdGNoIGJldHdlZW4gbnVtYmVyIG9mIGxhYmVscyAoIitpKyIpIGFuZCBudW1iZXIgb2YgY29sdW1ucyBpbiBhcnJheSAoIitlWzBdLmxlbmd0aCsiKSIpLG51bGx9aWYodC5pc0RhdGVMaWtlKGVbMF1bMF0pKXt0aGlzLmF0dHJzXy5heGVzLngudmFsdWVGb3JtYXR0ZXI9dC5kYXRlVmFsdWVGb3JtYXR0ZXIsdGhpcy5hdHRyc18uYXhlcy54LnRpY2tlcj10LmRhdGVUaWNrZXIsdGhpcy5hdHRyc18uYXhlcy54LmF4aXNMYWJlbEZvcm1hdHRlcj10LmRhdGVBeGlzTGFiZWxGb3JtYXR0ZXI7dmFyIHI9dC5jbG9uZShlKTtmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKXtpZigwPT09clthXS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlJvdyAiKygxK2EpKyIgb2YgZGF0YSBpcyBlbXB0eSIpLG51bGw7aWYobnVsbD09PXJbYV1bMF18fCJmdW5jdGlvbiIhPXR5cGVvZiByW2FdWzBdLmdldFRpbWV8fGlzTmFOKHJbYV1bMF0uZ2V0VGltZSgpKSlyZXR1cm4gY29uc29sZS5lcnJvcigieCB2YWx1ZSBpbiByb3cgIisoMSthKSsiIGlzIG5vdCBhIERhdGUiKSxudWxsO3JbYV1bMF09clthXVswXS5nZXRUaW1lKCl9cmV0dXJuIHJ9cmV0dXJuIHRoaXMuYXR0cnNfLmF4ZXMueC52YWx1ZUZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdGhpcy5hdHRyc18uYXhlcy54LnRpY2tlcj10Lm51bWVyaWNUaWNrcyx0aGlzLmF0dHJzXy5heGVzLnguYXhpc0xhYmVsRm9ybWF0dGVyPXQubnVtYmVyQXhpc0xhYmVsRm9ybWF0dGVyLGV9LHQucHJvdG90eXBlLnBhcnNlRGF0YVRhYmxlXz1mdW5jdGlvbihlKXt2YXIgYT1mdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1K3QlMjYpO2Zvcih0PU1hdGguZmxvb3IodC8yNik7dD4wOyllPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUrKHQtMSklMjYpK2UudG9Mb3dlckNhc2UoKSx0PU1hdGguZmxvb3IoKHQtMSkvMjYpO3JldHVybiBlfSxpPWUuZ2V0TnVtYmVyT2ZDb2x1bW5zKCkscj1lLmdldE51bWJlck9mUm93cygpLG49ZS5nZXRDb2x1bW5UeXBlKDApO2lmKCJkYXRlIj09bnx8ImRhdGV0aW1lIj09bil0aGlzLmF0dHJzXy54VmFsdWVQYXJzZXI9dC5kYXRlUGFyc2VyLHRoaXMuYXR0cnNfLmF4ZXMueC52YWx1ZUZvcm1hdHRlcj10LmRhdGVWYWx1ZUZvcm1hdHRlcix0aGlzLmF0dHJzXy5heGVzLngudGlja2VyPXQuZGF0ZVRpY2tlcix0aGlzLmF0dHJzXy5heGVzLnguYXhpc0xhYmVsRm9ybWF0dGVyPXQuZGF0ZUF4aXNMYWJlbEZvcm1hdHRlcjtlbHNle2lmKCJudW1iZXIiIT1uKXJldHVybiBjb25zb2xlLmVycm9yKCJvbmx5ICdkYXRlJywgJ2RhdGV0aW1lJyBhbmQgJ251bWJlcicgdHlwZXMgYXJlIHN1cHBvcnRlZCBmb3IgY29sdW1uIDEgb2YgRGF0YVRhYmxlIGlucHV0IChHb3QgJyIrbisiJykiKSxudWxsO3RoaXMuYXR0cnNfLnhWYWx1ZVBhcnNlcj1mdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0sdGhpcy5hdHRyc18uYXhlcy54LnZhbHVlRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSx0aGlzLmF0dHJzXy5heGVzLngudGlja2VyPXQubnVtZXJpY1RpY2tzLHRoaXMuYXR0cnNfLmF4ZXMueC5heGlzTGFiZWxGb3JtYXR0ZXI9dGhpcy5hdHRyc18uYXhlcy54LnZhbHVlRm9ybWF0dGVyfXZhciBvLHMsbD1bXSxoPXt9LHA9ITE7Zm9yKG89MTtpPm87bysrKXt2YXIgZz1lLmdldENvbHVtblR5cGUobyk7aWYoIm51bWJlciI9PWcpbC5wdXNoKG8pO2Vsc2UgaWYoInN0cmluZyI9PWcmJnRoaXMuZ2V0Qm9vbGVhbk9wdGlvbigiZGlzcGxheUFubm90YXRpb25zIikpe3ZhciBkPWxbbC5sZW5ndGgtMV07aC5oYXNPd25Qcm9wZXJ0eShkKT9oW2RdLnB1c2gobyk6aFtkXT1bb10scD0hMH1lbHNlIGNvbnNvbGUuZXJyb3IoIk9ubHkgJ251bWJlcicgaXMgc3VwcG9ydGVkIGFzIGEgZGVwZW5kZW50IHR5cGUgd2l0aCBHdml6LiAnc3RyaW5nJyBpcyBvbmx5IHN1cHBvcnRlZCBpZiBkaXNwbGF5QW5ub3RhdGlvbnMgaXMgdHJ1ZSIpfXZhciB1PVtlLmdldENvbHVtbkxhYmVsKDApXTtmb3Iobz0wO288bC5sZW5ndGg7bysrKXUucHVzaChlLmdldENvbHVtbkxhYmVsKGxbb10pKSx0aGlzLmdldEJvb2xlYW5PcHRpb24oImVycm9yQmFycyIpJiYobys9MSk7dGhpcy5hdHRyc18ubGFiZWxzPXUsaT11Lmxlbmd0aDt2YXIgYz1bXSx5PSExLF89W107Zm9yKG89MDtyPm87bysrKXt2YXIgdj1bXTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0VmFsdWUobywwKSYmbnVsbCE9PWUuZ2V0VmFsdWUobywwKSl7aWYodi5wdXNoKCJkYXRlIj09bnx8ImRhdGV0aW1lIj09bj9lLmdldFZhbHVlKG8sMCkuZ2V0VGltZSgpOmUuZ2V0VmFsdWUobywwKSksdGhpcy5nZXRCb29sZWFuT3B0aW9uKCJlcnJvckJhcnMiKSlmb3Iocz0wO2ktMT5zO3MrKyl2LnB1c2goW2UuZ2V0VmFsdWUobywxKzIqcyksZS5nZXRWYWx1ZShvLDIrMipzKV0pO2Vsc2V7Zm9yKHM9MDtzPGwubGVuZ3RoO3MrKyl7dmFyIGY9bFtzXTtpZih2LnB1c2goZS5nZXRWYWx1ZShvLGYpKSxwJiZoLmhhc093blByb3BlcnR5KGYpJiZudWxsIT09ZS5nZXRWYWx1ZShvLGhbZl1bMF0pKXt2YXIgeD17fTt4LnNlcmllcz1lLmdldENvbHVtbkxhYmVsKGYpLHgueHZhbD12WzBdLHguc2hvcnRUZXh0PWEoXy5sZW5ndGgpLHgudGV4dD0iIjtmb3IodmFyIG09MDttPGhbZl0ubGVuZ3RoO20rKyltJiYoeC50ZXh0Kz0iXG4iKSx4LnRleHQrPWUuZ2V0VmFsdWUobyxoW2ZdW21dKTtfLnB1c2goeCl9fWZvcihzPTA7czx2Lmxlbmd0aDtzKyspaXNGaW5pdGUodltzXSl8fCh2W3NdPW51bGwpfWMubGVuZ3RoPjAmJnZbMF08Y1tjLmxlbmd0aC0xXVswXSYmKHk9ITApLGMucHVzaCh2KX1lbHNlIGNvbnNvbGUud2FybigiSWdub3Jpbmcgcm93ICIrbysiIG9mIERhdGFUYWJsZSBiZWNhdXNlIG9mIHVuZGVmaW5lZCBvciBudWxsIGZpcnN0IGNvbHVtbi4iKX15JiYoY29uc29sZS53YXJuKCJEYXRhVGFibGUgaXMgb3V0IG9mIG9yZGVyOyBvcmRlciBpdCBjb3JyZWN0bHkgdG8gc3BlZWQgbG9hZGluZy4iKSxjLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXS1lWzBdfSkpLHRoaXMucmF3RGF0YV89YyxfLmxlbmd0aD4wJiZ0aGlzLnNldEFubm90YXRpb25zKF8sITApLHRoaXMuYXR0cmlidXRlc18ucmVwYXJzZVNlcmllcygpfSx0LnByb3RvdHlwZS5jYXNjYWRlRGF0YURpZFVwZGF0ZUV2ZW50Xz1mdW5jdGlvbigpe3RoaXMuY2FzY2FkZUV2ZW50c18oImRhdGFEaWRVcGRhdGUiLHt9KX0sdC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5maWxlXztpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmKGU9ZSgpKSx0LmlzQXJyYXlMaWtlKGUpKXRoaXMucmF3RGF0YV89dGhpcy5wYXJzZUFycmF5XyhlKSx0aGlzLmNhc2NhZGVEYXRhRGlkVXBkYXRlRXZlbnRfKCksdGhpcy5wcmVkcmF3XygpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRDb2x1bW5SYW5nZSl0aGlzLnBhcnNlRGF0YVRhYmxlXyhlKSx0aGlzLmNhc2NhZGVEYXRhRGlkVXBkYXRlRXZlbnRfKCksdGhpcy5wcmVkcmF3XygpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgYT10LmRldGVjdExpbmVEZWxpbWl0ZXIoZSk7aWYoYSl0aGlzLmxvYWRlZEV2ZW50XyhlKTtlbHNle3ZhciBpO2k9d2luZG93LlhNTEh0dHBSZXF1ZXN0P25ldyBYTUxIdHRwUmVxdWVzdDpuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTt2YXIgcj10aGlzO2kub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09aS5yZWFkeVN0YXRlJiYoMjAwPT09aS5zdGF0dXN8fDA9PT1pLnN0YXR1cykmJnIubG9hZGVkRXZlbnRfKGkucmVzcG9uc2VUZXh0KX0saS5vcGVuKCJHRVQiLGUsITApLGkuc2VuZChudWxsKX19ZWxzZSBjb25zb2xlLmVycm9yKCJVbmtub3duIGRhdGEgZm9ybWF0OiAiK3R5cGVvZiBlKX0sdC5wcm90b3R5cGUudXBkYXRlT3B0aW9ucz1mdW5jdGlvbihlLGEpeyJ1bmRlZmluZWQiPT10eXBlb2YgYSYmKGE9ITEpO3ZhciBpPWUuZmlsZSxyPXQubWFwTGVnYWN5T3B0aW9uc18oZSk7InJvbGxQZXJpb2QiaW4gciYmKHRoaXMucm9sbFBlcmlvZF89ci5yb2xsUGVyaW9kKSwiZGF0ZVdpbmRvdyJpbiByJiYodGhpcy5kYXRlV2luZG93Xz1yLmRhdGVXaW5kb3csImlzWm9vbWVkSWdub3JlUHJvZ3JhbW1hdGljWm9vbSJpbiByfHwodGhpcy56b29tZWRfeF89bnVsbCE9PXIuZGF0ZVdpbmRvdykpLCJ2YWx1ZVJhbmdlImluIHImJiEoImlzWm9vbWVkSWdub3JlUHJvZ3JhbW1hdGljWm9vbSJpbiByKSYmKHRoaXMuem9vbWVkX3lfPW51bGwhPT1yLnZhbHVlUmFuZ2UpO3ZhciBuPXQuaXNQaXhlbENoYW5naW5nT3B0aW9uTGlzdCh0aGlzLmF0dHJfKCJsYWJlbHMiKSxyKTt0LnVwZGF0ZURlZXAodGhpcy51c2VyX2F0dHJzXyxyKSx0aGlzLmF0dHJpYnV0ZXNfLnJlcGFyc2VTZXJpZXMoKSxpPyh0aGlzLmNhc2NhZGVFdmVudHNfKCJkYXRhV2lsbFVwZGF0ZSIse30pLHRoaXMuZmlsZV89aSxhfHx0aGlzLnN0YXJ0XygpKTphfHwobj90aGlzLnByZWRyYXdfKCk6dGhpcy5yZW5kZXJHcmFwaF8oITEpKX0sdC5tYXBMZWdhY3lPcHRpb25zXz1mdW5jdGlvbih0KXt2YXIgZT17fTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYiZmlsZSIhPWEmJnQuaGFzT3duUHJvcGVydHkoYSkmJihlW2FdPXRbYV0pO3ZhciBpPWZ1bmN0aW9uKHQsYSxpKXtlLmF4ZXN8fChlLmF4ZXM9e30pLGUuYXhlc1t0XXx8KGUuYXhlc1t0XT17fSksZS5heGVzW3RdW2FdPWl9LHI9ZnVuY3Rpb24oYSxyLG4peyJ1bmRlZmluZWQiIT10eXBlb2YgdFthXSYmKGNvbnNvbGUud2FybigiT3B0aW9uICIrYSsiIGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgIituKyIgb3B0aW9uIGZvciB0aGUgIityKyIgYXhpcyBpbnN0ZWFkLiAoZS5nLiB7IGF4ZXMgOiB7ICIrcisiIDogeyAiK24rIiA6IC4uLiB9IH0gfSAoc2VlIGh0dHA6Ly9keWdyYXBocy5jb20vcGVyLWF4aXMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKSxpKHIsbix0W2FdKSxkZWxldGUgZVthXSl9O3JldHVybiByKCJ4VmFsdWVGb3JtYXR0ZXIiLCJ4IiwidmFsdWVGb3JtYXR0ZXIiKSxyKCJwaXhlbHNQZXJYTGFiZWwiLCJ4IiwicGl4ZWxzUGVyTGFiZWwiKSxyKCJ4QXhpc0xhYmVsRm9ybWF0dGVyIiwieCIsImF4aXNMYWJlbEZvcm1hdHRlciIpLHIoInhUaWNrZXIiLCJ4IiwidGlja2VyIikscigieVZhbHVlRm9ybWF0dGVyIiwieSIsInZhbHVlRm9ybWF0dGVyIikscigicGl4ZWxzUGVyWUxhYmVsIiwieSIsInBpeGVsc1BlckxhYmVsIikscigieUF4aXNMYWJlbEZvcm1hdHRlciIsInkiLCJheGlzTGFiZWxGb3JtYXR0ZXIiKSxyKCJ5VGlja2VyIiwieSIsInRpY2tlciIpLHIoImRyYXdYR3JpZCIsIngiLCJkcmF3R3JpZCIpLHIoImRyYXdYQXhpcyIsIngiLCJkcmF3QXhpcyIpLHIoImRyYXdZR3JpZCIsInkiLCJkcmF3R3JpZCIpLHIoImRyYXdZQXhpcyIsInkiLCJkcmF3QXhpcyIpLHIoInhBeGlzTGFiZWxXaWR0aCIsIngiLCJheGlzTGFiZWxXaWR0aCIpLHIoInlBeGlzTGFiZWxXaWR0aCIsInkiLCJheGlzTGFiZWxXaWR0aCIpLGV9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLnJlc2l6ZV9sb2NrKXt0aGlzLnJlc2l6ZV9sb2NrPSEwLG51bGw9PT10IT0obnVsbD09PWUpJiYoY29uc29sZS53YXJuKCJEeWdyYXBoLnJlc2l6ZSgpIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB6ZXJvIHBhcmFtZXRlcnMgb3IgdHdvIG5vbi1OVUxMIHBhcmFtZXRlcnMuIFByZXRlbmRpbmcgaXQgd2FzIHplcm8uIiksdD1lPW51bGwpO3ZhciBhPXRoaXMud2lkdGhfLGk9dGhpcy5oZWlnaHRfO3Q/KHRoaXMubWFpbmRpdl8uc3R5bGUud2lkdGg9dCsicHgiLHRoaXMubWFpbmRpdl8uc3R5bGUuaGVpZ2h0PWUrInB4Iix0aGlzLndpZHRoXz10LHRoaXMuaGVpZ2h0Xz1lKToodGhpcy53aWR0aF89dGhpcy5tYWluZGl2Xy5jbGllbnRXaWR0aCx0aGlzLmhlaWdodF89dGhpcy5tYWluZGl2Xy5jbGllbnRIZWlnaHQpLChhIT10aGlzLndpZHRoX3x8aSE9dGhpcy5oZWlnaHRfKSYmKHRoaXMucmVzaXplRWxlbWVudHNfKCksdGhpcy5wcmVkcmF3XygpKSx0aGlzLnJlc2l6ZV9sb2NrPSExfX0sdC5wcm90b3R5cGUuYWRqdXN0Um9sbD1mdW5jdGlvbih0KXt0aGlzLnJvbGxQZXJpb2RfPXQsdGhpcy5wcmVkcmF3XygpfSx0LnByb3RvdHlwZS52aXNpYmlsaXR5PWZ1bmN0aW9uKCl7Zm9yKHRoaXMuZ2V0T3B0aW9uKCJ2aXNpYmlsaXR5Iil8fCh0aGlzLmF0dHJzXy52aXNpYmlsaXR5PVtdKTt0aGlzLmdldE9wdGlvbigidmlzaWJpbGl0eSIpLmxlbmd0aDx0aGlzLm51bUNvbHVtbnMoKS0xOyl0aGlzLmF0dHJzXy52aXNpYmlsaXR5LnB1c2goITApO3JldHVybiB0aGlzLmdldE9wdGlvbigidmlzaWJpbGl0eSIpfSx0LnByb3RvdHlwZS5zZXRWaXNpYmlsaXR5PWZ1bmN0aW9uKHQsZSl7dmFyIGE9dGhpcy52aXNpYmlsaXR5KCk7MD50fHx0Pj1hLmxlbmd0aD9jb25zb2xlLndhcm4oImludmFsaWQgc2VyaWVzIG51bWJlciBpbiBzZXRWaXNpYmlsaXR5OiAiK3QpOihhW3RdPWUsdGhpcy5wcmVkcmF3XygpKX0sdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybnt3aWR0aDp0aGlzLndpZHRoXyxoZWlnaHQ6dGhpcy5oZWlnaHRffX0sdC5wcm90b3R5cGUuc2V0QW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSxhKXtyZXR1cm4gdC5hZGRBbm5vdGF0aW9uUnVsZSgpLHRoaXMuYW5ub3RhdGlvbnNfPWUsdGhpcy5sYXlvdXRfPyh0aGlzLmxheW91dF8uc2V0QW5ub3RhdGlvbnModGhpcy5hbm5vdGF0aW9uc18pLHZvaWQoYXx8dGhpcy5wcmVkcmF3XygpKSk6dm9pZCBjb25zb2xlLndhcm4oIlRyaWVkIHRvIHNldEFubm90YXRpb25zIGJlZm9yZSBkeWdyYXBoIHdhcyByZWFkeS4gVHJ5IHNldHRpbmcgdGhlbSBpbiBhIHJlYWR5KCkgYmxvY2suIFNlZSBkeWdyYXBocy5jb20vdGVzdHMvYW5ub3RhdGlvbi5odG1sIil9LHQucHJvdG90eXBlLmFubm90YXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYW5ub3RhdGlvbnNffSx0LnByb3RvdHlwZS5nZXRMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0dHJfKCJsYWJlbHMiKTtyZXR1cm4gdD90LnNsaWNlKCk6bnVsbH0sdC5wcm90b3R5cGUuaW5kZXhGcm9tU2V0TmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRJbmRleEJ5TmFtZV9bdF19LHQucHJvdG90eXBlLnJlYWR5PWZ1bmN0aW9uKHQpe3RoaXMuaXNfaW5pdGlhbF9kcmF3Xz90aGlzLnJlYWR5Rm5zXy5wdXNoKHQpOnQuY2FsbCh0aGlzLHRoaXMpfSx0LmFkZEFubm90YXRpb25SdWxlPWZ1bmN0aW9uKCl7aWYoIXQuYWRkZWRBbm5vdGF0aW9uQ1NTKXt2YXIgZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IixhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS50eXBlPSJ0ZXh0L2NzcyIsZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChhKTtmb3IodmFyIGk9MDtpPGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDtpKyspaWYoIWRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLmRpc2FibGVkKXt2YXIgcj1kb2N1bWVudC5zdHlsZVNoZWV0c1tpXTt0cnl7aWYoci5pbnNlcnRSdWxlKXt2YXIgbj1yLmNzc1J1bGVzP3IuY3NzUnVsZXMubGVuZ3RoOjA7ci5pbnNlcnRSdWxlKCIuZHlncmFwaERlZmF1bHRBbm5vdGF0aW9uIHsgIitlKyIgfSIsbil9ZWxzZSByLmFkZFJ1bGUmJnIuYWRkUnVsZSgiLmR5Z3JhcGhEZWZhdWx0QW5ub3RhdGlvbiIsZSk7cmV0dXJuIHZvaWQodC5hZGRlZEFubm90YXRpb25DU1M9ITApfWNhdGNoKG8pe319Y29uc29sZS53YXJuKCJVbmFibGUgdG8gYWRkIGRlZmF1bHQgYW5ub3RhdGlvbiBDU1MgcnVsZTsgZGlzcGxheSBtYXkgYmUgb2ZmLiIpfX0sIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmKG1vZHVsZS5leHBvcnRzPXQpLHR9KCk7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCl7dmFyIGU9YS5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO3ZhciBpPXBhcnNlSW50KGVbMV0sMTApLHI9cGFyc2VJbnQoZVsyXSwxMCksbj1wYXJzZUludChlWzNdLDEwKTtyZXR1cm4gZVs0XT97cjppLGc6cixiOm4sYTpwYXJzZUZsb2F0KGVbNF0pfTp7cjppLGc6cixiOm59fUR5Z3JhcGguTE9HX1NDQUxFPTEwLER5Z3JhcGguTE5fVEVOPU1hdGgubG9nKER5Z3JhcGguTE9HX1NDQUxFKSxEeWdyYXBoLmxvZzEwPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9EeWdyYXBoLkxOX1RFTn0sRHlncmFwaC5ET1RURURfTElORT1bMiwyXSxEeWdyYXBoLkRBU0hFRF9MSU5FPVs3LDNdLER5Z3JhcGguRE9UX0RBU0hfTElORT1bNywyLDIsMl0sRHlncmFwaC5nZXRDb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldENvbnRleHQoIjJkIil9LER5Z3JhcGguYWRkRXZlbnQ9ZnVuY3Rpb24odCxlLGEpe3QuYWRkRXZlbnRMaXN0ZW5lcj90LmFkZEV2ZW50TGlzdGVuZXIoZSxhLCExKToodFtlK2FdPWZ1bmN0aW9uKCl7YSh3aW5kb3cuZXZlbnQpfSx0LmF0dGFjaEV2ZW50KCJvbiIrZSx0W2UrYV0pKX0sRHlncmFwaC5wcm90b3R5cGUuYWRkQW5kVHJhY2tFdmVudD1mdW5jdGlvbih0LGUsYSl7RHlncmFwaC5hZGRFdmVudCh0LGUsYSksdGhpcy5yZWdpc3RlcmVkRXZlbnRzXy5wdXNoKHtlbGVtOnQsdHlwZTplLGZuOmF9KX0sRHlncmFwaC5yZW1vdmVFdmVudD1mdW5jdGlvbih0LGUsYSl7aWYodC5yZW1vdmVFdmVudExpc3RlbmVyKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGEsITEpO2Vsc2V7dHJ5e3QuZGV0YWNoRXZlbnQoIm9uIitlLHRbZSthXSl9Y2F0Y2goaSl7fXRbZSthXT1udWxsfX0sRHlncmFwaC5wcm90b3R5cGUucmVtb3ZlVHJhY2tlZEV2ZW50c189ZnVuY3Rpb24oKXtpZih0aGlzLnJlZ2lzdGVyZWRFdmVudHNfKWZvcih2YXIgdD0wO3Q8dGhpcy5yZWdpc3RlcmVkRXZlbnRzXy5sZW5ndGg7dCsrKXt2YXIgZT10aGlzLnJlZ2lzdGVyZWRFdmVudHNfW3RdO0R5Z3JhcGgucmVtb3ZlRXZlbnQoZS5lbGVtLGUudHlwZSxlLmZuKX10aGlzLnJlZ2lzdGVyZWRFdmVudHNfPVtdfSxEeWdyYXBoLmNhbmNlbEV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PXQ/dDp3aW5kb3cuZXZlbnQsdC5zdG9wUHJvcGFnYXRpb24mJnQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCYmdC5wcmV2ZW50RGVmYXVsdCgpLHQuY2FuY2VsQnViYmxlPSEwLHQuY2FuY2VsPSEwLHQucmV0dXJuVmFsdWU9ITEsITF9LER5Z3JhcGguaHN2VG9SR0I9ZnVuY3Rpb24odCxlLGEpe3ZhciBpLHIsbjtpZigwPT09ZSlpPWEscj1hLG49YTtlbHNle3ZhciBvPU1hdGguZmxvb3IoNip0KSxzPTYqdC1vLGw9YSooMS1lKSxoPWEqKDEtZSpzKSxwPWEqKDEtZSooMS1zKSk7c3dpdGNoKG8pe2Nhc2UgMTppPWgscj1hLG49bDticmVhaztjYXNlIDI6aT1sLHI9YSxuPXA7YnJlYWs7Y2FzZSAzOmk9bCxyPWgsbj1hO2JyZWFrO2Nhc2UgNDppPXAscj1sLG49YTticmVhaztjYXNlIDU6aT1hLHI9bCxuPWg7YnJlYWs7Y2FzZSA2OmNhc2UgMDppPWEscj1wLG49bH19cmV0dXJuIGk9TWF0aC5mbG9vcigyNTUqaSsuNSkscj1NYXRoLmZsb29yKDI1NSpyKy41KSxuPU1hdGguZmxvb3IoMjU1Km4rLjUpLCJyZ2IoIitpKyIsIityKyIsIituKyIpIn0sRHlncmFwaC5maW5kUG9zPWZ1bmN0aW9uKHQpe3ZhciBlPTAsYT0wO2lmKHQub2Zmc2V0UGFyZW50KWZvcih2YXIgaT10Ozspe3ZhciByPSIwIixuPSIwIjtpZih3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSl7CnZhciBvPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCk7cj1vLmJvcmRlckxlZnR8fCIwIixuPW8uYm9yZGVyVG9wfHwiMCJ9aWYoZSs9cGFyc2VJbnQociwxMCksYSs9cGFyc2VJbnQobiwxMCksZSs9aS5vZmZzZXRMZWZ0LGErPWkub2Zmc2V0VG9wLCFpLm9mZnNldFBhcmVudClicmVhaztpPWkub2Zmc2V0UGFyZW50fWVsc2UgdC54JiYoZSs9dC54KSx0LnkmJihhKz10LnkpO2Zvcig7dCYmdCE9ZG9jdW1lbnQuYm9keTspZS09dC5zY3JvbGxMZWZ0LGEtPXQuc2Nyb2xsVG9wLHQ9dC5wYXJlbnROb2RlO3JldHVybnt4OmUseTphfX0sRHlncmFwaC5wYWdlWD1mdW5jdGlvbih0KXtpZih0LnBhZ2VYKXJldHVybiF0LnBhZ2VYfHx0LnBhZ2VYPDA/MDp0LnBhZ2VYO3ZhciBlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhPWRvY3VtZW50LmJvZHk7cmV0dXJuIHQuY2xpZW50WCsoZS5zY3JvbGxMZWZ0fHxhLnNjcm9sbExlZnQpLShlLmNsaWVudExlZnR8fDApfSxEeWdyYXBoLnBhZ2VZPWZ1bmN0aW9uKHQpe2lmKHQucGFnZVkpcmV0dXJuIXQucGFnZVl8fHQucGFnZVk8MD8wOnQucGFnZVk7dmFyIGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9ZG9jdW1lbnQuYm9keTtyZXR1cm4gdC5jbGllbnRZKyhlLnNjcm9sbFRvcHx8YS5zY3JvbGxUb3ApLShlLmNsaWVudFRvcHx8MCl9LER5Z3JhcGguZHJhZ0dldFhfPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIER5Z3JhcGgucGFnZVgodCktZS5weH0sRHlncmFwaC5kcmFnR2V0WV89ZnVuY3Rpb24odCxlKXtyZXR1cm4gRHlncmFwaC5wYWdlWSh0KS1lLnB5fSxEeWdyYXBoLmlzT0s9ZnVuY3Rpb24odCl7cmV0dXJuISF0JiYhaXNOYU4odCl9LER5Z3JhcGguaXNWYWxpZFBvaW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/bnVsbD09PXQueXZhbD8hMTpudWxsPT09dC54fHx2b2lkIDA9PT10Lng/ITE6bnVsbD09PXQueXx8dm9pZCAwPT09dC55PyExOmlzTmFOKHQueCl8fCFlJiZpc05hTih0LnkpPyExOiEwOiExfSxEeWdyYXBoLmZsb2F0Rm9ybWF0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5taW4oTWF0aC5tYXgoMSxlfHwyKSwyMSk7cmV0dXJuIE1hdGguYWJzKHQpPC4wMDEmJjAhPT10P3QudG9FeHBvbmVudGlhbChhLTEpOnQudG9QcmVjaXNpb24oYSl9LER5Z3JhcGguemVyb3BhZD1mdW5jdGlvbih0KXtyZXR1cm4gMTA+dD8iMCIrdDoiIit0fSxEeWdyYXBoLkRhdGVBY2Nlc3NvcnNMb2NhbD17Z2V0RnVsbFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0sZ2V0TW9udGg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0sZ2V0RGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCl9LGdldEhvdXJzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFNlY29uZHMoKX0sZ2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbGxpc2Vjb25kcygpfSxnZXREYXk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF5KCl9LG1ha2VEYXRlOmZ1bmN0aW9uKHQsZSxhLGkscixuLG8pe3JldHVybiBuZXcgRGF0ZSh0LGUsYSxpLHIsbixvKX19LER5Z3JhcGguRGF0ZUFjY2Vzc29yc1VUQz17Z2V0RnVsbFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0sZ2V0TW9udGg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0sZ2V0RGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCl9LGdldEhvdXJzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9LGdldE1pbnV0ZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0sZ2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbGxpc2Vjb25kcygpfSxnZXREYXk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9LG1ha2VEYXRlOmZ1bmN0aW9uKHQsZSxhLGkscixuLG8pe3JldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LGUsYSxpLHIsbixvKSl9fSxEeWdyYXBoLmhtc1N0cmluZ189ZnVuY3Rpb24odCxlLGEpe3ZhciBpPUR5Z3JhcGguemVyb3BhZCxyPWkodCkrIjoiK2koZSk7cmV0dXJuIGEmJihyKz0iOiIraShhKSkscn0sRHlncmFwaC5kYXRlU3RyaW5nXz1mdW5jdGlvbih0LGUpe3ZhciBhPUR5Z3JhcGguemVyb3BhZCxpPWU/RHlncmFwaC5EYXRlQWNjZXNzb3JzVVRDOkR5Z3JhcGguRGF0ZUFjY2Vzc29yc0xvY2FsLHI9bmV3IERhdGUodCksbj1pLmdldEZ1bGxZZWFyKHIpLG89aS5nZXRNb250aChyKSxzPWkuZ2V0RGF0ZShyKSxsPWkuZ2V0SG91cnMociksaD1pLmdldE1pbnV0ZXMocikscD1pLmdldFNlY29uZHMociksZz0iIituLGQ9YShvKzEpLHU9YShzKSxjPTM2MDAqbCs2MCpoK3AseT1nKyIvIitkKyIvIit1O3JldHVybiBjJiYoeSs9IiAiK0R5Z3JhcGguaG1zU3RyaW5nXyhsLGgscCkpLHl9LER5Z3JhcGgucm91bmRfPWZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5wb3coMTAsZSk7cmV0dXJuIE1hdGgucm91bmQodCphKS9hfSxEeWdyYXBoLmJpbmFyeVNlYXJjaD1mdW5jdGlvbih0LGUsYSxpLHIpe2lmKChudWxsPT09aXx8dm9pZCAwPT09aXx8bnVsbD09PXJ8fHZvaWQgMD09PXIpJiYoaT0wLHI9ZS5sZW5ndGgtMSksaT5yKXJldHVybi0xOyhudWxsPT09YXx8dm9pZCAwPT09YSkmJihhPTApO3ZhciBuLG89ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTAmJnQ8ZS5sZW5ndGh9LHM9cGFyc2VJbnQoKGkrcikvMiwxMCksbD1lW3NdO3JldHVybiBsPT10P3M6bD50P2E+MCYmKG49cy0xLG8obikmJmVbbl08dCk/czpEeWdyYXBoLmJpbmFyeVNlYXJjaCh0LGUsYSxpLHMtMSk6dD5sPzA+YSYmKG49cysxLG8obikmJmVbbl0+dCk/czpEeWdyYXBoLmJpbmFyeVNlYXJjaCh0LGUsYSxzKzEscik6LTF9LER5Z3JhcGguZGF0ZVBhcnNlcj1mdW5jdGlvbih0KXt2YXIgZSxhO2lmKCgtMT09dC5zZWFyY2goIi0iKXx8LTEhPXQuc2VhcmNoKCJUIil8fC0xIT10LnNlYXJjaCgiWiIpKSYmKGE9RHlncmFwaC5kYXRlU3RyVG9NaWxsaXModCksYSYmIWlzTmFOKGEpKSlyZXR1cm4gYTtpZigtMSE9dC5zZWFyY2goIi0iKSl7Zm9yKGU9dC5yZXBsYWNlKCItIiwiLyIsImciKTstMSE9ZS5zZWFyY2goIi0iKTspZT1lLnJlcGxhY2UoIi0iLCIvIik7YT1EeWdyYXBoLmRhdGVTdHJUb01pbGxpcyhlKX1lbHNlIDg9PXQubGVuZ3RoPyhlPXQuc3Vic3RyKDAsNCkrIi8iK3Quc3Vic3RyKDQsMikrIi8iK3Quc3Vic3RyKDYsMiksYT1EeWdyYXBoLmRhdGVTdHJUb01pbGxpcyhlKSk6YT1EeWdyYXBoLmRhdGVTdHJUb01pbGxpcyh0KTtyZXR1cm4oIWF8fGlzTmFOKGEpKSYmY29uc29sZS5lcnJvcigiQ291bGRuJ3QgcGFyc2UgIit0KyIgYXMgYSBkYXRlIiksYX0sRHlncmFwaC5kYXRlU3RyVG9NaWxsaXM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHQpLmdldFRpbWUoKX0sRHlncmFwaC51cGRhdGU9ZnVuY3Rpb24odCxlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGUmJm51bGwhPT1lKWZvcih2YXIgYSBpbiBlKWUuaGFzT3duUHJvcGVydHkoYSkmJih0W2FdPWVbYV0pO3JldHVybiB0fSxEeWdyYXBoLnVwZGF0ZURlZXA9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBhKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgTm9kZT90IGluc3RhbmNlb2YgTm9kZToib2JqZWN0Ij09dHlwZW9mIHQmJiJudW1iZXIiPT10eXBlb2YgdC5ub2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgZSYmbnVsbCE9PWUpZm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKG51bGw9PT1lW2ldP3RbaV09bnVsbDpEeWdyYXBoLmlzQXJyYXlMaWtlKGVbaV0pP3RbaV09ZVtpXS5zbGljZSgpOmEoZVtpXSk/dFtpXT1lW2ldOiJvYmplY3QiPT10eXBlb2YgZVtpXT8oKCJvYmplY3QiIT10eXBlb2YgdFtpXXx8bnVsbD09PXRbaV0pJiYodFtpXT17fSksRHlncmFwaC51cGRhdGVEZWVwKHRbaV0sZVtpXSkpOnRbaV09ZVtpXSk7cmV0dXJuIHR9LER5Z3JhcGguaXNBcnJheUxpa2U9ZnVuY3Rpb24odCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIm9iamVjdCIhPWUmJigiZnVuY3Rpb24iIT1lfHwiZnVuY3Rpb24iIT10eXBlb2YgdC5pdGVtKXx8bnVsbD09PXR8fCJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fDM9PT10Lm5vZGVUeXBlPyExOiEwfSxEeWdyYXBoLmlzRGF0ZUxpa2U9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQuZ2V0VGltZT8hMTohMH0sRHlncmFwaC5jbG9uZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sYT0wO2E8dC5sZW5ndGg7YSsrKWUucHVzaChEeWdyYXBoLmlzQXJyYXlMaWtlKHRbYV0pP0R5Z3JhcGguY2xvbmUodFthXSk6dFthXSk7cmV0dXJuIGV9LER5Z3JhcGguY3JlYXRlQ2FudmFzPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksZT0vTVNJRS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXdpbmRvdy5vcGVyYTtyZXR1cm4gZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBHX3ZtbENhbnZhc01hbmFnZXImJih0PUdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudCh0KSksdH0sRHlncmFwaC5nZXRDb250ZXh0UGl4ZWxSYXRpbz1mdW5jdGlvbih0KXt0cnl7dmFyIGU9d2luZG93LmRldmljZVBpeGVsUmF0aW8sYT10LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8MTtyZXR1cm4gdm9pZCAwIT09ZT9lL2E6MX1jYXRjaChpKXtyZXR1cm4gMX19LER5Z3JhcGguaXNBbmRyb2lkPWZ1bmN0aW9uKCl7cmV0dXJuL0FuZHJvaWQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LER5Z3JhcGguSXRlcmF0b3I9ZnVuY3Rpb24odCxlLGEsaSl7ZT1lfHwwLGE9YXx8dC5sZW5ndGgsdGhpcy5oYXNOZXh0PSEwLHRoaXMucGVlaz1udWxsLHRoaXMuc3RhcnRfPWUsdGhpcy5hcnJheV89dCx0aGlzLnByZWRpY2F0ZV89aSx0aGlzLmVuZF89TWF0aC5taW4odC5sZW5ndGgsZSthKSx0aGlzLm5leHRJZHhfPWUtMSx0aGlzLm5leHQoKX0sRHlncmFwaC5JdGVyYXRvci5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKCF0aGlzLmhhc05leHQpcmV0dXJuIG51bGw7Zm9yKHZhciB0PXRoaXMucGVlayxlPXRoaXMubmV4dElkeF8rMSxhPSExO2U8dGhpcy5lbmRfOyl7aWYoIXRoaXMucHJlZGljYXRlX3x8dGhpcy5wcmVkaWNhdGVfKHRoaXMuYXJyYXlfLGUpKXt0aGlzLnBlZWs9dGhpcy5hcnJheV9bZV0sYT0hMDticmVha31lKyt9cmV0dXJuIHRoaXMubmV4dElkeF89ZSxhfHwodGhpcy5oYXNOZXh0PSExLHRoaXMucGVlaz1udWxsKSx0fSxEeWdyYXBoLmNyZWF0ZUl0ZXJhdG9yPWZ1bmN0aW9uKHQsZSxhLGkpe3JldHVybiBuZXcgRHlncmFwaC5JdGVyYXRvcih0LGUsYSxpKX0sRHlncmFwaC5yZXF1ZXN0QW5pbUZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKHQpe3dpbmRvdy5zZXRUaW1lb3V0KHQsMWUzLzYwKX19KCksRHlncmFwaC5yZXBlYXRBbmRDbGVhbnVwPWZ1bmN0aW9uKHQsZSxhLGkpe3ZhciByLG49MCxvPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2lmKHQobiksMT09ZSlyZXR1cm4gdm9pZCBpKCk7dmFyIHM9ZS0xOyFmdW5jdGlvbiBsKCl7bj49ZXx8RHlncmFwaC5yZXF1ZXN0QW5pbUZyYW1lLmNhbGwod2luZG93LGZ1bmN0aW9uKCl7dmFyIGU9KG5ldyBEYXRlKS5nZXRUaW1lKCksaD1lLW87cj1uLG49TWF0aC5mbG9vcihoL2EpO3ZhciBwPW4tcixnPW4rcD5zO2d8fG4+PXM/KHQocyksaSgpKTooMCE9PXAmJnQobiksbCgpKX0pfSgpfTt2YXIgZT17YW5ub3RhdGlvbkNsaWNrSGFuZGxlcjohMCxhbm5vdGF0aW9uRGJsQ2xpY2tIYW5kbGVyOiEwLGFubm90YXRpb25Nb3VzZU91dEhhbmRsZXI6ITAsYW5ub3RhdGlvbk1vdXNlT3ZlckhhbmRsZXI6ITAsYXhpc0xhYmVsQ29sb3I6ITAsYXhpc0xpbmVDb2xvcjohMCxheGlzTGluZVdpZHRoOiEwLGNsaWNrQ2FsbGJhY2s6ITAsZHJhd0NhbGxiYWNrOiEwLGRyYXdIaWdobGlnaHRQb2ludENhbGxiYWNrOiEwLGRyYXdQb2ludHM6ITAsZHJhd1BvaW50Q2FsbGJhY2s6ITAsZHJhd1hHcmlkOiEwLGRyYXdZR3JpZDohMCxmaWxsQWxwaGE6ITAsZ3JpZExpbmVDb2xvcjohMCxncmlkTGluZVdpZHRoOiEwLGhpZGVPdmVybGF5T25Nb3VzZU91dDohMCxoaWdobGlnaHRDYWxsYmFjazohMCxoaWdobGlnaHRDaXJjbGVTaXplOiEwLGludGVyYWN0aW9uTW9kZWw6ITAsaXNab29tZWRJZ25vcmVQcm9ncmFtbWF0aWNab29tOiEwLGxhYmVsc0RpdjohMCxsYWJlbHNEaXZTdHlsZXM6ITAsbGFiZWxzRGl2V2lkdGg6ITAsbGFiZWxzS01COiEwLGxhYmVsc0tNRzI6ITAsbGFiZWxzU2VwYXJhdGVMaW5lczohMCxsYWJlbHNTaG93WmVyb1ZhbHVlczohMCxsZWdlbmQ6ITAscGFuRWRnZUZyYWN0aW9uOiEwLHBpeGVsc1BlcllMYWJlbDohMCxwb2ludENsaWNrQ2FsbGJhY2s6ITAscG9pbnRTaXplOiEwLHJhbmdlU2VsZWN0b3JQbG90RmlsbENvbG9yOiEwLHJhbmdlU2VsZWN0b3JQbG90U3Ryb2tlQ29sb3I6ITAsc2hvd0xhYmVsc09uSGlnaGxpZ2h0OiEwLHNob3dSb2xsZXI6ITAsc3Ryb2tlV2lkdGg6ITAsdW5kZXJsYXlDYWxsYmFjazohMCx1bmhpZ2hsaWdodENhbGxiYWNrOiEwLHpvb21DYWxsYmFjazohMH07RHlncmFwaC5pc1BpeGVsQ2hhbmdpbmdPcHRpb25MaXN0PWZ1bmN0aW9uKHQsYSl7dmFyIGk9e307aWYodClmb3IodmFyIHI9MTtyPHQubGVuZ3RoO3IrKylpW3Rbcl1dPSEwO3ZhciBuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkmJiFlW2FdKXJldHVybiEwO3JldHVybiExfTtmb3IodmFyIG8gaW4gYSlpZihhLmhhc093blByb3BlcnR5KG8pKWlmKCJoaWdobGlnaHRTZXJpZXNPcHRzIj09b3x8aVtvXSYmIWEuc2VyaWVzKXtpZihuKGFbb10pKXJldHVybiEwfWVsc2UgaWYoInNlcmllcyI9PW98fCJheGVzIj09byl7dmFyIHM9YVtvXTtmb3IodmFyIGwgaW4gcylpZihzLmhhc093blByb3BlcnR5KGwpJiZuKHNbbF0pKXJldHVybiEwfWVsc2UgaWYoIWVbb10pcmV0dXJuITA7cmV0dXJuITF9LER5Z3JhcGguQ2lyY2xlcz17REVGQVVMVDpmdW5jdGlvbih0LGUsYSxpLHIsbixvKXthLmJlZ2luUGF0aCgpLGEuZmlsbFN0eWxlPW4sYS5hcmMoaSxyLG8sMCwyKk1hdGguUEksITEpLGEuZmlsbCgpfX0sRHlncmFwaC5JRnJhbWVUYXJwPWZ1bmN0aW9uKCl7dGhpcy50YXJwcz1bXX0sRHlncmFwaC5JRnJhbWVUYXJwLnByb3RvdHlwZS5jb3Zlcj1mdW5jdGlvbigpe2Zvcih2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIiksZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10W2VdLGk9RHlncmFwaC5maW5kUG9zKGEpLHI9aS54LG49aS55LG89YS5vZmZzZXRXaWR0aCxzPWEub2Zmc2V0SGVpZ2h0LGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGwuc3R5bGUubGVmdD1yKyJweCIsbC5zdHlsZS50b3A9bisicHgiLGwuc3R5bGUud2lkdGg9bysicHgiLGwuc3R5bGUuaGVpZ2h0PXMrInB4IixsLnN0eWxlLnpJbmRleD05OTksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsKSx0aGlzLnRhcnBzLnB1c2gobCl9fSxEeWdyYXBoLklGcmFtZVRhcnAucHJvdG90eXBlLnVuY292ZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudGFycHMubGVuZ3RoO3QrKyl0aGlzLnRhcnBzW3RdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy50YXJwc1t0XSk7dGhpcy50YXJwcz1bXX0sRHlncmFwaC5kZXRlY3RMaW5lRGVsaW1pdGVyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10LmNoYXJBdChlKTtpZigiXHIiPT09YSlyZXR1cm4gZSsxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQoZSsxKT8iXHJcbiI6YTtpZigiXG4iPT09YSlyZXR1cm4gZSsxPHQubGVuZ3RoJiYiXHIiPT09dC5jaGFyQXQoZSsxKT8iXG5cciI6YX1yZXR1cm4gbnVsbH0sRHlncmFwaC5pc05vZGVDb250YWluZWRCeT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PT1lfHxudWxsPT09dClyZXR1cm4hMTtmb3IodmFyIGE9dDthJiZhIT09ZTspYT1hLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1lfSxEeWdyYXBoLnBvdz1mdW5jdGlvbih0LGUpe3JldHVybiAwPmU/MS9NYXRoLnBvdyh0LC1lKTpNYXRoLnBvdyh0LGUpfTt2YXIgYT0vXnJnYmE/XCgoXGR7MSwzfSksXHMqKFxkezEsM30pLFxzKihcZHsxLDN9KSg/OixccyooWzAxXSg/OlwuXGQrKT8pKT9cKSQvO0R5Z3JhcGgudG9SR0JfPWZ1bmN0aW9uKGUpe3ZhciBhPXQoZSk7aWYoYSlyZXR1cm4gYTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lLGkuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpO3ZhciByO3JldHVybiByPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCkuYmFja2dyb3VuZENvbG9yOmkuY3VycmVudFN0eWxlLmJhY2tncm91bmRDb2xvcixkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGkpLHQocil9LER5Z3JhcGguaXNDYW52YXNTdXBwb3J0ZWQ9ZnVuY3Rpb24odCl7dmFyIGU7dHJ5e2U9dHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksZS5nZXRDb250ZXh0KCIyZCIpfWNhdGNoKGEpe3ZhciBpPW5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9NU0lFIChcZFwuXGQpLykscj0tMSE9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm9wZXJhIik7cmV0dXJuIWl8fGlbMV08Nnx8cj8hMTohMH1yZXR1cm4hMH0sRHlncmFwaC5wYXJzZUZsb2F0Xz1mdW5jdGlvbih0LGUsYSl7dmFyIGk9cGFyc2VGbG9hdCh0KTtpZighaXNOYU4oaSkpcmV0dXJuIGk7aWYoL14gKiQvLnRlc3QodCkpcmV0dXJuIG51bGw7aWYoL14gKm5hbiAqJC9pLnRlc3QodCkpcmV0dXJuIDAvMDt2YXIgcj0iVW5hYmxlIHRvIHBhcnNlICciK3QrIicgYXMgYSBudW1iZXIiO3JldHVybiB2b2lkIDAhPT1hJiZ2b2lkIDAhPT1lJiYocis9IiBvbiBsaW5lICIrKDErKGV8fDApKSsiICgnIithKyInKSBvZiBDU1YuIiksY29uc29sZS5lcnJvcihyKSxudWxsfX0oKSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtEeWdyYXBoLkdWaXpDaGFydD1mdW5jdGlvbih0KXt0aGlzLmNvbnRhaW5lcj10fSxEeWdyYXBoLkdWaXpDaGFydC5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUpe3RoaXMuY29udGFpbmVyLmlubmVySFRNTD0iIiwidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuZGF0ZV9ncmFwaCYmdGhpcy5kYXRlX2dyYXBoLmRlc3Ryb3koKSx0aGlzLmRhdGVfZ3JhcGg9bmV3IER5Z3JhcGgodGhpcy5jb250YWluZXIsdCxlKX0sRHlncmFwaC5HVml6Q2hhcnQucHJvdG90eXBlLnNldFNlbGVjdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0hMTt0Lmxlbmd0aCYmKGU9dFswXS5yb3cpLHRoaXMuZGF0ZV9ncmFwaC5zZXRTZWxlY3Rpb24oZSl9LER5Z3JhcGguR1ZpekNoYXJ0LnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuZGF0ZV9ncmFwaC5nZXRTZWxlY3Rpb24oKTtpZigwPmUpcmV0dXJuIHQ7Zm9yKHZhciBhPXRoaXMuZGF0ZV9ncmFwaC5sYXlvdXRfLnBvaW50cyxpPTA7aTxhLmxlbmd0aDsrK2kpdC5wdXNoKHtyb3c6ZSxjb2x1bW46aSsxfSk7cmV0dXJuIHR9fSgpLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PTEwMDtEeWdyYXBoLkludGVyYWN0aW9uPXt9LER5Z3JhcGguSW50ZXJhY3Rpb24ubWF5YmVUcmVhdE1vdXNlT3BBc0NsaWNrPWZ1bmN0aW9uKHQsZSxhKXthLmRyYWdFbmRYPUR5Z3JhcGguZHJhZ0dldFhfKHQsYSksYS5kcmFnRW5kWT1EeWdyYXBoLmRyYWdHZXRZXyh0LGEpO3ZhciBpPU1hdGguYWJzKGEuZHJhZ0VuZFgtYS5kcmFnU3RhcnRYKSxyPU1hdGguYWJzKGEuZHJhZ0VuZFktYS5kcmFnU3RhcnRZKTsyPmkmJjI+ciYmdm9pZCAwIT09ZS5sYXN0eF8mJi0xIT1lLmxhc3R4XyYmRHlncmFwaC5JbnRlcmFjdGlvbi50cmVhdE1vdXNlT3BBc0NsaWNrKGUsdCxhKSxhLnJlZ2lvbldpZHRoPWksYS5yZWdpb25IZWlnaHQ9cn0sRHlncmFwaC5JbnRlcmFjdGlvbi5zdGFydFBhbj1mdW5jdGlvbih0LGUsYSl7dmFyIGkscjthLmlzUGFubmluZz0hMDt2YXIgbj1lLnhBeGlzUmFuZ2UoKTtpZihlLmdldE9wdGlvbkZvckF4aXMoImxvZ3NjYWxlIiwieCIpPyhhLmluaXRpYWxMZWZ0bW9zdERhdGU9RHlncmFwaC5sb2cxMChuWzBdKSxhLmRhdGVSYW5nZT1EeWdyYXBoLmxvZzEwKG5bMV0pLUR5Z3JhcGgubG9nMTAoblswXSkpOihhLmluaXRpYWxMZWZ0bW9zdERhdGU9blswXSxhLmRhdGVSYW5nZT1uWzFdLW5bMF0pLGEueFVuaXRzUGVyUGl4ZWw9YS5kYXRlUmFuZ2UvKGUucGxvdHRlcl8uYXJlYS53LTEpLGUuZ2V0TnVtZXJpY09wdGlvbigicGFuRWRnZUZyYWN0aW9uIikpe3ZhciBvPWUud2lkdGhfKmUuZ2V0TnVtZXJpY09wdGlvbigicGFuRWRnZUZyYWN0aW9uIikscz1lLnhBeGlzRXh0cmVtZXMoKSxsPWUudG9Eb21YQ29vcmQoc1swXSktbyxoPWUudG9Eb21YQ29vcmQoc1sxXSkrbyxwPWUudG9EYXRhWENvb3JkKGwpLGc9ZS50b0RhdGFYQ29vcmQoaCk7YS5ib3VuZGVkRGF0ZXM9W3AsZ107dmFyIGQ9W10sdT1lLmhlaWdodF8qZS5nZXROdW1lcmljT3B0aW9uKCJwYW5FZGdlRnJhY3Rpb24iKTtmb3IoaT0wO2k8ZS5heGVzXy5sZW5ndGg7aSsrKXtyPWUuYXhlc19baV07dmFyIGM9ci5leHRyZW1lUmFuZ2UseT1lLnRvRG9tWUNvb3JkKGNbMF0saSkrdSxfPWUudG9Eb21ZQ29vcmQoY1sxXSxpKS11LHY9ZS50b0RhdGFZQ29vcmQoeSxpKSxmPWUudG9EYXRhWUNvb3JkKF8saSk7ZFtpXT1bdixmXX1hLmJvdW5kZWRWYWx1ZXM9ZH1mb3IoYS5pczJEUGFuPSExLGEuYXhlcz1bXSxpPTA7aTxlLmF4ZXNfLmxlbmd0aDtpKyspe3I9ZS5heGVzX1tpXTt2YXIgeD17fSxtPWUueUF4aXNSYW5nZShpKSxEPWUuYXR0cmlidXRlc18uZ2V0Rm9yQXhpcygibG9nc2NhbGUiLGkpO0Q/KHguaW5pdGlhbFRvcFZhbHVlPUR5Z3JhcGgubG9nMTAobVsxXSkseC5kcmFnVmFsdWVSYW5nZT1EeWdyYXBoLmxvZzEwKG1bMV0pLUR5Z3JhcGgubG9nMTAobVswXSkpOih4LmluaXRpYWxUb3BWYWx1ZT1tWzFdLHguZHJhZ1ZhbHVlUmFuZ2U9bVsxXS1tWzBdKSx4LnVuaXRzUGVyUGl4ZWw9eC5kcmFnVmFsdWVSYW5nZS8oZS5wbG90dGVyXy5hcmVhLmgtMSksYS5heGVzLnB1c2goeCksKHIudmFsdWVXaW5kb3d8fHIudmFsdWVSYW5nZSkmJihhLmlzMkRQYW49ITApfX0sRHlncmFwaC5JbnRlcmFjdGlvbi5tb3ZlUGFuPWZ1bmN0aW9uKHQsZSxhKXthLmRyYWdFbmRYPUR5Z3JhcGguZHJhZ0dldFhfKHQsYSksYS5kcmFnRW5kWT1EeWdyYXBoLmRyYWdHZXRZXyh0LGEpO3ZhciBpPWEuaW5pdGlhbExlZnRtb3N0RGF0ZS0oYS5kcmFnRW5kWC1hLmRyYWdTdGFydFgpKmEueFVuaXRzUGVyUGl4ZWw7YS5ib3VuZGVkRGF0ZXMmJihpPU1hdGgubWF4KGksYS5ib3VuZGVkRGF0ZXNbMF0pKTt2YXIgcj1pK2EuZGF0ZVJhbmdlO2lmKGEuYm91bmRlZERhdGVzJiZyPmEuYm91bmRlZERhdGVzWzFdJiYoaS09ci1hLmJvdW5kZWREYXRlc1sxXSxyPWkrYS5kYXRlUmFuZ2UpLGUuZ2V0T3B0aW9uRm9yQXhpcygibG9nc2NhbGUiLCJ4Iik/ZS5kYXRlV2luZG93Xz1bTWF0aC5wb3coRHlncmFwaC5MT0dfU0NBTEUsaSksTWF0aC5wb3coRHlncmFwaC5MT0dfU0NBTEUscildOmUuZGF0ZVdpbmRvd189W2kscl0sYS5pczJEUGFuKWZvcih2YXIgbj1hLmRyYWdFbmRZLWEuZHJhZ1N0YXJ0WSxvPTA7bzxlLmF4ZXNfLmxlbmd0aDtvKyspe3ZhciBzPWUuYXhlc19bb10sbD1hLmF4ZXNbb10saD1uKmwudW5pdHNQZXJQaXhlbCxwPWEuYm91bmRlZFZhbHVlcz9hLmJvdW5kZWRWYWx1ZXNbb106bnVsbCxnPWwuaW5pdGlhbFRvcFZhbHVlK2g7cCYmKGc9TWF0aC5taW4oZyxwWzFdKSk7dmFyIGQ9Zy1sLmRyYWdWYWx1ZVJhbmdlO3AmJmQ8cFswXSYmKGctPWQtcFswXSxkPWctbC5kcmFnVmFsdWVSYW5nZSksZS5hdHRyaWJ1dGVzXy5nZXRGb3JBeGlzKCJsb2dzY2FsZSIsbyk/cy52YWx1ZVdpbmRvdz1bTWF0aC5wb3coRHlncmFwaC5MT0dfU0NBTEUsZCksTWF0aC5wb3coRHlncmFwaC5MT0dfU0NBTEUsZyldOnMudmFsdWVXaW5kb3c9W2QsZ119ZS5kcmF3R3JhcGhfKCExKX0sRHlncmFwaC5JbnRlcmFjdGlvbi5lbmRQYW49RHlncmFwaC5JbnRlcmFjdGlvbi5tYXliZVRyZWF0TW91c2VPcEFzQ2xpY2ssRHlncmFwaC5JbnRlcmFjdGlvbi5zdGFydFpvb209ZnVuY3Rpb24odCxlLGEpe2EuaXNab29taW5nPSEwLGEuem9vbU1vdmVkPSExfSxEeWdyYXBoLkludGVyYWN0aW9uLm1vdmVab29tPWZ1bmN0aW9uKHQsZSxhKXthLnpvb21Nb3ZlZD0hMCxhLmRyYWdFbmRYPUR5Z3JhcGguZHJhZ0dldFhfKHQsYSksYS5kcmFnRW5kWT1EeWdyYXBoLmRyYWdHZXRZXyh0LGEpO3ZhciBpPU1hdGguYWJzKGEuZHJhZ1N0YXJ0WC1hLmRyYWdFbmRYKSxyPU1hdGguYWJzKGEuZHJhZ1N0YXJ0WS1hLmRyYWdFbmRZKTthLmRyYWdEaXJlY3Rpb249ci8yPmk/RHlncmFwaC5WRVJUSUNBTDpEeWdyYXBoLkhPUklaT05UQUwsZS5kcmF3Wm9vbVJlY3RfKGEuZHJhZ0RpcmVjdGlvbixhLmRyYWdTdGFydFgsYS5kcmFnRW5kWCxhLmRyYWdTdGFydFksYS5kcmFnRW5kWSxhLnByZXZEcmFnRGlyZWN0aW9uLGEucHJldkVuZFgsYS5wcmV2RW5kWSksYS5wcmV2RW5kWD1hLmRyYWdFbmRYLGEucHJldkVuZFk9YS5kcmFnRW5kWSxhLnByZXZEcmFnRGlyZWN0aW9uPWEuZHJhZ0RpcmVjdGlvbn0sRHlncmFwaC5JbnRlcmFjdGlvbi50cmVhdE1vdXNlT3BBc0NsaWNrPWZ1bmN0aW9uKHQsZSxhKXtmb3IodmFyIGk9dC5nZXRGdW5jdGlvbk9wdGlvbigiY2xpY2tDYWxsYmFjayIpLHI9dC5nZXRGdW5jdGlvbk9wdGlvbigicG9pbnRDbGlja0NhbGxiYWNrIiksbj1udWxsLG89LTEscz1OdW1iZXIuTUFYX1ZBTFVFLGw9MDtsPHQuc2VsUG9pbnRzXy5sZW5ndGg7bCsrKXt2YXIgaD10LnNlbFBvaW50c19bbF0scD1NYXRoLnBvdyhoLmNhbnZhc3gtYS5kcmFnRW5kWCwyKStNYXRoLnBvdyhoLmNhbnZhc3ktYS5kcmFnRW5kWSwyKTshaXNOYU4ocCkmJigtMT09b3x8cz5wKSYmKHM9cCxvPWwpfXZhciBnPXQuZ2V0TnVtZXJpY09wdGlvbigiaGlnaGxpZ2h0Q2lyY2xlU2l6ZSIpKzI7aWYoZypnPj1zJiYobj10LnNlbFBvaW50c19bb10pLG4pe3ZhciBkPXtjYW5jZWxhYmxlOiEwLHBvaW50Om4sY2FudmFzeDphLmRyYWdFbmRYLGNhbnZhc3k6YS5kcmFnRW5kWX0sdT10LmNhc2NhZGVFdmVudHNfKCJwb2ludENsaWNrIixkKTtpZih1KXJldHVybjtyJiZyLmNhbGwodCxlLG4pfXZhciBkPXtjYW5jZWxhYmxlOiEwLHh2YWw6dC5sYXN0eF8scHRzOnQuc2VsUG9pbnRzXyxjYW52YXN4OmEuZHJhZ0VuZFgsY2FudmFzeTphLmRyYWdFbmRZfTt0LmNhc2NhZGVFdmVudHNfKCJjbGljayIsZCl8fGkmJmkuY2FsbCh0LGUsdC5sYXN0eF8sdC5zZWxQb2ludHNfKX0sRHlncmFwaC5JbnRlcmFjdGlvbi5lbmRab29tPWZ1bmN0aW9uKHQsZSxhKXtlLmNsZWFyWm9vbVJlY3RfKCksYS5pc1pvb21pbmc9ITEsRHlncmFwaC5JbnRlcmFjdGlvbi5tYXliZVRyZWF0TW91c2VPcEFzQ2xpY2sodCxlLGEpO3ZhciBpPWUuZ2V0QXJlYSgpO2lmKGEucmVnaW9uV2lkdGg+PTEwJiZhLmRyYWdEaXJlY3Rpb249PUR5Z3JhcGguSE9SSVpPTlRBTCl7dmFyIHI9TWF0aC5taW4oYS5kcmFnU3RhcnRYLGEuZHJhZ0VuZFgpLG49TWF0aC5tYXgoYS5kcmFnU3RhcnRYLGEuZHJhZ0VuZFgpO3I9TWF0aC5tYXgocixpLngpLG49TWF0aC5taW4obixpLngraS53KSxuPnImJmUuZG9ab29tWF8ocixuKSxhLmNhbmNlbE5leHREYmxjbGljaz0hMH1lbHNlIGlmKGEucmVnaW9uSGVpZ2h0Pj0xMCYmYS5kcmFnRGlyZWN0aW9uPT1EeWdyYXBoLlZFUlRJQ0FMKXt2YXIgbz1NYXRoLm1pbihhLmRyYWdTdGFydFksYS5kcmFnRW5kWSkscz1NYXRoLm1heChhLmRyYWdTdGFydFksYS5kcmFnRW5kWSk7bz1NYXRoLm1heChvLGkueSkscz1NYXRoLm1pbihzLGkueStpLmgpLHM+byYmZS5kb1pvb21ZXyhvLHMpLGEuY2FuY2VsTmV4dERibGNsaWNrPSEwfWEuZHJhZ1N0YXJ0WD1udWxsLGEuZHJhZ1N0YXJ0WT1udWxsfSxEeWdyYXBoLkludGVyYWN0aW9uLnN0YXJ0VG91Y2g9ZnVuY3Rpb24odCxlLGEpe3QucHJldmVudERlZmF1bHQoKSx0LnRvdWNoZXMubGVuZ3RoPjEmJihhLnN0YXJ0VGltZUZvckRvdWJsZVRhcE1zPW51bGwpO2Zvcih2YXIgaT1bXSxyPTA7cjx0LnRvdWNoZXMubGVuZ3RoO3IrKyl7dmFyIG49dC50b3VjaGVzW3JdO2kucHVzaCh7cGFnZVg6bi5wYWdlWCxwYWdlWTpuLnBhZ2VZLGRhdGFYOmUudG9EYXRhWENvb3JkKG4ucGFnZVgpLGRhdGFZOmUudG9EYXRhWUNvb3JkKG4ucGFnZVkpfSl9aWYoYS5pbml0aWFsVG91Y2hlcz1pLDE9PWkubGVuZ3RoKWEuaW5pdGlhbFBpbmNoQ2VudGVyPWlbMF0sYS50b3VjaERpcmVjdGlvbnM9e3g6ITAseTohMH07ZWxzZSBpZihpLmxlbmd0aD49Mil7YS5pbml0aWFsUGluY2hDZW50ZXI9e3BhZ2VYOi41KihpWzBdLnBhZ2VYK2lbMV0ucGFnZVgpLHBhZ2VZOi41KihpWzBdLnBhZ2VZK2lbMV0ucGFnZVkpLGRhdGFYOi41KihpWzBdLmRhdGFYK2lbMV0uZGF0YVgpLGRhdGFZOi41KihpWzBdLmRhdGFZK2lbMV0uZGF0YVkpfTt2YXIgbz0xODAvTWF0aC5QSSpNYXRoLmF0YW4yKGEuaW5pdGlhbFBpbmNoQ2VudGVyLnBhZ2VZLWlbMF0ucGFnZVksaVswXS5wYWdlWC1hLmluaXRpYWxQaW5jaENlbnRlci5wYWdlWCk7bz1NYXRoLmFicyhvKSxvPjkwJiYobz05MC1vKSxhLnRvdWNoRGlyZWN0aW9ucz17eDo2Ny41Pm8seTpvPjIyLjV9fWEuaW5pdGlhbFJhbmdlPXt4OmUueEF4aXNSYW5nZSgpLHk6ZS55QXhpc1JhbmdlKCl9fSxEeWdyYXBoLkludGVyYWN0aW9uLm1vdmVUb3VjaD1mdW5jdGlvbih0LGUsYSl7YS5zdGFydFRpbWVGb3JEb3VibGVUYXBNcz1udWxsO3ZhciBpLHI9W107Zm9yKGk9MDtpPHQudG91Y2hlcy5sZW5ndGg7aSsrKXt2YXIgbj10LnRvdWNoZXNbaV07ci5wdXNoKHtwYWdlWDpuLnBhZ2VYLHBhZ2VZOm4ucGFnZVl9KX12YXIgbyxzPWEuaW5pdGlhbFRvdWNoZXMsbD1hLmluaXRpYWxQaW5jaENlbnRlcjtvPTE9PXIubGVuZ3RoP3JbMF06e3BhZ2VYOi41KihyWzBdLnBhZ2VYK3JbMV0ucGFnZVgpLHBhZ2VZOi41KihyWzBdLnBhZ2VZK3JbMV0ucGFnZVkpfTt2YXIgaD17cGFnZVg6by5wYWdlWC1sLnBhZ2VYLHBhZ2VZOm8ucGFnZVktbC5wYWdlWX0scD1hLmluaXRpYWxSYW5nZS54WzFdLWEuaW5pdGlhbFJhbmdlLnhbMF0sZz1hLmluaXRpYWxSYW5nZS55WzBdLWEuaW5pdGlhbFJhbmdlLnlbMV07aC5kYXRhWD1oLnBhZ2VYL2UucGxvdHRlcl8uYXJlYS53KnAsaC5kYXRhWT1oLnBhZ2VZL2UucGxvdHRlcl8uYXJlYS5oKmc7dmFyIGQsdTtpZigxPT1yLmxlbmd0aClkPTEsdT0xO2Vsc2UgaWYoci5sZW5ndGg+PTIpe3ZhciBjPXNbMV0ucGFnZVgtbC5wYWdlWDtkPShyWzFdLnBhZ2VYLW8ucGFnZVgpL2M7dmFyIHk9c1sxXS5wYWdlWS1sLnBhZ2VZO3U9KHJbMV0ucGFnZVktby5wYWdlWSkveX1kPU1hdGgubWluKDgsTWF0aC5tYXgoLjEyNSxkKSksdT1NYXRoLm1pbig4LE1hdGgubWF4KC4xMjUsdSkpO3ZhciBfPSExO2lmKGEudG91Y2hEaXJlY3Rpb25zLngmJihlLmRhdGVXaW5kb3dfPVtsLmRhdGFYLWguZGF0YVgrKGEuaW5pdGlhbFJhbmdlLnhbMF0tbC5kYXRhWCkvZCxsLmRhdGFYLWguZGF0YVgrKGEuaW5pdGlhbFJhbmdlLnhbMV0tbC5kYXRhWCkvZF0sXz0hMCksYS50b3VjaERpcmVjdGlvbnMueSlmb3IoaT0wOzE+aTtpKyspe3ZhciB2PWUuYXhlc19baV0sZj1lLmF0dHJpYnV0ZXNfLmdldEZvckF4aXMoImxvZ3NjYWxlIixpKTtmfHwodi52YWx1ZVdpbmRvdz1bbC5kYXRhWS1oLmRhdGFZKyhhLmluaXRpYWxSYW5nZS55WzBdLWwuZGF0YVkpL3UsbC5kYXRhWS1oLmRhdGFZKyhhLmluaXRpYWxSYW5nZS55WzFdLWwuZGF0YVkpL3VdLF89ITApfWlmKGUuZHJhd0dyYXBoXyghMSksXyYmci5sZW5ndGg+MSYmZS5nZXRGdW5jdGlvbk9wdGlvbigiem9vbUNhbGxiYWNrIikpe3ZhciB4PWUueEF4aXNSYW5nZSgpO2UuZ2V0RnVuY3Rpb25PcHRpb24oInpvb21DYWxsYmFjayIpLmNhbGwoZSx4WzBdLHhbMV0sZS55QXhpc1JhbmdlcygpKX19LER5Z3JhcGguSW50ZXJhY3Rpb24uZW5kVG91Y2g9ZnVuY3Rpb24odCxlLGEpe2lmKDAhPT10LnRvdWNoZXMubGVuZ3RoKUR5Z3JhcGguSW50ZXJhY3Rpb24uc3RhcnRUb3VjaCh0LGUsYSk7ZWxzZSBpZigxPT10LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCl7dmFyIGk9KG5ldyBEYXRlKS5nZXRUaW1lKCkscj10LmNoYW5nZWRUb3VjaGVzWzBdO2Euc3RhcnRUaW1lRm9yRG91YmxlVGFwTXMmJmktYS5zdGFydFRpbWVGb3JEb3VibGVUYXBNczw1MDAmJmEuZG91YmxlVGFwWCYmTWF0aC5hYnMoYS5kb3VibGVUYXBYLXIuc2NyZWVuWCk8NTAmJmEuZG91YmxlVGFwWSYmTWF0aC5hYnMoYS5kb3VibGVUYXBZLXIuc2NyZWVuWSk8NTA/ZS5yZXNldFpvb20oKTooYS5zdGFydFRpbWVGb3JEb3VibGVUYXBNcz1pLGEuZG91YmxlVGFwWD1yLnNjcmVlblgsYS5kb3VibGVUYXBZPXIuc2NyZWVuWSl9fTt2YXIgZT1mdW5jdGlvbih0LGUsYSl7cmV0dXJuIGU+dD9lLXQ6dD5hP3QtYTowfSxhPWZ1bmN0aW9uKHQsYSl7dmFyIGk9RHlncmFwaC5maW5kUG9zKGEuY2FudmFzXykscj17bGVmdDppLngscmlnaHQ6aS54K2EuY2FudmFzXy5vZmZzZXRXaWR0aCx0b3A6aS55LGJvdHRvbTppLnkrYS5jYW52YXNfLm9mZnNldEhlaWdodH0sbj17eDpEeWdyYXBoLnBhZ2VYKHQpLHk6RHlncmFwaC5wYWdlWSh0KX0sbz1lKG4ueCxyLmxlZnQsci5yaWdodCkscz1lKG4ueSxyLnRvcCxyLmJvdHRvbSk7cmV0dXJuIE1hdGgubWF4KG8scyl9O0R5Z3JhcGguSW50ZXJhY3Rpb24uZGVmYXVsdE1vZGVsPXttb3VzZWRvd246ZnVuY3Rpb24oZSxpLHIpe2lmKCFlLmJ1dHRvbnx8MiE9ZS5idXR0b24pe3IuaW5pdGlhbGl6ZU1vdXNlRG93bihlLGksciksZS5hbHRLZXl8fGUuc2hpZnRLZXk/RHlncmFwaC5zdGFydFBhbihlLGkscik6RHlncmFwaC5zdGFydFpvb20oZSxpLHIpO3ZhciBuPWZ1bmN0aW9uKGUpe2lmKHIuaXNab29taW5nKXt2YXIgbj1hKGUsaSk7dD5uP0R5Z3JhcGgubW92ZVpvb20oZSxpLHIpOm51bGwhPT1yLmRyYWdFbmRYJiYoci5kcmFnRW5kWD1udWxsLHIuZHJhZ0VuZFk9bnVsbCxpLmNsZWFyWm9vbVJlY3RfKCkpfWVsc2Ugci5pc1Bhbm5pbmcmJkR5Z3JhcGgubW92ZVBhbihlLGkscil9LG89ZnVuY3Rpb24odCl7ci5pc1pvb21pbmc/bnVsbCE9PXIuZHJhZ0VuZFg/RHlncmFwaC5lbmRab29tKHQsaSxyKTpEeWdyYXBoLkludGVyYWN0aW9uLm1heWJlVHJlYXRNb3VzZU9wQXNDbGljayh0LGkscik6ci5pc1Bhbm5pbmcmJkR5Z3JhcGguZW5kUGFuKHQsaSxyKSxEeWdyYXBoLnJlbW92ZUV2ZW50KGRvY3VtZW50LCJtb3VzZW1vdmUiLG4pLER5Z3JhcGgucmVtb3ZlRXZlbnQoZG9jdW1lbnQsIm1vdXNldXAiLG8pLHIuZGVzdHJveSgpfTtpLmFkZEFuZFRyYWNrRXZlbnQoZG9jdW1lbnQsIm1vdXNlbW92ZSIsbiksaS5hZGRBbmRUcmFja0V2ZW50KGRvY3VtZW50LCJtb3VzZXVwIixvKX19LHdpbGxEZXN0cm95Q29udGV4dE15c2VsZjohMCx0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQsZSxhKXtEeWdyYXBoLkludGVyYWN0aW9uLnN0YXJ0VG91Y2godCxlLGEpfSx0b3VjaG1vdmU6ZnVuY3Rpb24odCxlLGEpe0R5Z3JhcGguSW50ZXJhY3Rpb24ubW92ZVRvdWNoKHQsZSxhKX0sdG91Y2hlbmQ6ZnVuY3Rpb24odCxlLGEpe0R5Z3JhcGguSW50ZXJhY3Rpb24uZW5kVG91Y2godCxlLGEpfSxkYmxjbGljazpmdW5jdGlvbih0LGUsYSl7aWYoYS5jYW5jZWxOZXh0RGJsY2xpY2spcmV0dXJuIHZvaWQoYS5jYW5jZWxOZXh0RGJsY2xpY2s9ITEpO3ZhciBpPXtjYW52YXN4OmEuZHJhZ0VuZFgsY2FudmFzeTphLmRyYWdFbmRZfTtlLmNhc2NhZGVFdmVudHNfKCJkYmxjbGljayIsaSl8fHQuYWx0S2V5fHx0LnNoaWZ0S2V5fHxlLnJlc2V0Wm9vbSgpfX0sRHlncmFwaC5ERUZBVUxUX0FUVFJTLmludGVyYWN0aW9uTW9kZWw9RHlncmFwaC5JbnRlcmFjdGlvbi5kZWZhdWx0TW9kZWwsRHlncmFwaC5kZWZhdWx0SW50ZXJhY3Rpb25Nb2RlbD1EeWdyYXBoLkludGVyYWN0aW9uLmRlZmF1bHRNb2RlbCxEeWdyYXBoLmVuZFpvb209RHlncmFwaC5JbnRlcmFjdGlvbi5lbmRab29tLER5Z3JhcGgubW92ZVpvb209RHlncmFwaC5JbnRlcmFjdGlvbi5tb3ZlWm9vbSxEeWdyYXBoLnN0YXJ0Wm9vbT1EeWdyYXBoLkludGVyYWN0aW9uLnN0YXJ0Wm9vbSxEeWdyYXBoLmVuZFBhbj1EeWdyYXBoLkludGVyYWN0aW9uLmVuZFBhbixEeWdyYXBoLm1vdmVQYW49RHlncmFwaC5JbnRlcmFjdGlvbi5tb3ZlUGFuLER5Z3JhcGguc3RhcnRQYW49RHlncmFwaC5JbnRlcmFjdGlvbi5zdGFydFBhbixEeWdyYXBoLkludGVyYWN0aW9uLm5vbkludGVyYWN0aXZlTW9kZWxfPXttb3VzZWRvd246ZnVuY3Rpb24odCxlLGEpe2EuaW5pdGlhbGl6ZU1vdXNlRG93bih0LGUsYSl9LG1vdXNldXA6RHlncmFwaC5JbnRlcmFjdGlvbi5tYXliZVRyZWF0TW91c2VPcEFzQ2xpY2t9LER5Z3JhcGguSW50ZXJhY3Rpb24uZHJhZ0lzUGFuSW50ZXJhY3Rpb25Nb2RlbD17bW91c2Vkb3duOmZ1bmN0aW9uKHQsZSxhKXthLmluaXRpYWxpemVNb3VzZURvd24odCxlLGEpLER5Z3JhcGguc3RhcnRQYW4odCxlLGEpfSxtb3VzZW1vdmU6ZnVuY3Rpb24odCxlLGEpe2EuaXNQYW5uaW5nJiZEeWdyYXBoLm1vdmVQYW4odCxlLGEpfSxtb3VzZXVwOmZ1bmN0aW9uKHQsZSxhKXthLmlzUGFubmluZyYmRHlncmFwaC5lbmRQYW4odCxlLGEpfX19KCksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7RHlncmFwaC5UaWNrTGlzdD12b2lkIDAsRHlncmFwaC5UaWNrZXI9dm9pZCAwLER5Z3JhcGgubnVtZXJpY0xpbmVhclRpY2tzPWZ1bmN0aW9uKHQsZSxhLGkscixuKXt2YXIgbz1mdW5jdGlvbih0KXtyZXR1cm4ibG9nc2NhbGUiPT09dD8hMTppKHQpfTtyZXR1cm4gRHlncmFwaC5udW1lcmljVGlja3ModCxlLGEsbyxyLG4pfSxEeWdyYXBoLm51bWVyaWNUaWNrcz1mdW5jdGlvbih0LGUsYSxpLHIsbil7dmFyIG8scyxsLGgscD1pKCJwaXhlbHNQZXJMYWJlbCIpLGc9W107aWYobilmb3Iobz0wO288bi5sZW5ndGg7bysrKWcucHVzaCh7djpuW29dfSk7ZWxzZXtpZihpKCJsb2dzY2FsZSIpKXtoPU1hdGguZmxvb3IoYS9wKTt2YXIgZD1EeWdyYXBoLmJpbmFyeVNlYXJjaCh0LER5Z3JhcGguUFJFRkVSUkVEX0xPR19USUNLX1ZBTFVFUywxKSx1PUR5Z3JhcGguYmluYXJ5U2VhcmNoKGUsRHlncmFwaC5QUkVGRVJSRURfTE9HX1RJQ0tfVkFMVUVTLC0xKTstMT09ZCYmKGQ9MCksLTE9PXUmJih1PUR5Z3JhcGguUFJFRkVSUkVEX0xPR19USUNLX1ZBTFVFUy5sZW5ndGgtMSk7dmFyIGM9bnVsbDtpZih1LWQ+PWgvNCl7Zm9yKHZhciB5PXU7eT49ZDt5LS0pe3ZhciBfPUR5Z3JhcGguUFJFRkVSUkVEX0xPR19USUNLX1ZBTFVFU1t5XSx2PU1hdGgubG9nKF8vdCkvTWF0aC5sb2coZS90KSphLGY9e3Y6X307bnVsbD09PWM/Yz17dGlja1ZhbHVlOl8scGl4ZWxfY29vcmQ6dn06TWF0aC5hYnModi1jLnBpeGVsX2Nvb3JkKT49cD9jPXt0aWNrVmFsdWU6XyxwaXhlbF9jb29yZDp2fTpmLmxhYmVsPSIiLGcucHVzaChmKX1nLnJldmVyc2UoKX19aWYoMD09PWcubGVuZ3RoKXt2YXIgeCxtLEQ9aSgibGFiZWxzS01HMiIpO0Q/KHg9WzEsMiw0LDgsMTYsMzIsNjQsMTI4LDI1Nl0sbT0xNik6KHg9WzEsMiw1LDEwLDIwLDUwLDEwMF0sbT0xMCk7dmFyIHcsQSxiLFQsRT1NYXRoLmNlaWwoYS9wKSxDPU1hdGguYWJzKGUtdCkvRSxMPU1hdGguZmxvb3IoTWF0aC5sb2coQykvTWF0aC5sb2cobSkpLFA9TWF0aC5wb3cobSxMKTtmb3Iocz0wO3M8eC5sZW5ndGgmJih3PVAqeFtzXSxBPU1hdGguZmxvb3IodC93KSp3LGI9TWF0aC5jZWlsKGUvdykqdyxoPU1hdGguYWJzKGItQSkvdyxUPWEvaCwhKFQ+cCkpO3MrKyk7Zm9yKEE+YiYmKHcqPS0xKSxvPTA7aD49bztvKyspbD1BK28qdyxnLnB1c2goe3Y6bH0pfX12YXIgUz1pKCJheGlzTGFiZWxGb3JtYXR0ZXIiKTtmb3Iobz0wO288Zy5sZW5ndGg7bysrKXZvaWQgMD09PWdbb10ubGFiZWwmJihnW29dLmxhYmVsPVMuY2FsbChyLGdbb10udiwwLGkscikpO3JldHVybiBnfSxEeWdyYXBoLmRhdGVUaWNrZXI9ZnVuY3Rpb24odCxlLGEsaSxyLG4pe3ZhciBvPUR5Z3JhcGgucGlja0RhdGVUaWNrR3JhbnVsYXJpdHkodCxlLGEsaSk7cmV0dXJuIG8+PTA/RHlncmFwaC5nZXREYXRlQXhpcyh0LGUsbyxpLHIpOltdfSxEeWdyYXBoLlNFQ09ORExZPTAsRHlncmFwaC5UV09fU0VDT05ETFk9MSxEeWdyYXBoLkZJVkVfU0VDT05ETFk9MixEeWdyYXBoLlRFTl9TRUNPTkRMWT0zLER5Z3JhcGguVEhJUlRZX1NFQ09ORExZPTQsRHlncmFwaC5NSU5VVEVMWT01LER5Z3JhcGguVFdPX01JTlVURUxZPTYsRHlncmFwaC5GSVZFX01JTlVURUxZPTcsRHlncmFwaC5URU5fTUlOVVRFTFk9OCxEeWdyYXBoLlRISVJUWV9NSU5VVEVMWT05LER5Z3JhcGguSE9VUkxZPTEwLER5Z3JhcGguVFdPX0hPVVJMWT0xMSxEeWdyYXBoLlNJWF9IT1VSTFk9MTIsRHlncmFwaC5EQUlMWT0xMyxEeWdyYXBoLlRXT19EQUlMWT0xNCxEeWdyYXBoLldFRUtMWT0xNSxEeWdyYXBoLk1PTlRITFk9MTYsRHlncmFwaC5RVUFSVEVSTFk9MTcsRHlncmFwaC5CSUFOTlVBTD0xOCxEeWdyYXBoLkFOTlVBTD0xOSxEeWdyYXBoLkRFQ0FEQUw9MjAsRHlncmFwaC5DRU5URU5OSUFMPTIxLER5Z3JhcGguTlVNX0dSQU5VTEFSSVRJRVM9MjIsRHlncmFwaC5EQVRFRklFTERfWT0wLER5Z3JhcGguREFURUZJRUxEX009MSxEeWdyYXBoLkRBVEVGSUVMRF9EPTIsRHlncmFwaC5EQVRFRklFTERfSEg9MyxEeWdyYXBoLkRBVEVGSUVMRF9NTT00LER5Z3JhcGguREFURUZJRUxEX1NTPTUsRHlncmFwaC5EQVRFRklFTERfTVM9NixEeWdyYXBoLk5VTV9EQVRFRklFTERTPTcsRHlncmFwaC5USUNLX1BMQUNFTUVOVD1bXSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguU0VDT05ETFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfU1Msc3RlcDoxLHNwYWNpbmc6MWUzfSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguVFdPX1NFQ09ORExZXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX1NTLHN0ZXA6MixzcGFjaW5nOjJlM30sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLkZJVkVfU0VDT05ETFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfU1Msc3RlcDo1LHNwYWNpbmc6NWUzfSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguVEVOX1NFQ09ORExZXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX1NTLHN0ZXA6MTAsc3BhY2luZzoxZTR9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5USElSVFlfU0VDT05ETFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfU1Msc3RlcDozMCxzcGFjaW5nOjNlNH0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLk1JTlVURUxZXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX01NLHN0ZXA6MSxzcGFjaW5nOjZlNH0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLlRXT19NSU5VVEVMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9NTSxzdGVwOjIsc3BhY2luZzoxMmU0fSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguRklWRV9NSU5VVEVMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9NTSxzdGVwOjUsc3BhY2luZzozZTV9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5URU5fTUlOVVRFTFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfTU0sc3RlcDoxMCxzcGFjaW5nOjZlNX0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLlRISVJUWV9NSU5VVEVMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9NTSxzdGVwOjMwLHNwYWNpbmc6MThlNX0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLkhPVVJMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9ISCxzdGVwOjEsc3BhY2luZzozNmU1fSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguVFdPX0hPVVJMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9ISCxzdGVwOjIsc3BhY2luZzo3MmU1fSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguU0lYX0hPVVJMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9ISCxzdGVwOjYsc3BhY2luZzoyMTZlNX0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLkRBSUxZXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX0Qsc3RlcDoxLHNwYWNpbmc6ODY0ZTV9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5UV09fREFJTFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfRCxzdGVwOjIsc3BhY2luZzoxNzI4ZTV9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5XRUVLTFldPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfRCxzdGVwOjcsc3BhY2luZzo2MDQ4ZTV9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5NT05USExZXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX00sc3RlcDoxLHNwYWNpbmc6MjYyOTgxNzI4MH0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLlFVQVJURVJMWV09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9NLHN0ZXA6MyxzcGFjaW5nOjIxNmU1KjM2NS4yNTI0fSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguQklBTk5VQUxdPXtkYXRlZmllbGQ6RHlncmFwaC5EQVRFRklFTERfTSxzdGVwOjYsc3BhY2luZzo0MzJlNSozNjUuMjUyNH0sRHlncmFwaC5USUNLX1BMQUNFTUVOVFtEeWdyYXBoLkFOTlVBTF09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9ZLHN0ZXA6MSxzcGFjaW5nOjg2NGU1KjM2NS4yNTI0fSxEeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW0R5Z3JhcGguREVDQURBTF09e2RhdGVmaWVsZDpEeWdyYXBoLkRBVEVGSUVMRF9ZLHN0ZXA6MTAsc3BhY2luZzozMTU1NzgwNzM2MDB9LER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5DRU5URU5OSUFMXT17ZGF0ZWZpZWxkOkR5Z3JhcGguREFURUZJRUxEX1ksc3RlcDoxMDAsc3BhY2luZzozMTU1NzgwNzM2ZTN9LER5Z3JhcGguUFJFRkVSUkVEX0xPR19USUNLX1ZBTFVFUz1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPS0zOTszOT49ZTtlKyspZm9yKHZhciBhPU1hdGgucG93KDEwLGUpLGk9MTs5Pj1pO2krKyl7dmFyIHI9YSppO3QucHVzaChyKX1yZXR1cm4gdH0oKSxEeWdyYXBoLnBpY2tEYXRlVGlja0dyYW51bGFyaXR5PWZ1bmN0aW9uKHQsZSxhLGkpe2Zvcih2YXIgcj1pKCJwaXhlbHNQZXJMYWJlbCIpLG49MDtuPER5Z3JhcGguTlVNX0dSQU5VTEFSSVRJRVM7bisrKXt2YXIgbz1EeWdyYXBoLm51bURhdGVUaWNrcyh0LGUsbik7aWYoYS9vPj1yKXJldHVybiBufXJldHVybi0xfSxEeWdyYXBoLm51bURhdGVUaWNrcz1mdW5jdGlvbih0LGUsYSl7dmFyIGk9RHlncmFwaC5USUNLX1BMQUNFTUVOVFthXS5zcGFjaW5nO3JldHVybiBNYXRoLnJvdW5kKDEqKGUtdCkvaSl9LER5Z3JhcGguZ2V0RGF0ZUF4aXM9ZnVuY3Rpb24odCxlLGEsaSxyKXt2YXIgbj1pKCJheGlzTGFiZWxGb3JtYXR0ZXIiKSxvPWkoImxhYmVsc1VUQyIpLHM9bz9EeWdyYXBoLkRhdGVBY2Nlc3NvcnNVVEM6RHlncmFwaC5EYXRlQWNjZXNzb3JzTG9jYWwsbD1EeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW2FdLmRhdGVmaWVsZCxoPUR5Z3JhcGguVElDS19QTEFDRU1FTlRbYV0uc3RlcCxwPUR5Z3JhcGguVElDS19QTEFDRU1FTlRbYV0uc3BhY2luZyxnPW5ldyBEYXRlKHQpLGQ9W107ZFtEeWdyYXBoLkRBVEVGSUVMRF9ZXT1zLmdldEZ1bGxZZWFyKGcpLGRbRHlncmFwaC5EQVRFRklFTERfTV09cy5nZXRNb250aChnKSxkW0R5Z3JhcGguREFURUZJRUxEX0RdPXMuZ2V0RGF0ZShnKSxkW0R5Z3JhcGguREFURUZJRUxEX0hIXT1zLmdldEhvdXJzKGcpLGRbRHlncmFwaC5EQVRFRklFTERfTU1dPXMuZ2V0TWludXRlcyhnKSxkW0R5Z3JhcGguREFURUZJRUxEX1NTXT1zLmdldFNlY29uZHMoZyksZFtEeWdyYXBoLkRBVEVGSUVMRF9NU109cy5nZXRNaWxsaXNlY29uZHMoZyk7dmFyIHU9ZFtsXSVoO2E9PUR5Z3JhcGguV0VFS0xZJiYodT1zLmdldERheShnKSksZFtsXS09dTtmb3IodmFyIGM9bCsxO2M8RHlncmFwaC5OVU1fREFURUZJRUxEUztjKyspZFtjXT1jPT09RHlncmFwaC5EQVRFRklFTERfRD8xOjA7dmFyIHk9W10sXz1zLm1ha2VEYXRlLmFwcGx5KG51bGwsZCksdj1fLmdldFRpbWUoKTtpZihhPD1EeWdyYXBoLkhPVVJMWSlmb3IodD52JiYodis9cCxfPW5ldyBEYXRlKHYpKTtlPj12Oyl5LnB1c2goe3Y6dixsYWJlbDpuLmNhbGwocixfLGEsaSxyKX0pLHYrPXAsXz1uZXcgRGF0ZSh2KTtlbHNlIGZvcih0PnYmJihkW2xdKz1oLF89cy5tYWtlRGF0ZS5hcHBseShudWxsLGQpLHY9Xy5nZXRUaW1lKCkpO2U+PXY7KShhPj1EeWdyYXBoLkRBSUxZfHxzLmdldEhvdXJzKF8pJWg9PT0wKSYmeS5wdXNoKHt2OnYsbGFiZWw6bi5jYWxsKHIsXyxhLGkscil9KSxkW2xdKz1oLF89cy5tYWtlRGF0ZS5hcHBseShudWxsLGQpLHY9Xy5nZXRUaW1lKCk7cmV0dXJuIHl9LER5Z3JhcGgmJkR5Z3JhcGguREVGQVVMVF9BVFRSUyYmRHlncmFwaC5ERUZBVUxUX0FUVFJTLmF4ZXMmJkR5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzLngmJkR5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzLnkmJkR5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzLnkyJiYoRHlncmFwaC5ERUZBVUxUX0FUVFJTLmF4ZXMueC50aWNrZXI9RHlncmFwaC5kYXRlVGlja2VyLER5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzLnkudGlja2VyPUR5Z3JhcGgubnVtZXJpY1RpY2tzLER5Z3JhcGguREVGQVVMVF9BVFRSUy5heGVzLnkyLnRpY2tlcj1EeWdyYXBoLm51bWVyaWNUaWNrcyl9KCksRHlncmFwaC5QbHVnaW5zPXt9LER5Z3JhcGguUGx1Z2lucy5Bbm5vdGF0aW9ucz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbigpe3RoaXMuYW5ub3RhdGlvbnNfPVtdfTtyZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQW5ub3RhdGlvbnMgUGx1Z2luIn0sdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7cmV0dXJue2NsZWFyQ2hhcnQ6dGhpcy5jbGVhckNoYXJ0LGRpZERyYXdDaGFydDp0aGlzLmRpZERyYXdDaGFydH19LHQucHJvdG90eXBlLmRldGFjaExhYmVscz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5hbm5vdGF0aW9uc18ubGVuZ3RoO3QrKyl7dmFyIGU9dGhpcy5hbm5vdGF0aW9uc19bdF07ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksdGhpcy5hbm5vdGF0aW9uc19bdF09bnVsbH10aGlzLmFubm90YXRpb25zXz1bXX0sdC5wcm90b3R5cGUuY2xlYXJDaGFydD1mdW5jdGlvbih0KXt0aGlzLmRldGFjaExhYmVscygpfSx0LnByb3RvdHlwZS5kaWREcmF3Q2hhcnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5keWdyYXBoLGE9ZS5sYXlvdXRfLmFubm90YXRlZF9wb2ludHM7aWYoYSYmMCE9PWEubGVuZ3RoKWZvcih2YXIgaT10LmNhbnZhcy5wYXJlbnROb2RlLHI9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZm9udFNpemU6ZS5nZXRPcHRpb24oImF4aXNMYWJlbEZvbnRTaXplIikrInB4Iix6SW5kZXg6MTAsb3ZlcmZsb3c6ImhpZGRlbiJ9LG49ZnVuY3Rpb24odCxhLGkpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1pLmFubm90YXRpb247bi5oYXNPd25Qcm9wZXJ0eSh0KT9uW3RdKG4saSxlLHIpOmUuZ2V0T3B0aW9uKGEpJiZlLmdldE9wdGlvbihhKShuLGksZSxyKX19LG89dC5keWdyYXBoLnBsb3R0ZXJfLmFyZWEscz17fSxsPTA7bDxhLmxlbmd0aDtsKyspe3ZhciBoPWFbbF07aWYoIShoLmNhbnZhc3g8by54fHxoLmNhbnZhc3g+by54K28ud3x8aC5jYW52YXN5PG8ueXx8aC5jYW52YXN5Pm8ueStvLmgpKXt2YXIgcD1oLmFubm90YXRpb24sZz02O3AuaGFzT3duUHJvcGVydHkoInRpY2tIZWlnaHQiKSYmKGc9cC50aWNrSGVpZ2h0KTt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IodmFyIHUgaW4gcilyLmhhc093blByb3BlcnR5KHUpJiYoZC5zdHlsZVt1XT1yW3VdKTtwLmhhc093blByb3BlcnR5KCJpY29uIil8fChkLmNsYXNzTmFtZT0iZHlncmFwaERlZmF1bHRBbm5vdGF0aW9uIikscC5oYXNPd25Qcm9wZXJ0eSgiY3NzQ2xhc3MiKSYmKGQuY2xhc3NOYW1lKz0iICIrcC5jc3NDbGFzcyk7dmFyIGM9cC5oYXNPd25Qcm9wZXJ0eSgid2lkdGgiKT9wLndpZHRoOjE2LHk9cC5oYXNPd25Qcm9wZXJ0eSgiaGVpZ2h0Iik/cC5oZWlnaHQ6MTY7aWYocC5oYXNPd25Qcm9wZXJ0eSgiaWNvbiIpKXt2YXIgXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtfLnNyYz1wLmljb24sXy53aWR0aD1jLF8uaGVpZ2h0PXksZC5hcHBlbmRDaGlsZChfKX1lbHNlIGguYW5ub3RhdGlvbi5oYXNPd25Qcm9wZXJ0eSgic2hvcnRUZXh0IikmJmQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaC5hbm5vdGF0aW9uLnNob3J0VGV4dCkpO3ZhciB2PWguY2FudmFzeC1jLzI7ZC5zdHlsZS5sZWZ0PXYrInB4Ijt2YXIgZj0wO2lmKHAuYXR0YWNoQXRCb3R0b20pe3ZhciB4PW8ueStvLmgteS1nO3Nbdl0/eC09c1t2XTpzW3ZdPTAsc1t2XSs9Zyt5LGY9eH1lbHNlIGY9aC5jYW52YXN5LXktZztkLnN0eWxlLnRvcD1mKyJweCIsZC5zdHlsZS53aWR0aD1jKyJweCIsZC5zdHlsZS5oZWlnaHQ9eSsicHgiLGQudGl0bGU9aC5hbm5vdGF0aW9uLnRleHQsZC5zdHlsZS5jb2xvcj1lLmNvbG9yc01hcF9baC5uYW1lXSxkLnN0eWxlLmJvcmRlckNvbG9yPWUuY29sb3JzTWFwX1toLm5hbWVdLHAuZGl2PWQsZS5hZGRBbmRUcmFja0V2ZW50KGQsImNsaWNrIixuKCJjbGlja0hhbmRsZXIiLCJhbm5vdGF0aW9uQ2xpY2tIYW5kbGVyIixoLHRoaXMpKSxlLmFkZEFuZFRyYWNrRXZlbnQoZCwibW91c2VvdmVyIixuKCJtb3VzZU92ZXJIYW5kbGVyIiwiYW5ub3RhdGlvbk1vdXNlT3ZlckhhbmRsZXIiLGgsdGhpcykpLGUuYWRkQW5kVHJhY2tFdmVudChkLCJtb3VzZW91dCIsbigibW91c2VPdXRIYW5kbGVyIiwiYW5ub3RhdGlvbk1vdXNlT3V0SGFuZGxlciIsaCx0aGlzKSksZS5hZGRBbmRUcmFja0V2ZW50KGQsImRibGNsaWNrIixuKCJkYmxDbGlja0hhbmRsZXIiLCJhbm5vdGF0aW9uRGJsQ2xpY2tIYW5kbGVyIixoLHRoaXMpKSxpLmFwcGVuZENoaWxkKGQpLHRoaXMuYW5ub3RhdGlvbnNfLnB1c2goZCk7dmFyIG09dC5kcmF3aW5nQ29udGV4dDtpZihtLnNhdmUoKSxtLnN0cm9rZVN0eWxlPWUuY29sb3JzTWFwX1toLm5hbWVdLG0uYmVnaW5QYXRoKCkscC5hdHRhY2hBdEJvdHRvbSl7dmFyIHg9Zit5O20ubW92ZVRvKGguY2FudmFzeCx4KSxtLmxpbmVUbyhoLmNhbnZhc3gseCtnKX1lbHNlIG0ubW92ZVRvKGguY2FudmFzeCxoLmNhbnZhc3kpLG0ubGluZVRvKGguY2FudmFzeCxoLmNhbnZhc3ktMi1nKTttLmNsb3NlUGF0aCgpLG0uc3Ryb2tlKCksbS5yZXN0b3JlKCl9fX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGV0YWNoTGFiZWxzKCl9LHR9KCksRHlncmFwaC5QbHVnaW5zLkF4ZXM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oKXt0aGlzLnhsYWJlbHNfPVtdLHRoaXMueWxhYmVsc189W119O3JldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJBeGVzIFBsdWdpbiJ9LHQucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKHQpe3JldHVybntsYXlvdXQ6dGhpcy5sYXlvdXQsY2xlYXJDaGFydDp0aGlzLmNsZWFyQ2hhcnQsd2lsbERyYXdDaGFydDp0aGlzLndpbGxEcmF3Q2hhcnR9fSx0LnByb3RvdHlwZS5sYXlvdXQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5keWdyYXBoO2lmKGUuZ2V0T3B0aW9uRm9yQXhpcygiZHJhd0F4aXMiLCJ5Iikpe3ZhciBhPWUuZ2V0T3B0aW9uRm9yQXhpcygiYXhpc0xhYmVsV2lkdGgiLCJ5IikrMiplLmdldE9wdGlvbkZvckF4aXMoImF4aXNUaWNrU2l6ZSIsInkiKTt0LnJlc2VydmVTcGFjZUxlZnQoYSl9aWYoZS5nZXRPcHRpb25Gb3JBeGlzKCJkcmF3QXhpcyIsIngiKSl7dmFyIGk7aT1lLmdldE9wdGlvbigieEF4aXNIZWlnaHQiKT9lLmdldE9wdGlvbigieEF4aXNIZWlnaHQiKTplLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbEZvbnRTaXplIiwieCIpKzIqZS5nZXRPcHRpb25Gb3JBeGlzKCJheGlzVGlja1NpemUiLCJ4IiksdC5yZXNlcnZlU3BhY2VCb3R0b20oaSl9aWYoMj09ZS5udW1BeGVzKCkpe2lmKGUuZ2V0T3B0aW9uRm9yQXhpcygiZHJhd0F4aXMiLCJ5MiIpKXt2YXIgYT1lLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbFdpZHRoIiwieTIiKSsyKmUuZ2V0T3B0aW9uRm9yQXhpcygiYXhpc1RpY2tTaXplIiwieTIiKTt0LnJlc2VydmVTcGFjZVJpZ2h0KGEpfX1lbHNlIGUubnVtQXhlcygpPjImJmUuZXJyb3IoIk9ubHkgdHdvIHktYXhlcyBhcmUgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4gKFRyeWluZyB0byB1c2UgIitlLm51bUF4ZXMoKSsiKSIpfSx0LnByb3RvdHlwZS5kZXRhY2hMYWJlbHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10W2VdO2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfX10KHRoaXMueGxhYmVsc18pLHQodGhpcy55bGFiZWxzXyksdGhpcy54bGFiZWxzXz1bXSx0aGlzLnlsYWJlbHNfPVtdfSx0LnByb3RvdHlwZS5jbGVhckNoYXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZGV0YWNoTGFiZWxzKCl9LHQucHJvdG90eXBlLndpbGxEcmF3Q2hhcnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KSsuNX1mdW5jdGlvbiBhKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLS41fXZhciBpPXQuZHlncmFwaDtpZihpLmdldE9wdGlvbkZvckF4aXMoImRyYXdBeGlzIiwieCIpfHxpLmdldE9wdGlvbkZvckF4aXMoImRyYXdBeGlzIiwieSIpfHxpLmdldE9wdGlvbkZvckF4aXMoImRyYXdBeGlzIiwieTIiKSl7dmFyIHIsbixvLHMsbCxoPXQuZHJhd2luZ0NvbnRleHQscD10LmNhbnZhcy5wYXJlbnROb2RlLGc9aS53aWR0aF8sZD1pLmhlaWdodF8sdT1mdW5jdGlvbih0KXtyZXR1cm57cG9zaXRpb246ImFic29sdXRlIixmb250U2l6ZTppLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbEZvbnRTaXplIix0KSsicHgiLHpJbmRleDoxMCxjb2xvcjppLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbENvbG9yIix0KSx3aWR0aDppLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbFdpZHRoIix0KSsicHgiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsb3ZlcmZsb3c6ImhpZGRlbiJ9fSxjPXt4OnUoIngiKSx5OnUoInkiKSx5Mjp1KCJ5MiIpfSx5PWZ1bmN0aW9uKHQsZSxhKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyPWNbInkyIj09YT8ieTIiOmVdO2Zvcih2YXIgbiBpbiByKXIuaGFzT3duUHJvcGVydHkobikmJihpLnN0eWxlW25dPXJbbl0pO3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmNsYXNzTmFtZT0iZHlncmFwaC1heGlzLWxhYmVsIGR5Z3JhcGgtYXhpcy1sYWJlbC0iK2UrKGE/IiBkeWdyYXBoLWF4aXMtbGFiZWwtIithOiIiKSxvLmlubmVySFRNTD10LGkuYXBwZW5kQ2hpbGQobyksaX07aC5zYXZlKCk7dmFyIF89aS5sYXlvdXRfLHY9dC5keWdyYXBoLnBsb3R0ZXJfLmFyZWEsZj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0T3B0aW9uRm9yQXhpcyhlLHQpfX07aWYoaS5nZXRPcHRpb25Gb3JBeGlzKCJkcmF3QXhpcyIsInkiKSl7aWYoXy55dGlja3MmJl8ueXRpY2tzLmxlbmd0aD4wKXt2YXIgeD1pLm51bUF4ZXMoKSxtPVtmKCJ5IiksZigieTIiKV07Zm9yKGw9MDtsPF8ueXRpY2tzLmxlbmd0aDtsKyspe2lmKHM9Xy55dGlja3NbbF0sImZ1bmN0aW9uIj09dHlwZW9mIHMpcmV0dXJuO249di54O3ZhciBEPTEsdz0ieTEiLEE9bVswXTsxPT1zWzBdJiYobj12Lngrdi53LEQ9LTEsdz0ieTIiLEE9bVsxXSk7dmFyIGI9QSgiYXhpc0xhYmVsRm9udFNpemUiKTtvPXYueStzWzFdKnYuaCxyPXkoc1syXSwieSIsMj09eD93Om51bGwpO3ZhciBUPW8tYi8yOzA+VCYmKFQ9MCksVCtiKzM+ZD9yLnN0eWxlLmJvdHRvbT0iMCI6ci5zdHlsZS50b3A9VCsicHgiLDA9PT1zWzBdPyhyLnN0eWxlLmxlZnQ9di54LUEoImF4aXNMYWJlbFdpZHRoIiktQSgiYXhpc1RpY2tTaXplIikrInB4IixyLnN0eWxlLnRleHRBbGlnbj0icmlnaHQiKToxPT1zWzBdJiYoci5zdHlsZS5sZWZ0PXYueCt2LncrQSgiYXhpc1RpY2tTaXplIikrInB4IixyLnN0eWxlLnRleHRBbGlnbj0ibGVmdCIpLHIuc3R5bGUud2lkdGg9QSgiYXhpc0xhYmVsV2lkdGgiKSsicHgiLHAuYXBwZW5kQ2hpbGQociksdGhpcy55bGFiZWxzXy5wdXNoKHIpfXZhciBFPXRoaXMueWxhYmVsc19bMF0sYj1pLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbEZvbnRTaXplIiwieSIpLEM9cGFyc2VJbnQoRS5zdHlsZS50b3AsMTApK2I7Qz5kLWImJihFLnN0eWxlLnRvcD1wYXJzZUludChFLnN0eWxlLnRvcCwxMCktYi8yKyJweCIpfXZhciBMO2lmKGkuZ2V0T3B0aW9uKCJkcmF3QXhlc0F0WmVybyIpKXt2YXIgUD1pLnRvUGVyY2VudFhDb29yZCgwKTsoUD4xfHwwPlB8fGlzTmFOKFApKSYmKFA9MCksTD1lKHYueCtQKnYudyl9ZWxzZSBMPWUodi54KTtoLnN0cm9rZVN0eWxlPWkuZ2V0T3B0aW9uRm9yQXhpcygiYXhpc0xpbmVDb2xvciIsInkiKSxoLmxpbmVXaWR0aD1pLmdldE9wdGlvbkZvckF4aXMoImF4aXNMaW5lV2lkdGgiLCJ5IiksaC5iZWdpblBhdGgoKSxoLm1vdmVUbyhMLGEodi55KSksaC5saW5lVG8oTCxhKHYueSt2LmgpKSxoLmNsb3NlUGF0aCgpLGguc3Ryb2tlKCksMj09aS5udW1BeGVzKCkmJihoLnN0cm9rZVN0eWxlPWkuZ2V0T3B0aW9uRm9yQXhpcygiYXhpc0xpbmVDb2xvciIsInkyIiksaC5saW5lV2lkdGg9aS5nZXRPcHRpb25Gb3JBeGlzKCJheGlzTGluZVdpZHRoIiwieTIiKSxoLmJlZ2luUGF0aCgpLGgubW92ZVRvKGEodi54K3YudyksYSh2LnkpKSxoLmxpbmVUbyhhKHYueCt2LncpLGEodi55K3YuaCkpLGguY2xvc2VQYXRoKCksaC5zdHJva2UoKSl9aWYoaS5nZXRPcHRpb25Gb3JBeGlzKCJkcmF3QXhpcyIsIngiKSl7aWYoXy54dGlja3Mpe3ZhciBBPWYoIngiKTtmb3IobD0wO2w8Xy54dGlja3MubGVuZ3RoO2wrKyl7cz1fLnh0aWNrc1tsXSxuPXYueCtzWzBdKnYudyxvPXYueSt2Lmgscj15KHNbMV0sIngiKSxyLnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIixyLnN0eWxlLnRvcD1vK0EoImF4aXNUaWNrU2l6ZSIpKyJweCI7dmFyIFM9bi1BKCJheGlzTGFiZWxXaWR0aCIpLzI7UytBKCJheGlzTGFiZWxXaWR0aCIpPmcmJihTPWctQSgiYXhpc0xhYmVsV2lkdGgiKSxyLnN0eWxlLnRleHRBbGlnbj0icmlnaHQiKSwwPlMmJihTPTAsci5zdHlsZS50ZXh0QWxpZ249ImxlZnQiKSxyLnN0eWxlLmxlZnQ9UysicHgiLHIuc3R5bGUud2lkdGg9QSgiYXhpc0xhYmVsV2lkdGgiKSsicHgiLApwLmFwcGVuZENoaWxkKHIpLHRoaXMueGxhYmVsc18ucHVzaChyKX19aC5zdHJva2VTdHlsZT1pLmdldE9wdGlvbkZvckF4aXMoImF4aXNMaW5lQ29sb3IiLCJ4IiksaC5saW5lV2lkdGg9aS5nZXRPcHRpb25Gb3JBeGlzKCJheGlzTGluZVdpZHRoIiwieCIpLGguYmVnaW5QYXRoKCk7dmFyIE87aWYoaS5nZXRPcHRpb24oImRyYXdBeGVzQXRaZXJvIikpe3ZhciBQPWkudG9QZXJjZW50WUNvb3JkKDAsMCk7KFA+MXx8MD5QKSYmKFA9MSksTz1hKHYueStQKnYuaCl9ZWxzZSBPPWEodi55K3YuaCk7aC5tb3ZlVG8oZSh2LngpLE8pLGgubGluZVRvKGUodi54K3YudyksTyksaC5jbG9zZVBhdGgoKSxoLnN0cm9rZSgpfWgucmVzdG9yZSgpfX0sdH0oKSxEeWdyYXBoLlBsdWdpbnMuQ2hhcnRMYWJlbHM9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oKXt0aGlzLnRpdGxlX2Rpdl89bnVsbCx0aGlzLnhsYWJlbF9kaXZfPW51bGwsdGhpcy55bGFiZWxfZGl2Xz1udWxsLHRoaXMueTJsYWJlbF9kaXZfPW51bGx9O3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNoYXJ0TGFiZWxzIFBsdWdpbiJ9LHQucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKHQpe3JldHVybntsYXlvdXQ6dGhpcy5sYXlvdXQsZGlkRHJhd0NoYXJ0OnRoaXMuZGlkRHJhd0NoYXJ0fX07dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixlLnN0eWxlLmxlZnQ9dC54KyJweCIsZS5zdHlsZS50b3A9dC55KyJweCIsZS5zdHlsZS53aWR0aD10LncrInB4IixlLnN0eWxlLmhlaWdodD10LmgrInB4IixlfTt0LnByb3RvdHlwZS5kZXRhY2hMYWJlbHNfPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVt0aGlzLnRpdGxlX2Rpdl8sdGhpcy54bGFiZWxfZGl2Xyx0aGlzLnlsYWJlbF9kaXZfLHRoaXMueTJsYWJlbF9kaXZfXSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBhPXRbZV07YSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSl9dGhpcy50aXRsZV9kaXZfPW51bGwsdGhpcy54bGFiZWxfZGl2Xz1udWxsLHRoaXMueWxhYmVsX2Rpdl89bnVsbCx0aGlzLnkybGFiZWxfZGl2Xz1udWxsfTt2YXIgYT1mdW5jdGlvbih0LGUsYSxpLHIpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uc3R5bGUucG9zaXRpb249ImFic29sdXRlIiwxPT1hP24uc3R5bGUubGVmdD0iMHB4IjpuLnN0eWxlLmxlZnQ9ZS54KyJweCIsbi5zdHlsZS50b3A9ZS55KyJweCIsbi5zdHlsZS53aWR0aD1lLncrInB4IixuLnN0eWxlLmhlaWdodD1lLmgrInB4IixuLnN0eWxlLmZvbnRTaXplPXQuZ2V0T3B0aW9uKCJ5TGFiZWxXaWR0aCIpLTIrInB4Ijt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsby5zdHlsZS53aWR0aD1lLmgrInB4IixvLnN0eWxlLmhlaWdodD1lLncrInB4IixvLnN0eWxlLnRvcD1lLmgvMi1lLncvMisicHgiLG8uc3R5bGUubGVmdD1lLncvMi1lLmgvMisicHgiLG8uc3R5bGUudGV4dEFsaWduPSJjZW50ZXIiO3ZhciBzPSJyb3RhdGUoIisoMT09YT8iLSI6IiIpKyI5MGRlZykiO28uc3R5bGUudHJhbnNmb3JtPXMsby5zdHlsZS5XZWJraXRUcmFuc2Zvcm09cyxvLnN0eWxlLk1velRyYW5zZm9ybT1zLG8uc3R5bGUuT1RyYW5zZm9ybT1zLG8uc3R5bGUubXNUcmFuc2Zvcm09cywidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZSYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPDkmJihvLnN0eWxlLmZpbHRlcj0icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249IisoMT09YT8iMyI6IjEiKSsiKSIsby5zdHlsZS5sZWZ0PSIwcHgiLG8uc3R5bGUudG9wPSIwcHgiKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbC5jbGFzc05hbWU9aSxsLmlubmVySFRNTD1yLG8uYXBwZW5kQ2hpbGQobCksbi5hcHBlbmRDaGlsZChvKSxufTtyZXR1cm4gdC5wcm90b3R5cGUubGF5b3V0PWZ1bmN0aW9uKHQpe3RoaXMuZGV0YWNoTGFiZWxzXygpO3ZhciBpPXQuZHlncmFwaCxyPXQuY2hhcnRfZGl2O2lmKGkuZ2V0T3B0aW9uKCJ0aXRsZSIpKXt2YXIgbj10LnJlc2VydmVTcGFjZVRvcChpLmdldE9wdGlvbigidGl0bGVIZWlnaHQiKSk7dGhpcy50aXRsZV9kaXZfPWUobiksdGhpcy50aXRsZV9kaXZfLnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0aGlzLnRpdGxlX2Rpdl8uc3R5bGUuZm9udFNpemU9aS5nZXRPcHRpb24oInRpdGxlSGVpZ2h0IiktOCsicHgiLHRoaXMudGl0bGVfZGl2Xy5zdHlsZS5mb250V2VpZ2h0PSJib2xkIix0aGlzLnRpdGxlX2Rpdl8uc3R5bGUuekluZGV4PTEwO3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uY2xhc3NOYW1lPSJkeWdyYXBoLWxhYmVsIGR5Z3JhcGgtdGl0bGUiLG8uaW5uZXJIVE1MPWkuZ2V0T3B0aW9uKCJ0aXRsZSIpLHRoaXMudGl0bGVfZGl2Xy5hcHBlbmRDaGlsZChvKSxyLmFwcGVuZENoaWxkKHRoaXMudGl0bGVfZGl2Xyl9aWYoaS5nZXRPcHRpb24oInhsYWJlbCIpKXt2YXIgcz10LnJlc2VydmVTcGFjZUJvdHRvbShpLmdldE9wdGlvbigieExhYmVsSGVpZ2h0IikpO3RoaXMueGxhYmVsX2Rpdl89ZShzKSx0aGlzLnhsYWJlbF9kaXZfLnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIix0aGlzLnhsYWJlbF9kaXZfLnN0eWxlLmZvbnRTaXplPWkuZ2V0T3B0aW9uKCJ4TGFiZWxIZWlnaHQiKS0yKyJweCI7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5jbGFzc05hbWU9ImR5Z3JhcGgtbGFiZWwgZHlncmFwaC14bGFiZWwiLG8uaW5uZXJIVE1MPWkuZ2V0T3B0aW9uKCJ4bGFiZWwiKSx0aGlzLnhsYWJlbF9kaXZfLmFwcGVuZENoaWxkKG8pLHIuYXBwZW5kQ2hpbGQodGhpcy54bGFiZWxfZGl2Xyl9aWYoaS5nZXRPcHRpb24oInlsYWJlbCIpKXt2YXIgbD10LnJlc2VydmVTcGFjZUxlZnQoMCk7dGhpcy55bGFiZWxfZGl2Xz1hKGksbCwxLCJkeWdyYXBoLWxhYmVsIGR5Z3JhcGgteWxhYmVsIixpLmdldE9wdGlvbigieWxhYmVsIikpLHIuYXBwZW5kQ2hpbGQodGhpcy55bGFiZWxfZGl2Xyl9aWYoaS5nZXRPcHRpb24oInkybGFiZWwiKSYmMj09aS5udW1BeGVzKCkpe3ZhciBoPXQucmVzZXJ2ZVNwYWNlUmlnaHQoMCk7dGhpcy55MmxhYmVsX2Rpdl89YShpLGgsMiwiZHlncmFwaC1sYWJlbCBkeWdyYXBoLXkybGFiZWwiLGkuZ2V0T3B0aW9uKCJ5MmxhYmVsIikpLHIuYXBwZW5kQ2hpbGQodGhpcy55MmxhYmVsX2Rpdl8pfX0sdC5wcm90b3R5cGUuZGlkRHJhd0NoYXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPXQuZHlncmFwaDt0aGlzLnRpdGxlX2Rpdl8mJih0aGlzLnRpdGxlX2Rpdl8uY2hpbGRyZW5bMF0uaW5uZXJIVE1MPWUuZ2V0T3B0aW9uKCJ0aXRsZSIpKSx0aGlzLnhsYWJlbF9kaXZfJiYodGhpcy54bGFiZWxfZGl2Xy5jaGlsZHJlblswXS5pbm5lckhUTUw9ZS5nZXRPcHRpb24oInhsYWJlbCIpKSx0aGlzLnlsYWJlbF9kaXZfJiYodGhpcy55bGFiZWxfZGl2Xy5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pbm5lckhUTUw9ZS5nZXRPcHRpb24oInlsYWJlbCIpKSx0aGlzLnkybGFiZWxfZGl2XyYmKHRoaXMueTJsYWJlbF9kaXZfLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlubmVySFRNTD1lLmdldE9wdGlvbigieTJsYWJlbCIpKX0sdC5wcm90b3R5cGUuY2xlYXJDaGFydD1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGV0YWNoTGFiZWxzXygpfSx0fSgpLER5Z3JhcGguUGx1Z2lucy5HcmlkPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKCl7fTtyZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iR3JpZGxpbmUgUGx1Z2luIn0sdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7cmV0dXJue3dpbGxEcmF3Q2hhcnQ6dGhpcy53aWxsRHJhd0NoYXJ0fX0sdC5wcm90b3R5cGUud2lsbERyYXdDaGFydD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpKy41fWZ1bmN0aW9uIGEodCl7cmV0dXJuIE1hdGgucm91bmQodCktLjV9dmFyIGkscixuLG8scz10LmR5Z3JhcGgsbD10LmRyYXdpbmdDb250ZXh0LGg9cy5sYXlvdXRfLHA9dC5keWdyYXBoLnBsb3R0ZXJfLmFyZWE7aWYocy5nZXRPcHRpb25Gb3JBeGlzKCJkcmF3R3JpZCIsInkiKSl7Zm9yKHZhciBnPVsieSIsInkyIl0sZD1bXSx1PVtdLGM9W10seT1bXSxfPVtdLG49MDtuPGcubGVuZ3RoO24rKyljW25dPXMuZ2V0T3B0aW9uRm9yQXhpcygiZHJhd0dyaWQiLGdbbl0pLGNbbl0mJihkW25dPXMuZ2V0T3B0aW9uRm9yQXhpcygiZ3JpZExpbmVDb2xvciIsZ1tuXSksdVtuXT1zLmdldE9wdGlvbkZvckF4aXMoImdyaWRMaW5lV2lkdGgiLGdbbl0pLF9bbl09cy5nZXRPcHRpb25Gb3JBeGlzKCJncmlkTGluZVBhdHRlcm4iLGdbbl0pLHlbbl09X1tuXSYmX1tuXS5sZW5ndGg+PTIpO2ZvcihvPWgueXRpY2tzLGwuc2F2ZSgpLG49MDtuPG8ubGVuZ3RoO24rKyl7dmFyIHY9b1tuXVswXTtjW3ZdJiYoeVt2XSYmbC5pbnN0YWxsUGF0dGVybihfW3ZdKSxsLnN0cm9rZVN0eWxlPWRbdl0sbC5saW5lV2lkdGg9dVt2XSxpPWUocC54KSxyPWEocC55K29bbl1bMV0qcC5oKSxsLmJlZ2luUGF0aCgpLGwubW92ZVRvKGksciksbC5saW5lVG8oaStwLncsciksbC5jbG9zZVBhdGgoKSxsLnN0cm9rZSgpLHlbdl0mJmwudW5pbnN0YWxsUGF0dGVybigpKX1sLnJlc3RvcmUoKX1pZihzLmdldE9wdGlvbkZvckF4aXMoImRyYXdHcmlkIiwieCIpKXtvPWgueHRpY2tzLGwuc2F2ZSgpO3ZhciBfPXMuZ2V0T3B0aW9uRm9yQXhpcygiZ3JpZExpbmVQYXR0ZXJuIiwieCIpLHk9XyYmXy5sZW5ndGg+PTI7Zm9yKHkmJmwuaW5zdGFsbFBhdHRlcm4oXyksbC5zdHJva2VTdHlsZT1zLmdldE9wdGlvbkZvckF4aXMoImdyaWRMaW5lQ29sb3IiLCJ4IiksbC5saW5lV2lkdGg9cy5nZXRPcHRpb25Gb3JBeGlzKCJncmlkTGluZVdpZHRoIiwieCIpLG49MDtuPG8ubGVuZ3RoO24rKylpPWUocC54K29bbl1bMF0qcC53KSxyPWEocC55K3AuaCksbC5iZWdpblBhdGgoKSxsLm1vdmVUbyhpLHIpLGwubGluZVRvKGkscC55KSxsLmNsb3NlUGF0aCgpLGwuc3Ryb2tlKCk7eSYmbC51bmluc3RhbGxQYXR0ZXJuKCksbC5yZXN0b3JlKCl9fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fSx0fSgpLER5Z3JhcGguUGx1Z2lucy5MZWdlbmQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oKXt0aGlzLmxlZ2VuZF9kaXZfPW51bGwsdGhpcy5pc19nZW5lcmF0ZWRfZGl2Xz0hMX07dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iTGVnZW5kIFBsdWdpbiJ9O3ZhciBlO3QucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKHQpe3ZhciBlLGE9dC5nZXRPcHRpb24oImxhYmVsc0RpdldpZHRoIiksaT10LmdldE9wdGlvbigibGFiZWxzRGl2Iik7aWYoaSYmbnVsbCE9PWkpZT0ic3RyaW5nIj09dHlwZW9mIGl8fGkgaW5zdGFuY2VvZiBTdHJpbmc/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSk6aTtlbHNle3ZhciByPXtwb3NpdGlvbjoiYWJzb2x1dGUiLGZvbnRTaXplOiIxNHB4Iix6SW5kZXg6MTAsd2lkdGg6YSsicHgiLHRvcDoiMHB4IixsZWZ0OnQuc2l6ZSgpLndpZHRoLWEtMisicHgiLGJhY2tncm91bmQ6IndoaXRlIixsaW5lSGVpZ2h0OiJub3JtYWwiLHRleHRBbGlnbjoibGVmdCIsb3ZlcmZsb3c6ImhpZGRlbiJ9O0R5Z3JhcGgudXBkYXRlKHIsdC5nZXRPcHRpb24oImxhYmVsc0RpdlN0eWxlcyIpKSxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuY2xhc3NOYW1lPSJkeWdyYXBoLWxlZ2VuZCI7Zm9yKHZhciBuIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShuKSl0cnl7ZS5zdHlsZVtuXT1yW25dfWNhdGNoKG8pe2NvbnNvbGUud2FybigiWW91IGFyZSB1c2luZyB1bnN1cHBvcnRlZCBjc3MgcHJvcGVydGllcyBmb3IgeW91ciBicm93c2VyIGluIGxhYmVsc0RpdlN0eWxlcyIpfXQuZ3JhcGhEaXYuYXBwZW5kQ2hpbGQoZSksdGhpcy5pc19nZW5lcmF0ZWRfZGl2Xz0hMH1yZXR1cm4gdGhpcy5sZWdlbmRfZGl2Xz1lLHRoaXMub25lX2VtX3dpZHRoXz0xMCx7c2VsZWN0OnRoaXMuc2VsZWN0LGRlc2VsZWN0OnRoaXMuZGVzZWxlY3QscHJlZHJhdzp0aGlzLnByZWRyYXcsZGlkRHJhd0NoYXJ0OnRoaXMuZGlkRHJhd0NoYXJ0fX07dmFyIGE9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2Uuc2V0QXR0cmlidXRlKCJzdHlsZSIsIm1hcmdpbjogMDsgcGFkZGluZzogMCAwIDAgMWVtOyBib3JkZXI6IDA7IiksdC5hcHBlbmRDaGlsZChlKTt2YXIgYT1lLm9mZnNldFdpZHRoO3JldHVybiB0LnJlbW92ZUNoaWxkKGUpLGF9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9O3JldHVybiB0LnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24oZSl7dmFyIGE9ZS5zZWxlY3RlZFgsaT1lLnNlbGVjdGVkUG9pbnRzLHI9ZS5zZWxlY3RlZFJvdyxuPWUuZHlncmFwaC5nZXRPcHRpb24oImxlZ2VuZCIpO2lmKCJuZXZlciI9PT1uKXJldHVybiB2b2lkKHRoaXMubGVnZW5kX2Rpdl8uc3R5bGUuZGlzcGxheT0ibm9uZSIpO2lmKCJmb2xsb3ciPT09bil7dmFyIG89ZS5keWdyYXBoLnBsb3R0ZXJfLmFyZWEscz1lLmR5Z3JhcGguZ2V0T3B0aW9uKCJsYWJlbHNEaXZXaWR0aCIpLGw9ZS5keWdyYXBoLmdldE9wdGlvbkZvckF4aXMoImF4aXNMYWJlbFdpZHRoIiwieSIpLGg9aVswXS54Km8udysyMCxwPWlbMF0ueSpvLmgtMjA7aCtzKzE+d2luZG93LnNjcm9sbFgrd2luZG93LmlubmVyV2lkdGgmJihoPWgtNDAtcy0obC1vLngpKSxlLmR5Z3JhcGguZ3JhcGhEaXYuYXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRfZGl2XyksdGhpcy5sZWdlbmRfZGl2Xy5zdHlsZS5sZWZ0PWwraCsicHgiLHRoaXMubGVnZW5kX2Rpdl8uc3R5bGUudG9wPXArInB4In12YXIgZz10LmdlbmVyYXRlTGVnZW5kSFRNTChlLmR5Z3JhcGgsYSxpLHRoaXMub25lX2VtX3dpZHRoXyxyKTt0aGlzLmxlZ2VuZF9kaXZfLmlubmVySFRNTD1nLHRoaXMubGVnZW5kX2Rpdl8uc3R5bGUuZGlzcGxheT0iIn0sdC5wcm90b3R5cGUuZGVzZWxlY3Q9ZnVuY3Rpb24oZSl7dmFyIGk9ZS5keWdyYXBoLmdldE9wdGlvbigibGVnZW5kIik7ImFsd2F5cyIhPT1pJiYodGhpcy5sZWdlbmRfZGl2Xy5zdHlsZS5kaXNwbGF5PSJub25lIik7dmFyIHI9YSh0aGlzLmxlZ2VuZF9kaXZfKTt0aGlzLm9uZV9lbV93aWR0aF89cjt2YXIgbj10LmdlbmVyYXRlTGVnZW5kSFRNTChlLmR5Z3JhcGgsdm9pZCAwLHZvaWQgMCxyLG51bGwpO3RoaXMubGVnZW5kX2Rpdl8uaW5uZXJIVE1MPW59LHQucHJvdG90eXBlLmRpZERyYXdDaGFydD1mdW5jdGlvbih0KXt0aGlzLmRlc2VsZWN0KHQpfSx0LnByb3RvdHlwZS5wcmVkcmF3PWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNfZ2VuZXJhdGVkX2Rpdl8pe3QuZHlncmFwaC5ncmFwaERpdi5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZF9kaXZfKTt2YXIgZT10LmR5Z3JhcGgucGxvdHRlcl8uYXJlYSxhPXQuZHlncmFwaC5nZXRPcHRpb24oImxhYmVsc0RpdldpZHRoIik7dGhpcy5sZWdlbmRfZGl2Xy5zdHlsZS5sZWZ0PWUueCtlLnctYS0xKyJweCIsdGhpcy5sZWdlbmRfZGl2Xy5zdHlsZS50b3A9ZS55KyJweCIsdGhpcy5sZWdlbmRfZGl2Xy5zdHlsZS53aWR0aD1hKyJweCJ9fSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sZWdlbmRfZGl2Xz1udWxsfSx0LmdlbmVyYXRlTGVnZW5kSFRNTD1mdW5jdGlvbih0LGEscixuLG8pe2lmKHQuZ2V0T3B0aW9uKCJzaG93TGFiZWxzT25IaWdobGlnaHQiKSE9PSEwKXJldHVybiIiO3ZhciBzLGwsaCxwLGcsZD10LmdldExhYmVscygpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYSl7aWYoImFsd2F5cyIhPXQuZ2V0T3B0aW9uKCJsZWdlbmQiKSlyZXR1cm4iIjtmb3IobD10LmdldE9wdGlvbigibGFiZWxzU2VwYXJhdGVMaW5lcyIpLHM9IiIsaD0xO2g8ZC5sZW5ndGg7aCsrKXt2YXIgdT10LmdldFByb3BlcnRpZXNGb3JTZXJpZXMoZFtoXSk7dS52aXNpYmxlJiYoIiIhPT1zJiYocys9bD8iPGJyLz4iOiIgIiksZz10LmdldE9wdGlvbigic3Ryb2tlUGF0dGVybiIsZFtoXSkscD1lKGcsdS5jb2xvcixuKSxzKz0iPHNwYW4gc3R5bGU9J2ZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogIit1LmNvbG9yKyI7Jz4iK3ArIiAiK2koZFtoXSkrIjwvc3Bhbj4iKX1yZXR1cm4gc312YXIgYz10Lm9wdGlvbnNWaWV3Rm9yQXhpc18oIngiKSx5PWMoInZhbHVlRm9ybWF0dGVyIik7cz15LmNhbGwodCxhLGMsZFswXSx0LG8sMCksIiIhPT1zJiYocys9IjoiKTt2YXIgXz1bXSx2PXQubnVtQXhlcygpO2ZvcihoPTA7dj5oO2grKylfW2hdPXQub3B0aW9uc1ZpZXdGb3JBeGlzXygieSIrKGg/MStoOiIiKSk7dmFyIGY9dC5nZXRPcHRpb24oImxhYmVsc1Nob3daZXJvVmFsdWVzIik7bD10LmdldE9wdGlvbigibGFiZWxzU2VwYXJhdGVMaW5lcyIpO3ZhciB4PXQuZ2V0SGlnaGxpZ2h0U2VyaWVzKCk7Zm9yKGg9MDtoPHIubGVuZ3RoO2grKyl7dmFyIG09cltoXTtpZigoMCE9PW0ueXZhbHx8ZikmJkR5Z3JhcGguaXNPSyhtLmNhbnZhc3kpKXtsJiYocys9Ijxici8+Iik7dmFyIHU9dC5nZXRQcm9wZXJ0aWVzRm9yU2VyaWVzKG0ubmFtZSksRD1fW3UuYXhpcy0xXSx3PUQoInZhbHVlRm9ybWF0dGVyIiksQT13LmNhbGwodCxtLnl2YWwsRCxtLm5hbWUsdCxvLGQuaW5kZXhPZihtLm5hbWUpKSxiPW0ubmFtZT09eD8iIGNsYXNzPSdoaWdobGlnaHQnIjoiIjtzKz0iPHNwYW4iK2IrIj4gPGI+PHNwYW4gc3R5bGU9J2NvbG9yOiAiK3UuY29sb3IrIjsnPiIraShtLm5hbWUpKyI8L3NwYW4+PC9iPjomIzE2MDsiK0ErIjwvc3Bhbj4ifX1yZXR1cm4gc30sZT1mdW5jdGlvbih0LGUsYSl7dmFyIGk9L01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF3aW5kb3cub3BlcmE7aWYoaSlyZXR1cm4iJm1kYXNoOyI7aWYoIXR8fHQubGVuZ3RoPD0xKXJldHVybic8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm90dG9tOiAuNWV4OyBwYWRkaW5nLWxlZnQ6IDFlbTsgaGVpZ2h0OiAxcHg7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAnK2UrJzsiPjwvZGl2Pic7dmFyIHIsbixvLHMsbCxoPTAscD0wLGc9W107Zm9yKHI9MDtyPD10Lmxlbmd0aDtyKyspaCs9dFtyJXQubGVuZ3RoXTtpZihsPU1hdGguZmxvb3IoYS8oaC10WzBdKSksbD4xKXtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWdbcl09dFtyXS9hO3A9Zy5sZW5ndGh9ZWxzZXtmb3IobD0xLHI9MDtyPHQubGVuZ3RoO3IrKylnW3JdPXRbcl0vaDtwPWcubGVuZ3RoKzF9dmFyIGQ9IiI7Zm9yKG49MDtsPm47bisrKWZvcihyPTA7cD5yO3IrPTIpbz1nW3IlZy5sZW5ndGhdLHM9cjx0Lmxlbmd0aD9nWyhyKzEpJWcubGVuZ3RoXTowLGQrPSc8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm90dG9tOiAuNWV4OyBtYXJnaW4tcmlnaHQ6ICcrcysiZW07IHBhZGRpbmctbGVmdDogIitvKyJlbTsgaGVpZ2h0OiAxcHg7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAiK2UrJzsiPjwvZGl2Pic7cmV0dXJuIGR9LHR9KCksRHlncmFwaC5QbHVnaW5zLlJhbmdlU2VsZWN0b3I9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oKXt0aGlzLmlzSUVfPS9NU0lFLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhd2luZG93Lm9wZXJhLHRoaXMuaGFzVG91Y2hJbnRlcmZhY2VfPSJ1bmRlZmluZWQiIT10eXBlb2YgVG91Y2hFdmVudCx0aGlzLmlzTW9iaWxlRGV2aWNlXz0vbW9iaWxlfGFuZHJvaWQvZ2kudGVzdChuYXZpZ2F0b3IuYXBwVmVyc2lvbiksdGhpcy5pbnRlcmZhY2VDcmVhdGVkXz0hMX07cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlU2VsZWN0b3IgUGx1Z2luIn0sdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZHlncmFwaF89dCx0aGlzLmlzVXNpbmdFeGNhbnZhc189dC5pc1VzaW5nRXhjYW52YXNfLHRoaXMuZ2V0T3B0aW9uXygic2hvd1JhbmdlU2VsZWN0b3IiKSYmdGhpcy5jcmVhdGVJbnRlcmZhY2VfKCkse2xheW91dDp0aGlzLnJlc2VydmVTcGFjZV8scHJlZHJhdzp0aGlzLnJlbmRlclN0YXRpY0xheWVyXyxkaWREcmF3Q2hhcnQ6dGhpcy5yZW5kZXJJbnRlcmFjdGl2ZUxheWVyX319LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmJnY2FudmFzXz1udWxsLHRoaXMuZmdjYW52YXNfPW51bGwsdGhpcy5sZWZ0Wm9vbUhhbmRsZV89bnVsbCx0aGlzLnJpZ2h0Wm9vbUhhbmRsZV89bnVsbCx0aGlzLmllUGFuT3ZlcmxheV89bnVsbH0sdC5wcm90b3R5cGUuZ2V0T3B0aW9uXz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmR5Z3JhcGhfLmdldE9wdGlvbih0LGUpfSx0LnByb3RvdHlwZS5zZXREZWZhdWx0T3B0aW9uXz1mdW5jdGlvbih0LGUpe3RoaXMuZHlncmFwaF8uYXR0cnNfW3RdPWV9LHQucHJvdG90eXBlLmNyZWF0ZUludGVyZmFjZV89ZnVuY3Rpb24oKXt0aGlzLmNyZWF0ZUNhbnZhc2VzXygpLHRoaXMuaXNVc2luZ0V4Y2FudmFzXyYmdGhpcy5jcmVhdGVJRVBhbk92ZXJsYXlfKCksdGhpcy5jcmVhdGVab29tSGFuZGxlc18oKSx0aGlzLmluaXRJbnRlcmFjdGlvbl8oKSx0aGlzLmdldE9wdGlvbl8oImFuaW1hdGVkWm9vbXMiKSYmKGNvbnNvbGUud2FybigiQW5pbWF0ZWQgem9vbXMgYW5kIHJhbmdlIHNlbGVjdG9yIGFyZSBub3QgY29tcGF0aWJsZTsgZGlzYWJsaW5nIGFuaW1hdGVkWm9vbXMuIiksdGhpcy5keWdyYXBoXy51cGRhdGVPcHRpb25zKHthbmltYXRlZFpvb21zOiExfSwhMCkpLHRoaXMuaW50ZXJmYWNlQ3JlYXRlZF89ITAsdGhpcy5hZGRUb0dyYXBoXygpfSx0LnByb3RvdHlwZS5hZGRUb0dyYXBoXz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ3JhcGhEaXZfPXRoaXMuZHlncmFwaF8uZ3JhcGhEaXY7dC5hcHBlbmRDaGlsZCh0aGlzLmJnY2FudmFzXyksdC5hcHBlbmRDaGlsZCh0aGlzLmZnY2FudmFzXyksdC5hcHBlbmRDaGlsZCh0aGlzLmxlZnRab29tSGFuZGxlXyksdC5hcHBlbmRDaGlsZCh0aGlzLnJpZ2h0Wm9vbUhhbmRsZV8pfSx0LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGhfPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ncmFwaERpdl87dC5yZW1vdmVDaGlsZCh0aGlzLmJnY2FudmFzXyksdC5yZW1vdmVDaGlsZCh0aGlzLmZnY2FudmFzXyksdC5yZW1vdmVDaGlsZCh0aGlzLmxlZnRab29tSGFuZGxlXyksdC5yZW1vdmVDaGlsZCh0aGlzLnJpZ2h0Wm9vbUhhbmRsZV8pLHRoaXMuZ3JhcGhEaXZfPW51bGx9LHQucHJvdG90eXBlLnJlc2VydmVTcGFjZV89ZnVuY3Rpb24odCl7dGhpcy5nZXRPcHRpb25fKCJzaG93UmFuZ2VTZWxlY3RvciIpJiZ0LnJlc2VydmVTcGFjZUJvdHRvbSh0aGlzLmdldE9wdGlvbl8oInJhbmdlU2VsZWN0b3JIZWlnaHQiKSs0KX0sdC5wcm90b3R5cGUucmVuZGVyU3RhdGljTGF5ZXJfPWZ1bmN0aW9uKCl7dGhpcy51cGRhdGVWaXNpYmlsaXR5XygpJiYodGhpcy5yZXNpemVfKCksdGhpcy5kcmF3U3RhdGljTGF5ZXJfKCkpfSx0LnByb3RvdHlwZS5yZW5kZXJJbnRlcmFjdGl2ZUxheWVyXz1mdW5jdGlvbigpe3RoaXMudXBkYXRlVmlzaWJpbGl0eV8oKSYmIXRoaXMuaXNDaGFuZ2luZ1JhbmdlXyYmKHRoaXMucGxhY2Vab29tSGFuZGxlc18oKSx0aGlzLmRyYXdJbnRlcmFjdGl2ZUxheWVyXygpKX0sdC5wcm90b3R5cGUudXBkYXRlVmlzaWJpbGl0eV89ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldE9wdGlvbl8oInNob3dSYW5nZVNlbGVjdG9yIik7aWYodCl0aGlzLmludGVyZmFjZUNyZWF0ZWRfP3RoaXMuZ3JhcGhEaXZfJiZ0aGlzLmdyYXBoRGl2Xy5wYXJlbnROb2RlfHx0aGlzLmFkZFRvR3JhcGhfKCk6dGhpcy5jcmVhdGVJbnRlcmZhY2VfKCk7ZWxzZSBpZih0aGlzLmdyYXBoRGl2Xyl7dGhpcy5yZW1vdmVGcm9tR3JhcGhfKCk7dmFyIGU9dGhpcy5keWdyYXBoXztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS53aWR0aF89MCxlLnJlc2l6ZSgpfSwxKX1yZXR1cm4gdH0sdC5wcm90b3R5cGUucmVzaXplXz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGEpe3ZhciBpPUR5Z3JhcGguZ2V0Q29udGV4dFBpeGVsUmF0aW8oZSk7dC5zdHlsZS50b3A9YS55KyJweCIsdC5zdHlsZS5sZWZ0PWEueCsicHgiLHQud2lkdGg9YS53KmksdC5oZWlnaHQ9YS5oKmksdC5zdHlsZS53aWR0aD1hLncrInB4Iix0LnN0eWxlLmhlaWdodD1hLmgrInB4IiwxIT1pJiZlLnNjYWxlKGksaSl9dmFyIGU9dGhpcy5keWdyYXBoXy5sYXlvdXRfLmdldFBsb3RBcmVhKCksYT0wO3RoaXMuZHlncmFwaF8uZ2V0T3B0aW9uRm9yQXhpcygiZHJhd0F4aXMiLCJ4IikmJihhPXRoaXMuZ2V0T3B0aW9uXygieEF4aXNIZWlnaHQiKXx8dGhpcy5nZXRPcHRpb25fKCJheGlzTGFiZWxGb250U2l6ZSIpKzIqdGhpcy5nZXRPcHRpb25fKCJheGlzVGlja1NpemUiKSksdGhpcy5jYW52YXNSZWN0Xz17eDplLngseTplLnkrZS5oK2ErNCx3OmUudyxoOnRoaXMuZ2V0T3B0aW9uXygicmFuZ2VTZWxlY3RvckhlaWdodCIpfSx0KHRoaXMuYmdjYW52YXNfLHRoaXMuYmdjYW52YXNfY3R4Xyx0aGlzLmNhbnZhc1JlY3RfKSx0KHRoaXMuZmdjYW52YXNfLHRoaXMuZmdjYW52YXNfY3R4Xyx0aGlzLmNhbnZhc1JlY3RfKX0sdC5wcm90b3R5cGUuY3JlYXRlQ2FudmFzZXNfPWZ1bmN0aW9uKCl7dGhpcy5iZ2NhbnZhc189RHlncmFwaC5jcmVhdGVDYW52YXMoKSx0aGlzLmJnY2FudmFzXy5jbGFzc05hbWU9ImR5Z3JhcGgtcmFuZ2VzZWwtYmdjYW52YXMiLHRoaXMuYmdjYW52YXNfLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5iZ2NhbnZhc18uc3R5bGUuekluZGV4PTksdGhpcy5iZ2NhbnZhc19jdHhfPUR5Z3JhcGguZ2V0Q29udGV4dCh0aGlzLmJnY2FudmFzXyksdGhpcy5mZ2NhbnZhc189RHlncmFwaC5jcmVhdGVDYW52YXMoKSx0aGlzLmZnY2FudmFzXy5jbGFzc05hbWU9ImR5Z3JhcGgtcmFuZ2VzZWwtZmdjYW52YXMiLHRoaXMuZmdjYW52YXNfLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5mZ2NhbnZhc18uc3R5bGUuekluZGV4PTksdGhpcy5mZ2NhbnZhc18uc3R5bGUuY3Vyc29yPSJkZWZhdWx0Iix0aGlzLmZnY2FudmFzX2N0eF89RHlncmFwaC5nZXRDb250ZXh0KHRoaXMuZmdjYW52YXNfKX0sdC5wcm90b3R5cGUuY3JlYXRlSUVQYW5PdmVybGF5Xz1mdW5jdGlvbigpe3RoaXMuaWVQYW5PdmVybGF5Xz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmllUGFuT3ZlcmxheV8uc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmllUGFuT3ZlcmxheV8uc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIsdGhpcy5pZVBhbk92ZXJsYXlfLnN0eWxlLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0wKSIsdGhpcy5pZVBhbk92ZXJsYXlfLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuaWVQYW5PdmVybGF5Xy5zdHlsZS5jdXJzb3I9Im1vdmUiLHRoaXMuZmdjYW52YXNfLmFwcGVuZENoaWxkKHRoaXMuaWVQYW5PdmVybGF5Xyl9LHQucHJvdG90eXBlLmNyZWF0ZVpvb21IYW5kbGVzXz1mdW5jdGlvbigpe3ZhciB0PW5ldyBJbWFnZTt0LmNsYXNzTmFtZT0iZHlncmFwaC1yYW5nZXNlbC16b29taGFuZGxlIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS56SW5kZXg9MTAsdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUuY3Vyc29yPSJjb2wtcmVzaXplIiwvTVNJRSA3Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPyh0LndpZHRoPTcsdC5oZWlnaHQ9MTQsdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIix0LnN0eWxlLmJvcmRlcj0iMXB4IHNvbGlkICMzMzMzMzMiKToodC53aWR0aD05LHQuaGVpZ2h0PTE2LHQuc3JjPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFrQUFBQVFDQVlBQUFERVNGVkRBQUFBQVhOU1IwSUFyczRjNlFBQUFBWmlTMGRFQU5BQXp3RFA0WjdLZWdBQUFBbHdTRmx6QUFBT3hBQUFEc1FCbFNzT0d3QUFBQWQwU1UxRkI5c0hHdzBjTXFkdDFVd0FBQUFaZEVWWWRFTnZiVzFsYm5RQVEzSmxZWFJsWkNCM2FYUm9JRWRKVFZCWGdRNFhBQUFBYUVsRVFWUW96KzNTc1JGQVFCQ0Y0WjlXSk04S0NEVndvd25sNllYc1RtQ1VzeUtHa1p6Y2w3emt6M1lMa3lwZ0FucmVGbURFcEhrSXdWT01mcGRpOUNFRU4ybkdwRmR3RDAzeUVxRHRPZ0NhdW43c3FTVERIMzJJMXBRQTJQYjlzWmVjQXhjNXIzSUFiMjFkNjg3OHhzQUFBQUFBU1VWT1JLNUNZSUk9IiksdGhpcy5pc01vYmlsZURldmljZV8mJih0LndpZHRoKj0yLHQuaGVpZ2h0Kj0yKSx0aGlzLmxlZnRab29tSGFuZGxlXz10LHRoaXMucmlnaHRab29tSGFuZGxlXz10LmNsb25lTm9kZSghMSl9LHQucHJvdG90eXBlLmluaXRJbnRlcmFjdGlvbl89ZnVuY3Rpb24oKXt2YXIgdCxlLGEsaSxyLG4sbyxzLGwsaCxwLGcsZCx1LGM9dGhpcyx5PWRvY3VtZW50LF89MCx2PW51bGwsZj0hMSx4PSExLG09IXRoaXMuaXNNb2JpbGVEZXZpY2VfJiYhdGhpcy5pc1VzaW5nRXhjYW52YXNfLEQ9bmV3IER5Z3JhcGguSUZyYW1lVGFycDt0PWZ1bmN0aW9uKHQpe3ZhciBlPWMuZHlncmFwaF8ueEF4aXNFeHRyZW1lcygpLGE9KGVbMV0tZVswXSkvYy5jYW52YXNSZWN0Xy53LGk9ZVswXSsodC5sZWZ0SGFuZGxlUG9zLWMuY2FudmFzUmVjdF8ueCkqYSxyPWVbMF0rKHQucmlnaHRIYW5kbGVQb3MtYy5jYW52YXNSZWN0Xy54KSphO3JldHVybltpLHJdfSxlPWZ1bmN0aW9uKHQpe3JldHVybiBEeWdyYXBoLmNhbmNlbEV2ZW50KHQpLGY9ITAsXz10LmNsaWVudFgsdj10LnRhcmdldD90LnRhcmdldDp0LnNyY0VsZW1lbnQsKCJtb3VzZWRvd24iPT09dC50eXBlfHwiZHJhZ3N0YXJ0Ij09PXQudHlwZSkmJihEeWdyYXBoLmFkZEV2ZW50KHksIm1vdXNlbW92ZSIsYSksRHlncmFwaC5hZGRFdmVudCh5LCJtb3VzZXVwIixpKSksYy5mZ2NhbnZhc18uc3R5bGUuY3Vyc29yPSJjb2wtcmVzaXplIixELmNvdmVyKCksITB9LGE9ZnVuY3Rpb24odCl7aWYoIWYpcmV0dXJuITE7RHlncmFwaC5jYW5jZWxFdmVudCh0KTt2YXIgZT10LmNsaWVudFgtXztpZihNYXRoLmFicyhlKTw0KXJldHVybiEwO189dC5jbGllbnRYO3ZhciBhLGk9Yy5nZXRab29tSGFuZGxlU3RhdHVzXygpO3Y9PWMubGVmdFpvb21IYW5kbGVfPyhhPWkubGVmdEhhbmRsZVBvcytlLGE9TWF0aC5taW4oYSxpLnJpZ2h0SGFuZGxlUG9zLXYud2lkdGgtMyksYT1NYXRoLm1heChhLGMuY2FudmFzUmVjdF8ueCkpOihhPWkucmlnaHRIYW5kbGVQb3MrZSxhPU1hdGgubWluKGEsYy5jYW52YXNSZWN0Xy54K2MuY2FudmFzUmVjdF8udyksYT1NYXRoLm1heChhLGkubGVmdEhhbmRsZVBvcyt2LndpZHRoKzMpKTt2YXIgbj12LndpZHRoLzI7cmV0dXJuIHYuc3R5bGUubGVmdD1hLW4rInB4IixjLmRyYXdJbnRlcmFjdGl2ZUxheWVyXygpLG0mJnIoKSwhMH0saT1mdW5jdGlvbih0KXtyZXR1cm4gZj8oZj0hMSxELnVuY292ZXIoKSxEeWdyYXBoLnJlbW92ZUV2ZW50KHksIm1vdXNlbW92ZSIsYSksRHlncmFwaC5yZW1vdmVFdmVudCh5LCJtb3VzZXVwIixpKSxjLmZnY2FudmFzXy5zdHlsZS5jdXJzb3I9ImRlZmF1bHQiLG18fHIoKSwhMCk6ITF9LHI9ZnVuY3Rpb24oKXt0cnl7dmFyIGU9Yy5nZXRab29tSGFuZGxlU3RhdHVzXygpO2lmKGMuaXNDaGFuZ2luZ1JhbmdlXz0hMCxlLmlzWm9vbWVkKXt2YXIgYT10KGUpO2MuZHlncmFwaF8uZG9ab29tWERhdGVzXyhhWzBdLGFbMV0pfWVsc2UgYy5keWdyYXBoXy5yZXNldFpvb20oKX1maW5hbGx5e2MuaXNDaGFuZ2luZ1JhbmdlXz0hMX19LG49ZnVuY3Rpb24odCl7aWYoYy5pc1VzaW5nRXhjYW52YXNfKXJldHVybiB0LnNyY0VsZW1lbnQ9PWMuaWVQYW5PdmVybGF5Xzt2YXIgZT1jLmxlZnRab29tSGFuZGxlXy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWUubGVmdCtlLndpZHRoLzI7ZT1jLnJpZ2h0Wm9vbUhhbmRsZV8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIGk9ZS5sZWZ0K2Uud2lkdGgvMjtyZXR1cm4gdC5jbGllbnRYPmEmJnQuY2xpZW50WDxpfSxvPWZ1bmN0aW9uKHQpe3JldHVybiF4JiZuKHQpJiZjLmdldFpvb21IYW5kbGVTdGF0dXNfKCkuaXNab29tZWQ/KER5Z3JhcGguY2FuY2VsRXZlbnQodCkseD0hMCxfPXQuY2xpZW50WCwibW91c2Vkb3duIj09PXQudHlwZSYmKER5Z3JhcGguYWRkRXZlbnQoeSwibW91c2Vtb3ZlIixzKSxEeWdyYXBoLmFkZEV2ZW50KHksIm1vdXNldXAiLGwpKSwhMCk6ITF9LHM9ZnVuY3Rpb24odCl7aWYoIXgpcmV0dXJuITE7RHlncmFwaC5jYW5jZWxFdmVudCh0KTt2YXIgZT10LmNsaWVudFgtXztpZihNYXRoLmFicyhlKTw0KXJldHVybiEwO189dC5jbGllbnRYO3ZhciBhPWMuZ2V0Wm9vbUhhbmRsZVN0YXR1c18oKSxpPWEubGVmdEhhbmRsZVBvcyxyPWEucmlnaHRIYW5kbGVQb3Msbj1yLWk7aStlPD1jLmNhbnZhc1JlY3RfLng/KGk9Yy5jYW52YXNSZWN0Xy54LHI9aStuKTpyK2U+PWMuY2FudmFzUmVjdF8ueCtjLmNhbnZhc1JlY3RfLnc/KHI9Yy5jYW52YXNSZWN0Xy54K2MuY2FudmFzUmVjdF8udyxpPXItbik6KGkrPWUscis9ZSk7dmFyIG89Yy5sZWZ0Wm9vbUhhbmRsZV8ud2lkdGgvMjtyZXR1cm4gYy5sZWZ0Wm9vbUhhbmRsZV8uc3R5bGUubGVmdD1pLW8rInB4IixjLnJpZ2h0Wm9vbUhhbmRsZV8uc3R5bGUubGVmdD1yLW8rInB4IixjLmRyYXdJbnRlcmFjdGl2ZUxheWVyXygpLG0mJmgoKSwhMH0sbD1mdW5jdGlvbih0KXtyZXR1cm4geD8oeD0hMSxEeWdyYXBoLnJlbW92ZUV2ZW50KHksIm1vdXNlbW92ZSIscyksRHlncmFwaC5yZW1vdmVFdmVudCh5LCJtb3VzZXVwIixsKSxtfHxoKCksITApOiExfSxoPWZ1bmN0aW9uKCl7dHJ5e2MuaXNDaGFuZ2luZ1JhbmdlXz0hMCxjLmR5Z3JhcGhfLmRhdGVXaW5kb3dfPXQoYy5nZXRab29tSGFuZGxlU3RhdHVzXygpKSxjLmR5Z3JhcGhfLmRyYXdHcmFwaF8oITEpfWZpbmFsbHl7Yy5pc0NoYW5naW5nUmFuZ2VfPSExfX0scD1mdW5jdGlvbih0KXtpZighZiYmIXgpe3ZhciBlPW4odCk/Im1vdmUiOiJkZWZhdWx0IjtlIT1jLmZnY2FudmFzXy5zdHlsZS5jdXJzb3ImJihjLmZnY2FudmFzXy5zdHlsZS5jdXJzb3I9ZSl9fSxnPWZ1bmN0aW9uKHQpeyJ0b3VjaHN0YXJ0Ij09dC50eXBlJiYxPT10LnRhcmdldFRvdWNoZXMubGVuZ3RoP2UodC50YXJnZXRUb3VjaGVzWzBdKSYmRHlncmFwaC5jYW5jZWxFdmVudCh0KToidG91Y2htb3ZlIj09dC50eXBlJiYxPT10LnRhcmdldFRvdWNoZXMubGVuZ3RoP2EodC50YXJnZXRUb3VjaGVzWzBdKSYmRHlncmFwaC5jYW5jZWxFdmVudCh0KTppKHQpfSxkPWZ1bmN0aW9uKHQpeyJ0b3VjaHN0YXJ0Ij09dC50eXBlJiYxPT10LnRhcmdldFRvdWNoZXMubGVuZ3RoP28odC50YXJnZXRUb3VjaGVzWzBdKSYmRHlncmFwaC5jYW5jZWxFdmVudCh0KToidG91Y2htb3ZlIj09dC50eXBlJiYxPT10LnRhcmdldFRvdWNoZXMubGVuZ3RoP3ModC50YXJnZXRUb3VjaGVzWzBdKSYmRHlncmFwaC5jYW5jZWxFdmVudCh0KTpsKHQpfSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBhPVsidG91Y2hzdGFydCIsInRvdWNoZW5kIiwidG91Y2htb3ZlIiwidG91Y2hjYW5jZWwiXSxpPTA7aTxhLmxlbmd0aDtpKyspYy5keWdyYXBoXy5hZGRBbmRUcmFja0V2ZW50KHQsYVtpXSxlKX0sdGhpcy5zZXREZWZhdWx0T3B0aW9uXygiaW50ZXJhY3Rpb25Nb2RlbCIsRHlncmFwaC5JbnRlcmFjdGlvbi5kcmFnSXNQYW5JbnRlcmFjdGlvbk1vZGVsKSx0aGlzLnNldERlZmF1bHRPcHRpb25fKCJwYW5FZGdlRnJhY3Rpb24iLDFlLTQpO3ZhciB3PXdpbmRvdy5vcGVyYT8ibW91c2Vkb3duIjoiZHJhZ3N0YXJ0Ijt0aGlzLmR5Z3JhcGhfLmFkZEFuZFRyYWNrRXZlbnQodGhpcy5sZWZ0Wm9vbUhhbmRsZV8sdyxlKSx0aGlzLmR5Z3JhcGhfLmFkZEFuZFRyYWNrRXZlbnQodGhpcy5yaWdodFpvb21IYW5kbGVfLHcsZSksdGhpcy5pc1VzaW5nRXhjYW52YXNfP3RoaXMuZHlncmFwaF8uYWRkQW5kVHJhY2tFdmVudCh0aGlzLmllUGFuT3ZlcmxheV8sIm1vdXNlZG93biIsbyk6KHRoaXMuZHlncmFwaF8uYWRkQW5kVHJhY2tFdmVudCh0aGlzLmZnY2FudmFzXywibW91c2Vkb3duIixvKSx0aGlzLmR5Z3JhcGhfLmFkZEFuZFRyYWNrRXZlbnQodGhpcy5mZ2NhbnZhc18sIm1vdXNlbW92ZSIscCkpLHRoaXMuaGFzVG91Y2hJbnRlcmZhY2VfJiYodSh0aGlzLmxlZnRab29tSGFuZGxlXyxnKSx1KHRoaXMucmlnaHRab29tSGFuZGxlXyxnKSx1KHRoaXMuZmdjYW52YXNfLGQpKX0sdC5wcm90b3R5cGUuZHJhd1N0YXRpY0xheWVyXz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuYmdjYW52YXNfY3R4Xzt0LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXNSZWN0Xy53LHRoaXMuY2FudmFzUmVjdF8uaCk7dHJ5e3RoaXMuZHJhd01pbmlQbG90XygpfWNhdGNoKGUpe2NvbnNvbGUud2FybihlKX12YXIgYT0uNTt0aGlzLmJnY2FudmFzX2N0eF8ubGluZVdpZHRoPTEsdC5zdHJva2VTdHlsZT0iZ3JheSIsdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhhLGEpLHQubGluZVRvKGEsdGhpcy5jYW52YXNSZWN0Xy5oLWEpLHQubGluZVRvKHRoaXMuY2FudmFzUmVjdF8udy1hLHRoaXMuY2FudmFzUmVjdF8uaC1hKSx0LmxpbmVUbyh0aGlzLmNhbnZhc1JlY3RfLnctYSxhKSx0LnN0cm9rZSgpfSx0LnByb3RvdHlwZS5kcmF3TWluaVBsb3RfPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRPcHRpb25fKCJyYW5nZVNlbGVjdG9yUGxvdEZpbGxDb2xvciIpLGU9dGhpcy5nZXRPcHRpb25fKCJyYW5nZVNlbGVjdG9yUGxvdFN0cm9rZUNvbG9yIik7aWYodHx8ZSl7dmFyIGE9dGhpcy5nZXRPcHRpb25fKCJzdGVwUGxvdCIpLGk9dGhpcy5jb21wdXRlQ29tYmluZWRTZXJpZXNBbmRMaW1pdHNfKCkscj1pLnlNYXgtaS55TWluLG49dGhpcy5iZ2NhbnZhc19jdHhfLG89LjUscz10aGlzLmR5Z3JhcGhfLnhBeGlzRXh0cmVtZXMoKSxsPU1hdGgubWF4KHNbMV0tc1swXSwxZS0zMCksaD0odGhpcy5jYW52YXNSZWN0Xy53LW8pL2wscD0odGhpcy5jYW52YXNSZWN0Xy5oLW8pL3IsZz10aGlzLmNhbnZhc1JlY3RfLnctbyxkPXRoaXMuY2FudmFzUmVjdF8uaC1vLHU9bnVsbCxjPW51bGw7bi5iZWdpblBhdGgoKSxuLm1vdmVUbyhvLGQpO2Zvcih2YXIgeT0wO3k8aS5kYXRhLmxlbmd0aDt5Kyspe3ZhciBfPWkuZGF0YVt5XSx2PW51bGwhPT1fWzBdPyhfWzBdLXNbMF0pKmg6MC8wLGY9bnVsbCE9PV9bMV0/ZC0oX1sxXS1pLnlNaW4pKnA6MC8wOyhhfHxudWxsPT09dXx8TWF0aC5yb3VuZCh2KSE9TWF0aC5yb3VuZCh1KSkmJihpc0Zpbml0ZSh2KSYmaXNGaW5pdGUoZik/KG51bGw9PT11P24ubGluZVRvKHYsZCk6YSYmbi5saW5lVG8odixjKSxuLmxpbmVUbyh2LGYpLHU9dixjPWYpOihudWxsIT09dSYmKGE/KG4ubGluZVRvKHYsYyksbi5saW5lVG8odixkKSk6bi5saW5lVG8odSxkKSksdT1jPW51bGwpKX1pZihuLmxpbmVUbyhnLGQpLG4uY2xvc2VQYXRoKCksdCl7dmFyIHg9dGhpcy5iZ2NhbnZhc19jdHhfLmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsMCwwLGQpO3guYWRkQ29sb3JTdG9wKDAsIndoaXRlIikseC5hZGRDb2xvclN0b3AoMSx0KSx0aGlzLmJnY2FudmFzX2N0eF8uZmlsbFN0eWxlPXgsbi5maWxsKCl9ZSYmKHRoaXMuYmdjYW52YXNfY3R4Xy5zdHJva2VTdHlsZT1lLHRoaXMuYmdjYW52YXNfY3R4Xy5saW5lV2lkdGg9MS41LG4uc3Ryb2tlKCkpfX0sdC5wcm90b3R5cGUuY29tcHV0ZUNvbWJpbmVkU2VyaWVzQW5kTGltaXRzXz1mdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5keWdyYXBoXyxhPXRoaXMuZ2V0T3B0aW9uXygibG9nc2NhbGUiKSxpPWUubnVtQ29sdW1ucygpLHI9ZS5nZXRMYWJlbHMoKSxuPW5ldyBBcnJheShpKSxvPSExO2Zvcih0PTE7aT50O3QrKyl7dmFyIHM9dGhpcy5nZXRPcHRpb25fKCJzaG93SW5SYW5nZVNlbGVjdG9yIixyW3RdKTtuW3RdPXMsbnVsbCE9PXMmJihvPSEwKX1pZighbylmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF09ITA7dmFyIGw9W10saD1lLmRhdGFIYW5kbGVyXyxwPWUuYXR0cmlidXRlc187Zm9yKHQ9MTt0PGUubnVtQ29sdW1ucygpO3QrKylpZihuW3RdKXt2YXIgZz1oLmV4dHJhY3RTZXJpZXMoZS5yYXdEYXRhXyx0LHApO2Uucm9sbFBlcmlvZCgpPjEmJihnPWgucm9sbGluZ0F2ZXJhZ2UoZyxlLnJvbGxQZXJpb2QoKSxwKSksbC5wdXNoKGcpfXZhciBkPVtdO2Zvcih0PTA7dDxsWzBdLmxlbmd0aDt0Kyspe2Zvcih2YXIgdT0wLGM9MCx5PTA7eTxsLmxlbmd0aDt5Kyspe3ZhciBfPWxbeV1bdF1bMV07bnVsbD09PV98fGlzTmFOKF8pfHwoYysrLHUrPV8pfWQucHVzaChbbFswXVt0XVswXSx1L2NdKX12YXIgdj1OdW1iZXIuTUFYX1ZBTFVFLGY9LU51bWJlci5NQVhfVkFMVUU7Zm9yKHQ9MDt0PGQubGVuZ3RoO3QrKyl7dmFyIHg9ZFt0XVsxXTtudWxsIT09eCYmaXNGaW5pdGUoeCkmJighYXx8eD4wKSYmKHY9TWF0aC5taW4odix4KSxmPU1hdGgubWF4KGYseCkpfXZhciBtPS4yNTtpZihhKWZvcihmPUR5Z3JhcGgubG9nMTAoZiksZis9ZiptLHY9RHlncmFwaC5sb2cxMCh2KSx0PTA7dDxkLmxlbmd0aDt0KyspZFt0XVsxXT1EeWdyYXBoLmxvZzEwKGRbdF1bMV0pO2Vsc2V7dmFyIEQsdz1mLXY7RD13PD1OdW1iZXIuTUlOX1ZBTFVFP2YqbTp3Km0sZis9RCx2LT1EfXJldHVybntkYXRhOmQseU1pbjp2LHlNYXg6Zn19LHQucHJvdG90eXBlLnBsYWNlWm9vbUhhbmRsZXNfPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5keWdyYXBoXy54QXhpc0V4dHJlbWVzKCksZT10aGlzLmR5Z3JhcGhfLnhBeGlzUmFuZ2UoKSxhPXRbMV0tdFswXSxpPU1hdGgubWF4KDAsKGVbMF0tdFswXSkvYSkscj1NYXRoLm1heCgwLCh0WzFdLWVbMV0pL2EpLG49dGhpcy5jYW52YXNSZWN0Xy54K3RoaXMuY2FudmFzUmVjdF8udyppLG89dGhpcy5jYW52YXNSZWN0Xy54K3RoaXMuY2FudmFzUmVjdF8udyooMS1yKSxzPU1hdGgubWF4KHRoaXMuY2FudmFzUmVjdF8ueSx0aGlzLmNhbnZhc1JlY3RfLnkrKHRoaXMuY2FudmFzUmVjdF8uaC10aGlzLmxlZnRab29tSGFuZGxlXy5oZWlnaHQpLzIpLGw9dGhpcy5sZWZ0Wm9vbUhhbmRsZV8ud2lkdGgvMjt0aGlzLmxlZnRab29tSGFuZGxlXy5zdHlsZS5sZWZ0PW4tbCsicHgiLHRoaXMubGVmdFpvb21IYW5kbGVfLnN0eWxlLnRvcD1zKyJweCIsdGhpcy5yaWdodFpvb21IYW5kbGVfLnN0eWxlLmxlZnQ9by1sKyJweCIsdGhpcy5yaWdodFpvb21IYW5kbGVfLnN0eWxlLnRvcD10aGlzLmxlZnRab29tSGFuZGxlXy5zdHlsZS50b3AsdGhpcy5sZWZ0Wm9vbUhhbmRsZV8uc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5yaWdodFpvb21IYW5kbGVfLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUifSx0LnByb3RvdHlwZS5kcmF3SW50ZXJhY3RpdmVMYXllcl89ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZnY2FudmFzX2N0eF87dC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzUmVjdF8udyx0aGlzLmNhbnZhc1JlY3RfLmgpO3ZhciBlPTEsYT10aGlzLmNhbnZhc1JlY3RfLnctZSxpPXRoaXMuY2FudmFzUmVjdF8uaC1lLHI9dGhpcy5nZXRab29tSGFuZGxlU3RhdHVzXygpO2lmKHQuc3Ryb2tlU3R5bGU9ImJsYWNrIixyLmlzWm9vbWVkKXt2YXIgbj1NYXRoLm1heChlLHIubGVmdEhhbmRsZVBvcy10aGlzLmNhbnZhc1JlY3RfLngpLG89TWF0aC5taW4oYSxyLnJpZ2h0SGFuZGxlUG9zLXRoaXMuY2FudmFzUmVjdF8ueCk7dC5maWxsU3R5bGU9InJnYmEoMjQwLCAyNDAsIDI0MCwgMC42KSIsdC5maWxsUmVjdCgwLDAsbix0aGlzLmNhbnZhc1JlY3RfLmgpLHQuZmlsbFJlY3QobywwLHRoaXMuY2FudmFzUmVjdF8udy1vLHRoaXMuY2FudmFzUmVjdF8uaCksdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhlLGUpLHQubGluZVRvKG4sZSksdC5saW5lVG8obixpKSx0LmxpbmVUbyhvLGkpLHQubGluZVRvKG8sZSksdC5saW5lVG8oYSxlKSx0LnN0cm9rZSgpLHRoaXMuaXNVc2luZ0V4Y2FudmFzXyYmKHRoaXMuaWVQYW5PdmVybGF5Xy5zdHlsZS53aWR0aD1vLW4rInB4Iix0aGlzLmllUGFuT3ZlcmxheV8uc3R5bGUubGVmdD1uKyJweCIsdGhpcy5pZVBhbk92ZXJsYXlfLnN0eWxlLmhlaWdodD1pKyJweCIsdGhpcy5pZVBhbk92ZXJsYXlfLnN0eWxlLmRpc3BsYXk9ImlubGluZSIpfWVsc2UgdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhlLGUpLHQubGluZVRvKGUsaSksdC5saW5lVG8oYSxpKSx0LmxpbmVUbyhhLGUpLHQuc3Ryb2tlKCksdGhpcy5pZVBhbk92ZXJsYXlfJiYodGhpcy5pZVBhbk92ZXJsYXlfLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0sdC5wcm90b3R5cGUuZ2V0Wm9vbUhhbmRsZVN0YXR1c189ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlZnRab29tSGFuZGxlXy53aWR0aC8yLGU9cGFyc2VGbG9hdCh0aGlzLmxlZnRab29tSGFuZGxlXy5zdHlsZS5sZWZ0KSt0LGE9cGFyc2VGbG9hdCh0aGlzLnJpZ2h0Wm9vbUhhbmRsZV8uc3R5bGUubGVmdCkrdDtyZXR1cm57bGVmdEhhbmRsZVBvczplLHJpZ2h0SGFuZGxlUG9zOmEsaXNab29tZWQ6ZS0xPnRoaXMuY2FudmFzUmVjdF8ueHx8YSsxPHRoaXMuY2FudmFzUmVjdF8ueCt0aGlzLmNhbnZhc1JlY3RfLnd9fSx0fSgpLER5Z3JhcGguUExVR0lOUy5wdXNoKER5Z3JhcGguUGx1Z2lucy5MZWdlbmQsRHlncmFwaC5QbHVnaW5zLkF4ZXMsRHlncmFwaC5QbHVnaW5zLlJhbmdlU2VsZWN0b3IsRHlncmFwaC5QbHVnaW5zLkNoYXJ0TGFiZWxzLER5Z3JhcGguUGx1Z2lucy5Bbm5vdGF0aW9ucyxEeWdyYXBoLlBsdWdpbnMuR3JpZCksRHlncmFwaC5EYXRhSGFuZGxlcj1mdW5jdGlvbigpe30sRHlncmFwaC5EYXRhSGFuZGxlcnM9e30sZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9RHlncmFwaC5EYXRhSGFuZGxlcjt0Llg9MCx0Llk9MSx0LkVYVFJBUz0yLHQucHJvdG90eXBlLmV4dHJhY3RTZXJpZXM9ZnVuY3Rpb24odCxlLGEpe30sdC5wcm90b3R5cGUuc2VyaWVzVG9Qb2ludHM9ZnVuY3Rpb24oZSxhLGkpe2Zvcih2YXIgcj1bXSxuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBvPWVbbl0scz1vWzFdLGw9bnVsbD09PXM/bnVsbDp0LnBhcnNlRmxvYXQocyksaD17eDowLzAseTowLzAseHZhbDp0LnBhcnNlRmxvYXQob1swXSkseXZhbDpsLG5hbWU6YSxpZHg6bitpfTtyLnB1c2goaCl9cmV0dXJuIHRoaXMub25Qb2ludHNDcmVhdGVkXyhlLHIpLHJ9LHQucHJvdG90eXBlLm9uUG9pbnRzQ3JlYXRlZF89ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnJvbGxpbmdBdmVyYWdlPWZ1bmN0aW9uKHQsZSxhKXt9LHQucHJvdG90eXBlLmdldEV4dHJlbWVZVmFsdWVzPWZ1bmN0aW9uKHQsZSxhKXt9LHQucHJvdG90eXBlLm9uTGluZUV2YWx1YXRlZD1mdW5jdGlvbih0LGUsYSl7fSx0LnByb3RvdHlwZS5jb21wdXRlWUludGVycG9sYXRpb25fPWZ1bmN0aW9uKHQsZSxhKXt2YXIgaT1lWzFdLXRbMV0scj1lWzBdLXRbMF0sbj1pL3Isbz0oYS10WzBdKSpuO3JldHVybiB0WzFdK299LHQucHJvdG90eXBlLmdldEluZGV4ZXNJbldpbmRvd189ZnVuY3Rpb24odCxlKXt2YXIgYT0wLGk9dC5sZW5ndGgtMTtpZihlKXtmb3IodmFyIHI9MCxuPWVbMF0sbz1lWzFdO3I8dC5sZW5ndGgtMSYmdFtyXVswXTxuOylhKysscisrO2ZvcihyPXQubGVuZ3RoLTE7cj4wJiZ0W3JdWzBdPm87KWktLSxyLS19cmV0dXJuIGk+PWE/W2EsaV06WzAsdC5sZW5ndGgtMV19LHQucGFyc2VGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/MC8wOnR9fSgpLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO0R5Z3JhcGguRGF0YUhhbmRsZXJzLkRlZmF1bHRIYW5kbGVyPWZ1bmN0aW9uKCl7fTt2YXIgdD1EeWdyYXBoLkRhdGFIYW5kbGVycy5EZWZhdWx0SGFuZGxlcjt0LnByb3RvdHlwZT1uZXcgRHlncmFwaC5EYXRhSGFuZGxlcix0LnByb3RvdHlwZS5leHRyYWN0U2VyaWVzPWZ1bmN0aW9uKHQsZSxhKXtmb3IodmFyIGk9W10scj1hLmdldCgibG9nc2NhbGUiKSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBvPXRbbl1bMF0scz10W25dW2VdO3ImJjA+PXMmJihzPW51bGwpLGkucHVzaChbbyxzXSl9cmV0dXJuIGl9LHQucHJvdG90eXBlLnJvbGxpbmdBdmVyYWdlPWZ1bmN0aW9uKHQsZSxhKXtlPU1hdGgubWluKGUsdC5sZW5ndGgpO3ZhciBpLHIsbixvLHMsbD1bXTtpZigxPT1lKXJldHVybiB0O2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe2ZvcihvPTAscz0wLHI9TWF0aC5tYXgoMCxpLWUrMSk7aSsxPnI7cisrKW49dFtyXVsxXSxudWxsPT09bnx8aXNOYU4obil8fChzKyssbys9dFtyXVsxXSk7cz9sW2ldPVt0W2ldWzBdLG8vc106bFtpXT1bdFtpXVswXSxudWxsXX1yZXR1cm4gbH0sdC5wcm90b3R5cGUuZ2V0RXh0cmVtZVlWYWx1ZXM9ZnVuY3Rpb24odCxlLGEpe2Zvcih2YXIgaSxyPW51bGwsbj1udWxsLG89MCxzPXQubGVuZ3RoLTEsbD1vO3M+PWw7bCsrKWk9dFtsXVsxXSxudWxsPT09aXx8aXNOYU4oaSl8fCgobnVsbD09PW58fGk+bikmJihuPWkpLChudWxsPT09cnx8cj5pKSYmKHI9aSkpO3JldHVybltyLG5dfX0oKSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtEeWdyYXBoLkRhdGFIYW5kbGVycy5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyPWZ1bmN0aW9uKCl7fTt2YXIgdD1EeWdyYXBoLkRhdGFIYW5kbGVycy5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyO3QucHJvdG90eXBlPW5ldyBEeWdyYXBoLkRhdGFIYW5kbGVycy5EZWZhdWx0SGFuZGxlcix0LnByb3RvdHlwZS5leHRyYWN0U2VyaWVzPWZ1bmN0aW9uKHQsZSxhKXtmb3IodmFyIGkscixuLG8scyxsLGg9W10scD0xMDAsZz1hLmdldCgibG9nc2NhbGUiKSxkPTA7ZDx0Lmxlbmd0aDtkKyspaT10W2RdWzBdLG49dFtkXVtlXSxnJiZudWxsIT09biYmKG5bMF08PTB8fG5bMV08PTApJiYobj1udWxsKSxudWxsIT09bj8obz1uWzBdLHM9blsxXSxudWxsPT09b3x8aXNOYU4obyk/aC5wdXNoKFtpLG8sW28sc11dKToobD1zP28vczowLHI9cCpsLGgucHVzaChbaSxyLFtvLHNdXSkpKTpoLnB1c2goW2ksbnVsbCxbbnVsbCxudWxsXV0pO3JldHVybiBofSx0LnByb3RvdHlwZS5yb2xsaW5nQXZlcmFnZT1mdW5jdGlvbih0LGUsYSl7ZT1NYXRoLm1pbihlLHQubGVuZ3RoKTt2YXIgaSxyPVtdLG49MCxvPTAscz0xMDA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7bis9dFtpXVsyXVswXSxvKz10W2ldWzJdWzFdLGktZT49MCYmKG4tPXRbaS1lXVsyXVswXSxvLT10W2ktZV1bMl1bMV0pO3ZhciBsPXRbaV1bMF0saD1vP24vbzowO3JbaV09W2wscypoXX1yZXR1cm4gcn19KCksZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7RHlncmFwaC5EYXRhSGFuZGxlcnMuQmFyc0hhbmRsZXI9ZnVuY3Rpb24oKXtEeWdyYXBoLkRhdGFIYW5kbGVyLmNhbGwodGhpcyl9LER5Z3JhcGguRGF0YUhhbmRsZXJzLkJhcnNIYW5kbGVyLnByb3RvdHlwZT1uZXcgRHlncmFwaC5EYXRhSGFuZGxlcjt2YXIgdD1EeWdyYXBoLkRhdGFIYW5kbGVycy5CYXJzSGFuZGxlcjt0LnByb3RvdHlwZS5leHRyYWN0U2VyaWVzPWZ1bmN0aW9uKHQsZSxhKXt9LHQucHJvdG90eXBlLnJvbGxpbmdBdmVyYWdlPWZ1bmN0aW9uKHQsZSxhKXt9LHQucHJvdG90eXBlLm9uUG9pbnRzQ3JlYXRlZF89ZnVuY3Rpb24odCxlKXtmb3IodmFyIGE9MDthPHQubGVuZ3RoOysrYSl7dmFyIGk9dFthXSxyPWVbYV07ci55X3RvcD0wLzAsci55X2JvdHRvbT0wLzAsci55dmFsX21pbnVzPUR5Z3JhcGguRGF0YUhhbmRsZXIucGFyc2VGbG9hdChpWzJdWzBdKSxyLnl2YWxfcGx1cz1EeWdyYXBoLkRhdGFIYW5kbGVyLnBhcnNlRmxvYXQoaVsyXVsxXSl9fSx0LnByb3RvdHlwZS5nZXRFeHRyZW1lWVZhbHVlcz1mdW5jdGlvbih0LGUsYSl7Zm9yKHZhciBpLHI9bnVsbCxuPW51bGwsbz0wLHM9dC5sZW5ndGgtMSxsPW87cz49bDtsKyspaWYoaT10W2xdWzFdLG51bGwhPT1pJiYhaXNOYU4oaSkpe3ZhciBoPXRbbF1bMl1bMF0scD10W2xdWzJdWzFdO2g+aSYmKGg9aSksaT5wJiYocD1pKSwobnVsbD09PW58fHA+bikmJihuPXApLChudWxsPT09cnx8cj5oKSYmKHI9aCl9cmV0dXJuW3Isbl19LHQucHJvdG90eXBlLm9uTGluZUV2YWx1YXRlZD1mdW5jdGlvbih0LGUsYSl7Zm9yKHZhciBpLHI9MDtyPHQubGVuZ3RoO3IrKylpPXRbcl0saS55X3RvcD1EeWdyYXBoTGF5b3V0LmNhbGNZTm9ybWFsXyhlLGkueXZhbF9taW51cyxhKSxpLnlfYm90dG9tPUR5Z3JhcGhMYXlvdXQuY2FsY1lOb3JtYWxfKGUsaS55dmFsX3BsdXMsYSl9fSgpLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO0R5Z3JhcGguRGF0YUhhbmRsZXJzLkN1c3RvbUJhcnNIYW5kbGVyPWZ1bmN0aW9uKCl7fTt2YXIgdD1EeWdyYXBoLkRhdGFIYW5kbGVycy5DdXN0b21CYXJzSGFuZGxlcjt0LnByb3RvdHlwZT1uZXcgRHlncmFwaC5EYXRhSGFuZGxlcnMuQmFyc0hhbmRsZXIsdC5wcm90b3R5cGUuZXh0cmFjdFNlcmllcz1mdW5jdGlvbih0LGUsYSl7Zm9yKHZhciBpLHIsbixvPVtdLHM9YS5nZXQoImxvZ3NjYWxlIiksbD0wO2w8dC5sZW5ndGg7bCsrKWk9dFtsXVswXSxuPXRbbF1bZV0scyYmbnVsbCE9PW4mJihuWzBdPD0wfHxuWzFdPD0wfHxuWzJdPD0wKSYmKG49bnVsbCksbnVsbCE9PW4/KHI9blsxXSxvLnB1c2gobnVsbD09PXJ8fGlzTmFOKHIpP1tpLHIsW3Iscl1dOltpLHIsW25bMF0sblsyXV1dKSk6by5wdXNoKFtpLG51bGwsW251bGwsbnVsbF1dKTtyZXR1cm4gb30sdC5wcm90b3R5cGUucm9sbGluZ0F2ZXJhZ2U9ZnVuY3Rpb24odCxlLGEpe2U9TWF0aC5taW4oZSx0Lmxlbmd0aCk7dmFyIGkscixuLG8scyxsLGgscD1bXTtmb3Iocj0wLG89MCxuPTAscz0wLGw9MDtsPHQubGVuZ3RoO2wrKyl7aWYoaT10W2xdWzFdLGg9dFtsXVsyXSxwW2xdPXRbbF0sbnVsbD09PWl8fGlzTmFOKGkpfHwocis9aFswXSxvKz1pLG4rPWhbMV0scys9MSksbC1lPj0wKXt2YXIgZz10W2wtZV07bnVsbD09PWdbMV18fGlzTmFOKGdbMV0pfHwoci09Z1syXVswXSxvLT1nWzFdLG4tPWdbMl1bMV0scy09MSl9cz9wW2xdPVt0W2xdWzBdLDEqby9zLFsxKnIvcywxKm4vc11dOnBbbF09W3RbbF1bMF0sbnVsbCxbbnVsbCxudWxsXV19cmV0dXJuIHB9fSgpLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO0R5Z3JhcGguRGF0YUhhbmRsZXJzLkVycm9yQmFyc0hhbmRsZXI9ZnVuY3Rpb24oKXt9O3ZhciB0PUR5Z3JhcGguRGF0YUhhbmRsZXJzLkVycm9yQmFyc0hhbmRsZXI7dC5wcm90b3R5cGU9bmV3IER5Z3JhcGguRGF0YUhhbmRsZXJzLkJhcnNIYW5kbGVyLHQucHJvdG90eXBlLmV4dHJhY3RTZXJpZXM9ZnVuY3Rpb24odCxlLGEpe2Zvcih2YXIgaSxyLG4sbyxzPVtdLGw9YS5nZXQoInNpZ21hIiksaD1hLmdldCgibG9nc2NhbGUiKSxwPTA7cDx0Lmxlbmd0aDtwKyspaT10W3BdWzBdLG89dFtwXVtlXSxoJiZudWxsIT09byYmKG9bMF08PTB8fG9bMF0tbCpvWzFdPD0wKSYmKG89bnVsbCksbnVsbCE9PW8/KHI9b1swXSxudWxsPT09cnx8aXNOYU4ocik/cy5wdXNoKFtpLHIsW3IscixyXV0pOihuPWwqb1sxXSxzLnB1c2goW2kscixbci1uLHIrbixvWzFdXV0pKSk6cy5wdXNoKFtpLG51bGwsW251bGwsbnVsbCxudWxsXV0pO3JldHVybiBzfSx0LnByb3RvdHlwZS5yb2xsaW5nQXZlcmFnZT1mdW5jdGlvbih0LGUsYSl7ZT1NYXRoLm1pbihlLHQubGVuZ3RoKTt2YXIgaSxyLG4sbyxzLGwsaCxwLGcsZD1bXSx1PWEuZ2V0KCJzaWdtYSIpO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe2ZvcihzPTAscD0wLGw9MCxyPU1hdGgubWF4KDAsaS1lKzEpO2krMT5yO3IrKyluPXRbcl1bMV0sbnVsbD09PW58fGlzTmFOKG4pfHwobCsrLHMrPW4scCs9TWF0aC5wb3codFtyXVsyXVsyXSwyKSk7bD8oaD1NYXRoLnNxcnQocCkvbCxnPXMvbCxkW2ldPVt0W2ldWzBdLGcsW2ctdSpoLGcrdSpoXV0pOihvPTE9PWU/dFtpXVsxXTpudWxsLGRbaV09W3RbaV1bMF0sbyxbbyxvXV0pfXJldHVybiBkfX0oKSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtEeWdyYXBoLkRhdGFIYW5kbGVycy5GcmFjdGlvbnNCYXJzSGFuZGxlcj1mdW5jdGlvbigpe307dmFyIHQ9RHlncmFwaC5EYXRhSGFuZGxlcnMuRnJhY3Rpb25zQmFyc0hhbmRsZXI7dC5wcm90b3R5cGU9bmV3IER5Z3JhcGguRGF0YUhhbmRsZXJzLkJhcnNIYW5kbGVyLHQucHJvdG90eXBlLmV4dHJhY3RTZXJpZXM9ZnVuY3Rpb24odCxlLGEpe2Zvcih2YXIgaSxyLG4sbyxzLGwsaCxwLGc9W10sZD0xMDAsdT1hLmdldCgic2lnbWEiKSxjPWEuZ2V0KCJsb2dzY2FsZSIpLHk9MDt5PHQubGVuZ3RoO3krKylpPXRbeV1bMF0sbj10W3ldW2VdLGMmJm51bGwhPT1uJiYoblswXTw9MHx8blsxXTw9MCkmJihuPW51bGwpLG51bGwhPT1uPyhvPW5bMF0scz1uWzFdLG51bGw9PT1vfHxpc05hTihvKT9nLnB1c2goW2ksbyxbbyxvLG8sc11dKToobD1zP28vczowLGg9cz91Kk1hdGguc3FydChsKigxLWwpL3MpOjEscD1kKmgscj1kKmwsZy5wdXNoKFtpLHIsW3ItcCxyK3AsbyxzXV0pKSk6Zy5wdXNoKFtpLG51bGwsW251bGwsbnVsbCxudWxsLG51bGxdXSk7cmV0dXJuIGd9LHQucHJvdG90eXBlLnJvbGxpbmdBdmVyYWdlPWZ1bmN0aW9uKHQsZSxhKXtlPU1hdGgubWluKGUsdC5sZW5ndGgpO3ZhciBpLHIsbixvLHM9W10sbD1hLmdldCgic2lnbWEiKSxoPWEuZ2V0KCJ3aWxzb25JbnRlcnZhbCIpLHA9MCxnPTAsZD0xMDA7Zm9yKG49MDtuPHQubGVuZ3RoO24rKyl7cCs9dFtuXVsyXVsyXSxnKz10W25dWzJdWzNdLG4tZT49MCYmKHAtPXRbbi1lXVsyXVsyXSxnLT10W24tZV1bMl1bM10pO3ZhciB1PXRbbl1bMF0sYz1nP3AvZzowO2lmKGgpaWYoZyl7dmFyIHk9MD5jPzA6YyxfPWcsdj1sKk1hdGguc3FydCh5KigxLXkpL18rbCpsLyg0Kl8qXykpLGY9MStsKmwvZztpPSh5K2wqbC8oMipnKS12KS9mLHI9KHkrbCpsLygyKmcpK3YpL2Ysc1tuXT1bdSx5KmQsW2kqZCxyKmRdXX1lbHNlIHNbbl09W3UsMCxbMCwwXV07ZWxzZSBvPWc/bCpNYXRoLnNxcnQoYyooMS1jKS9nKToxLHNbbl09W3UsZCpjLFtkKihjLW8pLGQqKGMrbyldXX1yZXR1cm4gc319KCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5Z3JhcGgtY29tYmluZWQuanMubWFw"></script>
<script src="data:application/x-javascript;base64,Ly8hIG1vbWVudC5qcwovLyEgdmVyc2lvbiA6IDIuOC40Ci8vISBhdXRob3JzIDogVGltIFdvb2QsIElza3JlbiBDaGVybmV2LCBNb21lbnQuanMgY29udHJpYnV0b3JzCi8vISBsaWNlbnNlIDogTUlUCi8vISBtb21lbnRqcy5jb20KCihmdW5jdGlvbiAodW5kZWZpbmVkKSB7CiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgQ29uc3RhbnRzCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgdmFyIG1vbWVudCwKICAgICAgICBWRVJTSU9OID0gJzIuOC40JywKICAgICAgICAvLyB0aGUgZ2xvYmFsLXNjb3BlIHRoaXMgaXMgTk9UIHRoZSBnbG9iYWwgb2JqZWN0IGluIE5vZGUuanMKICAgICAgICBnbG9iYWxTY29wZSA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdGhpcywKICAgICAgICBvbGRHbG9iYWxNb21lbnQsCiAgICAgICAgcm91bmQgPSBNYXRoLnJvdW5kLAogICAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBpLAoKICAgICAgICBZRUFSID0gMCwKICAgICAgICBNT05USCA9IDEsCiAgICAgICAgREFURSA9IDIsCiAgICAgICAgSE9VUiA9IDMsCiAgICAgICAgTUlOVVRFID0gNCwKICAgICAgICBTRUNPTkQgPSA1LAogICAgICAgIE1JTExJU0VDT05EID0gNiwKCiAgICAgICAgLy8gaW50ZXJuYWwgc3RvcmFnZSBmb3IgbG9jYWxlIGNvbmZpZyBmaWxlcwogICAgICAgIGxvY2FsZXMgPSB7fSwKCiAgICAgICAgLy8gZXh0cmEgbW9tZW50IGludGVybmFsIHByb3BlcnRpZXMgKHBsdWdpbnMgcmVnaXN0ZXIgcHJvcHMgaGVyZSkKICAgICAgICBtb21lbnRQcm9wZXJ0aWVzID0gW10sCgogICAgICAgIC8vIGNoZWNrIGZvciBub2RlSlMKICAgICAgICBoYXNNb2R1bGUgPSAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSwKCiAgICAgICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4CiAgICAgICAgYXNwTmV0SnNvblJlZ2V4ID0gL15cLz9EYXRlXCgoXC0/XGQrKS9pLAogICAgICAgIGFzcE5ldFRpbWVTcGFuSnNvblJlZ2V4ID0gLyhcLSk/KD86KFxkKilcLik/KFxkKylcOihcZCspKD86XDooXGQrKVwuPyhcZHszfSk/KT8vLAoKICAgICAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbAogICAgICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmUKICAgICAgICBpc29EdXJhdGlvblJlZ2V4ID0gL14oLSk/UCg/Oig/OihbMC05LC5dKilZKT8oPzooWzAtOSwuXSopTSk/KD86KFswLTksLl0qKUQpPyg/OlQoPzooWzAtOSwuXSopSCk/KD86KFswLTksLl0qKU0pPyg/OihbMC05LC5dKilTKT8pP3woWzAtOSwuXSopVykkLywKCiAgICAgICAgLy8gZm9ybWF0IHRva2VucwogICAgICAgIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxbW15cW10qXF0pfChcXCk/KE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFF8WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98bW0/fHNzP3xTezEsNH18eHxYfHp6P3xaWj98LikvZywKICAgICAgICBsb2NhbEZvcm1hdHRpbmdUb2tlbnMgPSAvKFxbW15cW10qXF0pfChcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZywKCiAgICAgICAgLy8gcGFyc2luZyB0b2tlbiByZWdleGVzCiAgICAgICAgcGFyc2VUb2tlbk9uZU9yVHdvRGlnaXRzID0gL1xkXGQ/LywgLy8gMCAtIDk5CiAgICAgICAgcGFyc2VUb2tlbk9uZVRvVGhyZWVEaWdpdHMgPSAvXGR7MSwzfS8sIC8vIDAgLSA5OTkKICAgICAgICBwYXJzZVRva2VuT25lVG9Gb3VyRGlnaXRzID0gL1xkezEsNH0vLCAvLyAwIC0gOTk5OQogICAgICAgIHBhcnNlVG9rZW5PbmVUb1NpeERpZ2l0cyA9IC9bK1wtXT9cZHsxLDZ9LywgLy8gLTk5OSw5OTkgLSA5OTksOTk5CiAgICAgICAgcGFyc2VUb2tlbkRpZ2l0cyA9IC9cZCsvLCAvLyBub256ZXJvIG51bWJlciBvZiBkaWdpdHMKICAgICAgICBwYXJzZVRva2VuV29yZCA9IC9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSwgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuCiAgICAgICAgcGFyc2VUb2tlblRpbWV6b25lID0gL1p8W1wrXC1dXGRcZDo/XGRcZC9naSwgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaCiAgICAgICAgcGFyc2VUb2tlblQgPSAvVC9pLCAvLyBUIChJU08gc2VwYXJhdG9yKQogICAgICAgIHBhcnNlVG9rZW5PZmZzZXRNcyA9IC9bXCtcLV0/XGQrLywgLy8gMTIzNDU2Nzg5MDEyMwogICAgICAgIHBhcnNlVG9rZW5UaW1lc3RhbXBNcyA9IC9bXCtcLV0/XGQrKFwuXGR7MSwzfSk/LywgLy8gMTIzNDU2Nzg5IDEyMzQ1Njc4OS4xMjMKCiAgICAgICAgLy9zdHJpY3QgcGFyc2luZyByZWdleGVzCiAgICAgICAgcGFyc2VUb2tlbk9uZURpZ2l0ID0gL1xkLywgLy8gMCAtIDkKICAgICAgICBwYXJzZVRva2VuVHdvRGlnaXRzID0gL1xkXGQvLCAvLyAwMCAtIDk5CiAgICAgICAgcGFyc2VUb2tlblRocmVlRGlnaXRzID0gL1xkezN9LywgLy8gMDAwIC0gOTk5CiAgICAgICAgcGFyc2VUb2tlbkZvdXJEaWdpdHMgPSAvXGR7NH0vLCAvLyAwMDAwIC0gOTk5OQogICAgICAgIHBhcnNlVG9rZW5TaXhEaWdpdHMgPSAvWystXT9cZHs2fS8sIC8vIC05OTksOTk5IC0gOTk5LDk5OQogICAgICAgIHBhcnNlVG9rZW5TaWduZWROdW1iZXIgPSAvWystXT9cZCsvLCAvLyAtaW5mIC0gaW5mCgogICAgICAgIC8vIGlzbyA4NjAxIHJlZ2V4CiAgICAgICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApCiAgICAgICAgaXNvUmVnZXggPSAvXlxzKig/OlsrLV1cZHs2fXxcZHs0fSktKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLAoKICAgICAgICBpc29Gb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onLAoKICAgICAgICBpc29EYXRlcyA9IFsKICAgICAgICAgICAgWydZWVlZWVktTU0tREQnLCAvWystXVxkezZ9LVxkezJ9LVxkezJ9L10sCiAgICAgICAgICAgIFsnWVlZWS1NTS1ERCcsIC9cZHs0fS1cZHsyfS1cZHsyfS9dLAogICAgICAgICAgICBbJ0dHR0ctW1ddV1ctRScsIC9cZHs0fS1XXGR7Mn0tXGQvXSwKICAgICAgICAgICAgWydHR0dHLVtXXVdXJywgL1xkezR9LVdcZHsyfS9dLAogICAgICAgICAgICBbJ1lZWVktREREJywgL1xkezR9LVxkezN9L10KICAgICAgICBdLAoKICAgICAgICAvLyBpc28gdGltZSBmb3JtYXRzIGFuZCByZWdleGVzCiAgICAgICAgaXNvVGltZXMgPSBbCiAgICAgICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC8oVHwgKVxkXGQ6XGRcZDpcZFxkXC5cZCsvXSwKICAgICAgICAgICAgWydISDptbTpzcycsIC8oVHwgKVxkXGQ6XGRcZDpcZFxkL10sCiAgICAgICAgICAgIFsnSEg6bW0nLCAvKFR8IClcZFxkOlxkXGQvXSwKICAgICAgICAgICAgWydISCcsIC8oVHwgKVxkXGQvXQogICAgICAgIF0sCgogICAgICAgIC8vIHRpbWV6b25lIGNodW5rZXIgJysxMDowMCcgPiBbJzEwJywgJzAwJ10gb3IgJy0xNTMwJyA+IFsnLTE1JywgJzMwJ10KICAgICAgICBwYXJzZVRpbWV6b25lQ2h1bmtlciA9IC8oW1wrXC1dfFxkXGQpL2dpLAoKICAgICAgICAvLyBnZXR0ZXIgYW5kIHNldHRlciBuYW1lcwogICAgICAgIHByb3h5R2V0dGVyc0FuZFNldHRlcnMgPSAnRGF0ZXxIb3Vyc3xNaW51dGVzfFNlY29uZHN8TWlsbGlzZWNvbmRzJy5zcGxpdCgnfCcpLAogICAgICAgIHVuaXRNaWxsaXNlY29uZEZhY3RvcnMgPSB7CiAgICAgICAgICAgICdNaWxsaXNlY29uZHMnIDogMSwKICAgICAgICAgICAgJ1NlY29uZHMnIDogMWUzLAogICAgICAgICAgICAnTWludXRlcycgOiA2ZTQsCiAgICAgICAgICAgICdIb3VycycgOiAzNmU1LAogICAgICAgICAgICAnRGF5cycgOiA4NjRlNSwKICAgICAgICAgICAgJ01vbnRocycgOiAyNTkyZTYsCiAgICAgICAgICAgICdZZWFycycgOiAzMTUzNmU2CiAgICAgICAgfSwKCiAgICAgICAgdW5pdEFsaWFzZXMgPSB7CiAgICAgICAgICAgIG1zIDogJ21pbGxpc2Vjb25kJywKICAgICAgICAgICAgcyA6ICdzZWNvbmQnLAogICAgICAgICAgICBtIDogJ21pbnV0ZScsCiAgICAgICAgICAgIGggOiAnaG91cicsCiAgICAgICAgICAgIGQgOiAnZGF5JywKICAgICAgICAgICAgRCA6ICdkYXRlJywKICAgICAgICAgICAgdyA6ICd3ZWVrJywKICAgICAgICAgICAgVyA6ICdpc29XZWVrJywKICAgICAgICAgICAgTSA6ICdtb250aCcsCiAgICAgICAgICAgIFEgOiAncXVhcnRlcicsCiAgICAgICAgICAgIHkgOiAneWVhcicsCiAgICAgICAgICAgIERERCA6ICdkYXlPZlllYXInLAogICAgICAgICAgICBlIDogJ3dlZWtkYXknLAogICAgICAgICAgICBFIDogJ2lzb1dlZWtkYXknLAogICAgICAgICAgICBnZzogJ3dlZWtZZWFyJywKICAgICAgICAgICAgR0c6ICdpc29XZWVrWWVhcicKICAgICAgICB9LAoKICAgICAgICBjYW1lbEZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgZGF5b2Z5ZWFyIDogJ2RheU9mWWVhcicsCiAgICAgICAgICAgIGlzb3dlZWtkYXkgOiAnaXNvV2Vla2RheScsCiAgICAgICAgICAgIGlzb3dlZWsgOiAnaXNvV2VlaycsCiAgICAgICAgICAgIHdlZWt5ZWFyIDogJ3dlZWtZZWFyJywKICAgICAgICAgICAgaXNvd2Vla3llYXIgOiAnaXNvV2Vla1llYXInCiAgICAgICAgfSwKCiAgICAgICAgLy8gZm9ybWF0IGZ1bmN0aW9uIHN0cmluZ3MKICAgICAgICBmb3JtYXRGdW5jdGlvbnMgPSB7fSwKCiAgICAgICAgLy8gZGVmYXVsdCByZWxhdGl2ZSB0aW1lIHRocmVzaG9sZHMKICAgICAgICByZWxhdGl2ZVRpbWVUaHJlc2hvbGRzID0gewogICAgICAgICAgICBzOiA0NSwgIC8vIHNlY29uZHMgdG8gbWludXRlCiAgICAgICAgICAgIG06IDQ1LCAgLy8gbWludXRlcyB0byBob3VyCiAgICAgICAgICAgIGg6IDIyLCAgLy8gaG91cnMgdG8gZGF5CiAgICAgICAgICAgIGQ6IDI2LCAgLy8gZGF5cyB0byBtb250aAogICAgICAgICAgICBNOiAxMSAgIC8vIG1vbnRocyB0byB5ZWFyCiAgICAgICAgfSwKCiAgICAgICAgLy8gdG9rZW5zIHRvIG9yZGluYWxpemUgYW5kIHBhZAogICAgICAgIG9yZGluYWxpemVUb2tlbnMgPSAnREREIHcgVyBNIEQgZCcuc3BsaXQoJyAnKSwKICAgICAgICBwYWRkZWRUb2tlbnMgPSAnTSBEIEggaCBtIHMgdyBXJy5zcGxpdCgnICcpLAoKICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgTSAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vbnRoKCkgKyAxOwogICAgICAgICAgICB9LAogICAgICAgICAgICBNTU0gIDogZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsIGZvcm1hdCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1NTU0gOiBmdW5jdGlvbiAoZm9ybWF0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsIGZvcm1hdCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEQgICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIERERCAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXlPZlllYXIoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZCAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSgpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBkZCAgIDogZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsIGZvcm1hdCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRkZCAgOiBmdW5jdGlvbiAoZm9ybWF0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLCBmb3JtYXQpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBkZGRkIDogZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHcgICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWVrKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFcgICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFlZICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFplcm9GaWxsKHRoaXMueWVhcigpICUgMTAwLCAyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgWVlZWSA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodGhpcy55ZWFyKCksIDQpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBZWVlZWSA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodGhpcy55ZWFyKCksIDUpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBZWVlZWVkgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHRoaXMueWVhcigpLCBzaWduID0geSA+PSAwID8gJysnIDogJy0nOwogICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyBsZWZ0WmVyb0ZpbGwoTWF0aC5hYnMoeSksIDYpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBnZyAgIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGxlZnRaZXJvRmlsbCh0aGlzLndlZWtZZWFyKCkgJSAxMDAsIDIpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBnZ2dnIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGxlZnRaZXJvRmlsbCh0aGlzLndlZWtZZWFyKCksIDQpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBnZ2dnZyA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodGhpcy53ZWVrWWVhcigpLCA1KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgR0cgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodGhpcy5pc29XZWVrWWVhcigpICUgMTAwLCAyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgR0dHRyA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodGhpcy5pc29XZWVrWWVhcigpLCA0KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgR0dHR0cgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFplcm9GaWxsKHRoaXMuaXNvV2Vla1llYXIoKSwgNSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGUgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEUgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrZGF5KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGEgICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgdHJ1ZSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEEgICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgZmFsc2UpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBIICAgIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaCAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbSAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbnV0ZXMoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcyAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY29uZHMoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUyAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0b0ludCh0aGlzLm1pbGxpc2Vjb25kcygpIC8gMTAwKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU1MgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0WmVyb0ZpbGwodG9JbnQodGhpcy5taWxsaXNlY29uZHMoKSAvIDEwKSwgMik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNTUyAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFplcm9GaWxsKHRoaXMubWlsbGlzZWNvbmRzKCksIDMpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBTU1NTIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGxlZnRaZXJvRmlsbCh0aGlzLm1pbGxpc2Vjb25kcygpLCAzKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgWiAgICA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gLXRoaXMuem9uZSgpLAogICAgICAgICAgICAgICAgICAgIGIgPSAnKyc7CiAgICAgICAgICAgICAgICBpZiAoYSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBhID0gLWE7CiAgICAgICAgICAgICAgICAgICAgYiA9ICctJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBiICsgbGVmdFplcm9GaWxsKHRvSW50KGEgLyA2MCksIDIpICsgJzonICsgbGVmdFplcm9GaWxsKHRvSW50KGEpICUgNjAsIDIpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBaWiAgIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSAtdGhpcy56b25lKCksCiAgICAgICAgICAgICAgICAgICAgYiA9ICcrJzsKICAgICAgICAgICAgICAgIGlmIChhIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGEgPSAtYTsKICAgICAgICAgICAgICAgICAgICBiID0gJy0nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGIgKyBsZWZ0WmVyb0ZpbGwodG9JbnQoYSAvIDYwKSwgMikgKyBsZWZ0WmVyb0ZpbGwodG9JbnQoYSkgJSA2MCwgMik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHogOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy56b25lQWJicigpOwogICAgICAgICAgICB9LAogICAgICAgICAgICB6eiA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHggICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFggICAgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51bml4KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFEgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWFydGVyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBkZXByZWNhdGlvbnMgPSB7fSwKCiAgICAgICAgbGlzdHMgPSBbJ21vbnRocycsICdtb250aHNTaG9ydCcsICd3ZWVrZGF5cycsICd3ZWVrZGF5c1Nob3J0JywgJ3dlZWtkYXlzTWluJ107CgogICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLiBkZmwgY29tZXMgZnJvbQogICAgLy8gZGVmYXVsdC4KICAgIGZ1bmN0aW9uIGRmbChhLCBiLCBjKSB7CiAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIGEgIT0gbnVsbCA/IGEgOiBiOwogICAgICAgICAgICBjYXNlIDM6IHJldHVybiBhICE9IG51bGwgPyBhIDogYiAhPSBudWxsID8gYiA6IGM7CiAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignSW1wbGVtZW50IG1lJyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhc093blByb3AoYSwgYikgewogICAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGIpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlZmF1bHRQYXJzaW5nRmxhZ3MoKSB7CiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWVwIGNsb25lIHRoaXMgb2JqZWN0LCBhbmQgZXM1IHN0YW5kYXJkIGlzIG5vdCB2ZXJ5CiAgICAgICAgLy8gaGVscGZ1bC4KICAgICAgICByZXR1cm4gewogICAgICAgICAgICBlbXB0eSA6IGZhbHNlLAogICAgICAgICAgICB1bnVzZWRUb2tlbnMgOiBbXSwKICAgICAgICAgICAgdW51c2VkSW5wdXQgOiBbXSwKICAgICAgICAgICAgb3ZlcmZsb3cgOiAtMiwKICAgICAgICAgICAgY2hhcnNMZWZ0T3ZlciA6IDAsCiAgICAgICAgICAgIG51bGxJbnB1dCA6IGZhbHNlLAogICAgICAgICAgICBpbnZhbGlkTW9udGggOiBudWxsLAogICAgICAgICAgICBpbnZhbGlkRm9ybWF0IDogZmFsc2UsCiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLAogICAgICAgICAgICBpc286IGZhbHNlCiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBwcmludE1zZyhtc2cpIHsKICAgICAgICBpZiAobW9tZW50LnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHsKICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZGVwcmVjYXRlKG1zZywgZm4pIHsKICAgICAgICB2YXIgZmlyc3RUaW1lID0gdHJ1ZTsKICAgICAgICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGZpcnN0VGltZSkgewogICAgICAgICAgICAgICAgcHJpbnRNc2cobXNnKTsKICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH0sIGZuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7CiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHsKICAgICAgICAgICAgcHJpbnRNc2cobXNnKTsKICAgICAgICAgICAgZGVwcmVjYXRpb25zW25hbWVdID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcGFkVG9rZW4oZnVuYywgY291bnQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGxlZnRaZXJvRmlsbChmdW5jLmNhbGwodGhpcywgYSksIGNvdW50KTsKICAgICAgICB9OwogICAgfQogICAgZnVuY3Rpb24gb3JkaW5hbGl6ZVRva2VuKGZ1bmMsIHBlcmlvZCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChmdW5jLmNhbGwodGhpcywgYSksIHBlcmlvZCk7CiAgICAgICAgfTsKICAgIH0KCiAgICB3aGlsZSAob3JkaW5hbGl6ZVRva2Vucy5sZW5ndGgpIHsKICAgICAgICBpID0gb3JkaW5hbGl6ZVRva2Vucy5wb3AoKTsKICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1tpICsgJ28nXSA9IG9yZGluYWxpemVUb2tlbihmb3JtYXRUb2tlbkZ1bmN0aW9uc1tpXSwgaSk7CiAgICB9CiAgICB3aGlsZSAocGFkZGVkVG9rZW5zLmxlbmd0aCkgewogICAgICAgIGkgPSBwYWRkZWRUb2tlbnMucG9wKCk7CiAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbaSArIGldID0gcGFkVG9rZW4oZm9ybWF0VG9rZW5GdW5jdGlvbnNbaV0sIDIpOwogICAgfQogICAgZm9ybWF0VG9rZW5GdW5jdGlvbnMuRERERCA9IHBhZFRva2VuKGZvcm1hdFRva2VuRnVuY3Rpb25zLkRERCwgMyk7CgoKICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgICBDb25zdHJ1Y3RvcnMKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAgICBmdW5jdGlvbiBMb2NhbGUoKSB7CiAgICB9CgogICAgLy8gTW9tZW50IHByb3RvdHlwZSBvYmplY3QKICAgIGZ1bmN0aW9uIE1vbWVudChjb25maWcsIHNraXBPdmVyZmxvdykgewogICAgICAgIGlmIChza2lwT3ZlcmZsb3cgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIGNoZWNrT3ZlcmZsb3coY29uZmlnKTsKICAgICAgICB9CiAgICAgICAgY29weUNvbmZpZyh0aGlzLCBjb25maWcpOwogICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZSgrY29uZmlnLl9kKTsKICAgIH0KCiAgICAvLyBEdXJhdGlvbiBDb25zdHJ1Y3RvcgogICAgZnVuY3Rpb24gRHVyYXRpb24oZHVyYXRpb24pIHsKICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoZHVyYXRpb24pLAogICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsCiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCwKICAgICAgICAgICAgbW9udGhzID0gbm9ybWFsaXplZElucHV0Lm1vbnRoIHx8IDAsCiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCwKICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCwKICAgICAgICAgICAgaG91cnMgPSBub3JtYWxpemVkSW5wdXQuaG91ciB8fCAwLAogICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLAogICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLAogICAgICAgICAgICBtaWxsaXNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQubWlsbGlzZWNvbmQgfHwgMDsKCiAgICAgICAgLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVBZGRSZW1vdmUKICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICsKICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDAKICAgICAgICAgICAgbWludXRlcyAqIDZlNCArIC8vIDEwMDAgKiA2MAogICAgICAgICAgICBob3VycyAqIDM2ZTU7IC8vIDEwMDAgKiA2MCAqIDYwCiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhCiAgICAgICAgLy8gZGF5IHdoZW4gd29ya2luZyBhcm91bmQgRFNULCB3ZSBuZWVkIHRvIHN0b3JlIHRoZW0gc2VwYXJhdGVseQogICAgICAgIHRoaXMuX2RheXMgPSArZGF5cyArCiAgICAgICAgICAgIHdlZWtzICogNzsKICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZwogICAgICAgIC8vIHdoaWNoIG1vbnRocyB5b3UgYXJlIGFyZSB0YWxraW5nIGFib3V0LCBzbyB3ZSBoYXZlIHRvIHN0b3JlCiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS4KICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICsKICAgICAgICAgICAgcXVhcnRlcnMgKiAzICsKICAgICAgICAgICAgeWVhcnMgKiAxMjsKCiAgICAgICAgdGhpcy5fZGF0YSA9IHt9OwoKICAgICAgICB0aGlzLl9sb2NhbGUgPSBtb21lbnQubG9jYWxlRGF0YSgpOwoKICAgICAgICB0aGlzLl9idWJibGUoKTsKICAgIH0KCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgSGVscGVycwogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikgewogICAgICAgIGZvciAodmFyIGkgaW4gYikgewogICAgICAgICAgICBpZiAoaGFzT3duUHJvcChiLCBpKSkgewogICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChoYXNPd25Qcm9wKGIsICd0b1N0cmluZycpKSB7CiAgICAgICAgICAgIGEudG9TdHJpbmcgPSBiLnRvU3RyaW5nOwogICAgICAgIH0KCiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3ZhbHVlT2YnKSkgewogICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYTsKICAgIH0KCiAgICBmdW5jdGlvbiBjb3B5Q29uZmlnKHRvLCBmcm9tKSB7CiAgICAgICAgdmFyIGksIHByb3AsIHZhbDsKCiAgICAgICAgaWYgKHR5cGVvZiBmcm9tLl9pc0FNb21lbnRPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZnJvbS5faSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGZyb20uX2YgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBmcm9tLl9sICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZnJvbS5fc3RyaWN0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGZyb20uX3R6bSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBmcm9tLl9pc1VUQyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZnJvbS5fb2Zmc2V0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGZyb20uX3BmICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICB0by5fcGYgPSBmcm9tLl9wZjsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBmcm9tLl9sb2NhbGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHRvLl9sb2NhbGUgPSBmcm9tLl9sb2NhbGU7CiAgICAgICAgfQoKICAgICAgICBpZiAobW9tZW50UHJvcGVydGllcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGZvciAoaSBpbiBtb21lbnRQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTsKICAgICAgICAgICAgICAgIHZhbCA9IGZyb21bcHJvcF07CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRvOwogICAgfQoKICAgIGZ1bmN0aW9uIGFic1JvdW5kKG51bWJlcikgewogICAgICAgIGlmIChudW1iZXIgPCAwKSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBsZWZ0IHplcm8gZmlsbCBhIG51bWJlcgogICAgLy8gc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2xlZnQtemVyby1maWxsaW5nIGZvciBwZXJmb3JtYW5jZSBjb21wYXJpc29uCiAgICBmdW5jdGlvbiBsZWZ0WmVyb0ZpbGwobnVtYmVyLCB0YXJnZXRMZW5ndGgsIGZvcmNlU2lnbikgewogICAgICAgIHZhciBvdXRwdXQgPSAnJyArIE1hdGguYWJzKG51bWJlciksCiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDsKCiAgICAgICAgd2hpbGUgKG91dHB1dC5sZW5ndGggPCB0YXJnZXRMZW5ndGgpIHsKICAgICAgICAgICAgb3V0cHV0ID0gJzAnICsgb3V0cHV0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKHNpZ24gPyAoZm9yY2VTaWduID8gJysnIDogJycpIDogJy0nKSArIG91dHB1dDsKICAgIH0KCiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7CiAgICAgICAgdmFyIHJlcyA9IHttaWxsaXNlY29uZHM6IDAsIG1vbnRoczogMH07CgogICAgICAgIHJlcy5tb250aHMgPSBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICsKICAgICAgICAgICAgKG90aGVyLnllYXIoKSAtIGJhc2UueWVhcigpKSAqIDEyOwogICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHsKICAgICAgICAgICAgLS1yZXMubW9udGhzOwogICAgICAgIH0KCiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICsoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpKTsKCiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikgewogICAgICAgIHZhciByZXM7CiAgICAgICAgb3RoZXIgPSBtYWtlQXMob3RoZXIsIGJhc2UpOwogICAgICAgIGlmIChiYXNlLmlzQmVmb3JlKG90aGVyKSkgewogICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKG90aGVyLCBiYXNlKTsKICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzOwogICAgICAgICAgICByZXMubW9udGhzID0gLXJlcy5tb250aHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIC8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWQKICAgIGZ1bmN0aW9uIGNyZWF0ZUFkZGVyKGRpcmVjdGlvbiwgbmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHsKICAgICAgICAgICAgdmFyIGR1ciwgdG1wOwogICAgICAgICAgICAvL2ludmVydCB0aGUgYXJndW1lbnRzLCBidXQgY29tcGxhaW4gYWJvdXQgaXQKICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHsKICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShuYW1lLCAnbW9tZW50KCkuJyArIG5hbWUgICsgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICsgbmFtZSArICcobnVtYmVyLCBwZXJpb2QpLicpOwogICAgICAgICAgICAgICAgdG1wID0gdmFsOyB2YWwgPSBwZXJpb2Q7IHBlcmlvZCA9IHRtcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyArdmFsIDogdmFsOwogICAgICAgICAgICBkdXIgPSBtb21lbnQuZHVyYXRpb24odmFsLCBwZXJpb2QpOwogICAgICAgICAgICBhZGRPclN1YnRyYWN0RHVyYXRpb25Gcm9tTW9tZW50KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBhZGRPclN1YnRyYWN0RHVyYXRpb25Gcm9tTW9tZW50KG1vbSwgZHVyYXRpb24sIGlzQWRkaW5nLCB1cGRhdGVPZmZzZXQpIHsKICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcywKICAgICAgICAgICAgZGF5cyA9IGR1cmF0aW9uLl9kYXlzLAogICAgICAgICAgICBtb250aHMgPSBkdXJhdGlvbi5fbW9udGhzOwogICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDsKCiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykgewogICAgICAgICAgICBtb20uX2Quc2V0VGltZSgrbW9tLl9kICsgbWlsbGlzZWNvbmRzICogaXNBZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAoZGF5cykgewogICAgICAgICAgICByYXdTZXR0ZXIobW9tLCAnRGF0ZScsIHJhd0dldHRlcihtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAobW9udGhzKSB7CiAgICAgICAgICAgIHJhd01vbnRoU2V0dGVyKG1vbSwgcmF3R2V0dGVyKG1vbSwgJ01vbnRoJykgKyBtb250aHMgKiBpc0FkZGluZyk7CiAgICAgICAgfQogICAgICAgIGlmICh1cGRhdGVPZmZzZXQpIHsKICAgICAgICAgICAgbW9tZW50LnVwZGF0ZU9mZnNldChtb20sIGRheXMgfHwgbW9udGhzKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gY2hlY2sgaWYgaXMgYW4gYXJyYXkKICAgIGZ1bmN0aW9uIGlzQXJyYXkoaW5wdXQpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0RhdGUoaW5wdXQpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nIHx8CiAgICAgICAgICAgIGlucHV0IGluc3RhbmNlb2YgRGF0ZTsKICAgIH0KCiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzCiAgICBmdW5jdGlvbiBjb21wYXJlQXJyYXlzKGFycmF5MSwgYXJyYXkyLCBkb250Q29udmVydCkgewogICAgICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcnJheTEubGVuZ3RoLCBhcnJheTIubGVuZ3RoKSwKICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSwKICAgICAgICAgICAgZGlmZnMgPSAwLAogICAgICAgICAgICBpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICBpZiAoKGRvbnRDb252ZXJ0ICYmIGFycmF5MVtpXSAhPT0gYXJyYXkyW2ldKSB8fAogICAgICAgICAgICAgICAgKCFkb250Q29udmVydCAmJiB0b0ludChhcnJheTFbaV0pICE9PSB0b0ludChhcnJheTJbaV0pKSkgewogICAgICAgICAgICAgICAgZGlmZnMrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmOwogICAgfQoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXRzKHVuaXRzKSB7CiAgICAgICAgaWYgKHVuaXRzKSB7CiAgICAgICAgICAgIHZhciBsb3dlcmVkID0gdW5pdHMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oLilzJC8sICckMScpOwogICAgICAgICAgICB1bml0cyA9IHVuaXRBbGlhc2VzW3VuaXRzXSB8fCBjYW1lbEZ1bmN0aW9uc1tsb3dlcmVkXSB8fCBsb3dlcmVkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdW5pdHM7CiAgICB9CgogICAgZnVuY3Rpb24gbm9ybWFsaXplT2JqZWN0VW5pdHMoaW5wdXRPYmplY3QpIHsKICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0ge30sCiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLAogICAgICAgICAgICBwcm9wOwoKICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHsKICAgICAgICAgICAgaWYgKGhhc093blByb3AoaW5wdXRPYmplY3QsIHByb3ApKSB7CiAgICAgICAgICAgICAgICBub3JtYWxpemVkUHJvcCA9IG5vcm1hbGl6ZVVuaXRzKHByb3ApOwogICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZElucHV0W25vcm1hbGl6ZWRQcm9wXSA9IGlucHV0T2JqZWN0W3Byb3BdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0OwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VMaXN0KGZpZWxkKSB7CiAgICAgICAgdmFyIGNvdW50LCBzZXR0ZXI7CgogICAgICAgIGlmIChmaWVsZC5pbmRleE9mKCd3ZWVrJykgPT09IDApIHsKICAgICAgICAgICAgY291bnQgPSA3OwogICAgICAgICAgICBzZXR0ZXIgPSAnZGF5JzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZmllbGQuaW5kZXhPZignbW9udGgnKSA9PT0gMCkgewogICAgICAgICAgICBjb3VudCA9IDEyOwogICAgICAgICAgICBzZXR0ZXIgPSAnbW9udGgnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbW9tZW50W2ZpZWxkXSA9IGZ1bmN0aW9uIChmb3JtYXQsIGluZGV4KSB7CiAgICAgICAgICAgIHZhciBpLCBnZXR0ZXIsCiAgICAgICAgICAgICAgICBtZXRob2QgPSBtb21lbnQuX2xvY2FsZVtmaWVsZF0sCiAgICAgICAgICAgICAgICByZXN1bHRzID0gW107CgogICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0OwogICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBnZXR0ZXIgPSBmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgdmFyIG0gPSBtb21lbnQoKS51dGMoKS5zZXQoc2V0dGVyLCBpKTsKICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2QuY2FsbChtb21lbnQuX2xvY2FsZSwgbSwgZm9ybWF0IHx8ICcnKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0dGVyKGluZGV4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGdldHRlcihpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gdG9JbnQoYXJndW1lbnRGb3JDb2VyY2lvbikgewogICAgICAgIHZhciBjb2VyY2VkTnVtYmVyID0gK2FyZ3VtZW50Rm9yQ29lcmNpb24sCiAgICAgICAgICAgIHZhbHVlID0gMDsKCiAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgIT09IDAgJiYgaXNGaW5pdGUoY29lcmNlZE51bWJlcikpIHsKICAgICAgICAgICAgaWYgKGNvZXJjZWROdW1iZXIgPj0gMCkgewogICAgICAgICAgICAgICAgdmFsdWUgPSBNYXRoLmZsb29yKGNvZXJjZWROdW1iZXIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFsdWUgPSBNYXRoLmNlaWwoY29lcmNlZE51bWJlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkgewogICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCArIDEsIDApKS5nZXRVVENEYXRlKCk7CiAgICB9CgogICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHsKICAgICAgICByZXR1cm4gd2Vla09mWWVhcihtb21lbnQoW3llYXIsIDExLCAzMSArIGRvdyAtIGRveV0pLCBkb3csIGRveSkud2VlazsKICAgIH0KCiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHsKICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHsKICAgICAgICByZXR1cm4gKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDA7CiAgICB9CgogICAgZnVuY3Rpb24gY2hlY2tPdmVyZmxvdyhtKSB7CiAgICAgICAgdmFyIG92ZXJmbG93OwogICAgICAgIGlmIChtLl9hICYmIG0uX3BmLm92ZXJmbG93ID09PSAtMikgewogICAgICAgICAgICBvdmVyZmxvdyA9CiAgICAgICAgICAgICAgICBtLl9hW01PTlRIXSA8IDAgfHwgbS5fYVtNT05USF0gPiAxMSA/IE1PTlRIIDoKICAgICAgICAgICAgICAgIG0uX2FbREFURV0gPCAxIHx8IG0uX2FbREFURV0gPiBkYXlzSW5Nb250aChtLl9hW1lFQVJdLCBtLl9hW01PTlRIXSkgPyBEQVRFIDoKICAgICAgICAgICAgICAgIG0uX2FbSE9VUl0gPCAwIHx8IG0uX2FbSE9VUl0gPiAyNCB8fAogICAgICAgICAgICAgICAgICAgIChtLl9hW0hPVVJdID09PSAyNCAmJiAobS5fYVtNSU5VVEVdICE9PSAwIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLl9hW1NFQ09ORF0gIT09IDAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uX2FbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDoKICAgICAgICAgICAgICAgIG0uX2FbTUlOVVRFXSA8IDAgfHwgbS5fYVtNSU5VVEVdID4gNTkgPyBNSU5VVEUgOgogICAgICAgICAgICAgICAgbS5fYVtTRUNPTkRdIDwgMCB8fCBtLl9hW1NFQ09ORF0gPiA1OSA/IFNFQ09ORCA6CiAgICAgICAgICAgICAgICBtLl9hW01JTExJU0VDT05EXSA8IDAgfHwgbS5fYVtNSUxMSVNFQ09ORF0gPiA5OTkgPyBNSUxMSVNFQ09ORCA6CiAgICAgICAgICAgICAgICAtMTsKCiAgICAgICAgICAgIGlmIChtLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXIgJiYgKG92ZXJmbG93IDwgWUVBUiB8fCBvdmVyZmxvdyA+IERBVEUpKSB7CiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG0uX3BmLm92ZXJmbG93ID0gb3ZlcmZsb3c7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGlzVmFsaWQobSkgewogICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHsKICAgICAgICAgICAgbS5faXNWYWxpZCA9ICFpc05hTihtLl9kLmdldFRpbWUoKSkgJiYKICAgICAgICAgICAgICAgIG0uX3BmLm92ZXJmbG93IDwgMCAmJgogICAgICAgICAgICAgICAgIW0uX3BmLmVtcHR5ICYmCiAgICAgICAgICAgICAgICAhbS5fcGYuaW52YWxpZE1vbnRoICYmCiAgICAgICAgICAgICAgICAhbS5fcGYubnVsbElucHV0ICYmCiAgICAgICAgICAgICAgICAhbS5fcGYuaW52YWxpZEZvcm1hdCAmJgogICAgICAgICAgICAgICAgIW0uX3BmLnVzZXJJbnZhbGlkYXRlZDsKCiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHsKICAgICAgICAgICAgICAgIG0uX2lzVmFsaWQgPSBtLl9pc1ZhbGlkICYmCiAgICAgICAgICAgICAgICAgICAgbS5fcGYuY2hhcnNMZWZ0T3ZlciA9PT0gMCAmJgogICAgICAgICAgICAgICAgICAgIG0uX3BmLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiYKICAgICAgICAgICAgICAgICAgICBtLl9wZi5iaWdIb3VyID09PSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG0uX2lzVmFsaWQ7CiAgICB9CgogICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkgewogICAgICAgIHJldHVybiBrZXkgPyBrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJy0nKSA6IGtleTsKICAgIH0KCiAgICAvLyBwaWNrIHRoZSBsb2NhbGUgZnJvbSB0aGUgYXJyYXkKICAgIC8vIHRyeSBbJ2VuLWF1JywgJ2VuLWdiJ10gYXMgJ2VuLWF1JywgJ2VuLWdiJywgJ2VuJywgYXMgaW4gbW92ZSB0aHJvdWdoIHRoZSBsaXN0IHRyeWluZyBlYWNoCiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290CiAgICBmdW5jdGlvbiBjaG9vc2VMb2NhbGUobmFtZXMpIHsKICAgICAgICB2YXIgaSA9IDAsIGosIG5leHQsIGxvY2FsZSwgc3BsaXQ7CgogICAgICAgIHdoaWxlIChpIDwgbmFtZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHNwbGl0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2ldKS5zcGxpdCgnLScpOwogICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoOwogICAgICAgICAgICBuZXh0ID0gbm9ybWFsaXplTG9jYWxlKG5hbWVzW2kgKyAxXSk7CiAgICAgICAgICAgIG5leHQgPSBuZXh0ID8gbmV4dC5zcGxpdCgnLScpIDogbnVsbDsKICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7CiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKHNwbGl0LnNsaWNlKDAsIGopLmpvaW4oJy0nKSk7CiAgICAgICAgICAgICAgICBpZiAobG9jYWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQubGVuZ3RoID49IGogJiYgY29tcGFyZUFycmF5cyhzcGxpdCwgbmV4dCwgdHJ1ZSkgPj0gaiAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBqLS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHsKICAgICAgICB2YXIgb2xkTG9jYWxlID0gbnVsbDsKICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgaGFzTW9kdWxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBtb21lbnQubG9jYWxlKCk7CiAgICAgICAgICAgICAgICByZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7CiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGRlZmluZUxvY2FsZSBjdXJyZW50bHkgYWxzbyBzZXRzIHRoZSBnbG9iYWwgbG9jYWxlLCB3ZSB3YW50IHRvIHVuZG8gdGhhdCBmb3IgbGF6eSBsb2FkZWQgbG9jYWxlcwogICAgICAgICAgICAgICAgbW9tZW50LmxvY2FsZShvbGRMb2NhbGUpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07CiAgICB9CgogICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC4KICAgIGZ1bmN0aW9uIG1ha2VBcyhpbnB1dCwgbW9kZWwpIHsKICAgICAgICB2YXIgcmVzLCBkaWZmOwogICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHsKICAgICAgICAgICAgcmVzID0gbW9kZWwuY2xvbmUoKTsKICAgICAgICAgICAgZGlmZiA9IChtb21lbnQuaXNNb21lbnQoaW5wdXQpIHx8IGlzRGF0ZShpbnB1dCkgPwogICAgICAgICAgICAgICAgICAgICtpbnB1dCA6ICttb21lbnQoaW5wdXQpKSAtICgrcmVzKTsKICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLgogICAgICAgICAgICByZXMuX2Quc2V0VGltZSgrcmVzLl9kICsgZGlmZik7CiAgICAgICAgICAgIG1vbWVudC51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7CiAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG1vbWVudChpbnB1dCkubG9jYWwoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIExvY2FsZQogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICBleHRlbmQoTG9jYWxlLnByb3RvdHlwZSwgewoKICAgICAgICBzZXQgOiBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgICAgIHZhciBwcm9wLCBpOwogICAgICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7CiAgICAgICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoaXNbJ18nICsgaV0gPSBwcm9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIExlbmllbnQgb3JkaW5hbCBwYXJzaW5nIGFjY2VwdHMganVzdCBhIG51bWJlciBpbiBhZGRpdGlvbiB0bwogICAgICAgICAgICAvLyBudW1iZXIgKyAocG9zc2libHkpIHN0dWZmIGNvbWluZyBmcm9tIF9vcmRpbmFsUGFyc2VMZW5pZW50LgogICAgICAgICAgICB0aGlzLl9vcmRpbmFsUGFyc2VMZW5pZW50ID0gbmV3IFJlZ0V4cCh0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlICsgJ3wnICsgL1xkezEsMn0vLnNvdXJjZSk7CiAgICAgICAgfSwKCiAgICAgICAgX21vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLAogICAgICAgIG1vbnRocyA6IGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNbbS5tb250aCgpXTsKICAgICAgICB9LAoKICAgICAgICBfbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksCiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRbbS5tb250aCgpXTsKICAgICAgICB9LAoKICAgICAgICBtb250aHNQYXJzZSA6IGZ1bmN0aW9uIChtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7CiAgICAgICAgICAgIHZhciBpLCBtb20sIHJlZ2V4OwoKICAgICAgICAgICAgaWYgKCF0aGlzLl9tb250aHNQYXJzZSkgewogICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2UgPSBbXTsKICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdOwogICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgewogICAgICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5CiAgICAgICAgICAgICAgICBtb20gPSBtb21lbnQudXRjKFsyMDAwLCBpXSk7CiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmICF0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFzdHJpY3QgJiYgIXRoaXMuX21vbnRoc1BhcnNlW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXgKICAgICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NTScgJiYgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NJyAmJiB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX21vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX3dlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLAogICAgICAgIHdlZWtkYXlzIDogZnVuY3Rpb24gKG0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzW20uZGF5KCldOwogICAgICAgIH0sCgogICAgICAgIF93ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSwKICAgICAgICB3ZWVrZGF5c1Nob3J0IDogZnVuY3Rpb24gKG0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV07CiAgICAgICAgfSwKCiAgICAgICAgX3dlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLAogICAgICAgIHdlZWtkYXlzTWluIDogZnVuY3Rpb24gKG0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldOwogICAgICAgIH0sCgogICAgICAgIHdlZWtkYXlzUGFyc2UgOiBmdW5jdGlvbiAod2Vla2RheU5hbWUpIHsKICAgICAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7CgogICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2VbaV0pIHsKICAgICAgICAgICAgICAgICAgICBtb20gPSBtb21lbnQoWzIwMDAsIDFdKS5kYXkoaSk7CiAgICAgICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleAogICAgICAgICAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9sb25nRGF0ZUZvcm1hdCA6IHsKICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsCiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsCiAgICAgICAgICAgIEwgOiAnTU0vREQvWVlZWScsCiAgICAgICAgICAgIExMIDogJ01NTU0gRCwgWVlZWScsCiAgICAgICAgICAgIExMTCA6ICdNTU1NIEQsIFlZWVkgTFQnLAogICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBMVCcKICAgICAgICB9LAogICAgICAgIGxvbmdEYXRlRm9ybWF0IDogZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5XTsKICAgICAgICAgICAgaWYgKCFvdXRwdXQgJiYgdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5LnRvVXBwZXJDYXNlKCldKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV0ucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csIGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldID0gb3V0cHV0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CiAgICAgICAgfSwKCiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkgewogICAgICAgICAgICAvLyBJRTggUXVpcmtzIE1vZGUgJiBJRTcgU3RhbmRhcmRzIE1vZGUgZG8gbm90IGFsbG93IGFjY2Vzc2luZyBzdHJpbmdzIGxpa2UgYXJyYXlzCiAgICAgICAgICAgIC8vIFVzaW5nIGNoYXJBdCBzaG91bGQgYmUgbW9yZSBjb21wYXRpYmxlLgogICAgICAgICAgICByZXR1cm4gKChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSA9PT0gJ3AnKTsKICAgICAgICB9LAoKICAgICAgICBfbWVyaWRpZW1QYXJzZSA6IC9bYXBdXC4/bT9cLj8vaSwKICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikgewogICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2FtJyA6ICdBTSc7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfY2FsZW5kYXIgOiB7CiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsCiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsCiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsCiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLAogICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJywKICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCcKICAgICAgICB9LAogICAgICAgIGNhbGVuZGFyIDogZnVuY3Rpb24gKGtleSwgbW9tLCBub3cpIHsKICAgICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuX2NhbGVuZGFyW2tleV07CiAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nID8gb3V0cHV0LmFwcGx5KG1vbSwgW25vd10pIDogb3V0cHV0OwogICAgICAgIH0sCgogICAgICAgIF9yZWxhdGl2ZVRpbWUgOiB7CiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsCiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJywKICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJywKICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsCiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLAogICAgICAgICAgICBoIDogJ2FuIGhvdXInLAogICAgICAgICAgICBoaCA6ICclZCBob3VycycsCiAgICAgICAgICAgIGQgOiAnYSBkYXknLAogICAgICAgICAgICBkZCA6ICclZCBkYXlzJywKICAgICAgICAgICAgTSA6ICdhIG1vbnRoJywKICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJywKICAgICAgICAgICAgeSA6ICdhIHllYXInLAogICAgICAgICAgICB5eSA6ICclZCB5ZWFycycKICAgICAgICB9LAoKICAgICAgICByZWxhdGl2ZVRpbWUgOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7CiAgICAgICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTsKICAgICAgICAgICAgcmV0dXJuICh0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nKSA/CiAgICAgICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6CiAgICAgICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTsKICAgICAgICB9LAoKICAgICAgICBwYXN0RnV0dXJlIDogZnVuY3Rpb24gKGRpZmYsIG91dHB1dCkgewogICAgICAgICAgICB2YXIgZm9ybWF0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW2RpZmYgPiAwID8gJ2Z1dHVyZScgOiAncGFzdCddOwogICAgICAgICAgICByZXR1cm4gdHlwZW9mIGZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7CiAgICAgICAgfSwKCiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgnJWQnLCBudW1iZXIpOwogICAgICAgIH0sCiAgICAgICAgX29yZGluYWwgOiAnJWQnLAogICAgICAgIF9vcmRpbmFsUGFyc2UgOiAvXGR7MSwyfS8sCgogICAgICAgIHByZXBhcnNlIDogZnVuY3Rpb24gKHN0cmluZykgewogICAgICAgICAgICByZXR1cm4gc3RyaW5nOwogICAgICAgIH0sCgogICAgICAgIHBvc3Rmb3JtYXQgOiBmdW5jdGlvbiAoc3RyaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJpbmc7CiAgICAgICAgfSwKCiAgICAgICAgd2VlayA6IGZ1bmN0aW9uIChtb20pIHsKICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7CiAgICAgICAgfSwKCiAgICAgICAgX3dlZWsgOiB7CiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgogICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuCiAgICAgICAgfSwKCiAgICAgICAgX2ludmFsaWREYXRlOiAnSW52YWxpZCBkYXRlJywKICAgICAgICBpbnZhbGlkRGF0ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7CiAgICAgICAgfQogICAgfSk7CgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIEZvcm1hdHRpbmcKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgogICAgZnVuY3Rpb24gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhpbnB1dCkgewogICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFtbXHNcU10vKSkgewogICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxbfFxdJC9nLCAnJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXC9nLCAnJyk7CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkgewogICAgICAgIHZhciBhcnJheSA9IGZvcm1hdC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSwgaSwgbGVuZ3RoOwoKICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7CiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9tKSB7CiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJzsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gYXJyYXlbaV0gaW5zdGFuY2VvZiBGdW5jdGlvbiA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICAgICB9OwogICAgfQoKICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdAogICAgZnVuY3Rpb24gZm9ybWF0TW9tZW50KG0sIGZvcm1hdCkgewogICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7CiAgICAgICAgfQoKICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7CgogICAgICAgIGlmICghZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0pIHsKICAgICAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gPSBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XShtKTsKICAgIH0KCiAgICBmdW5jdGlvbiBleHBhbmRGb3JtYXQoZm9ybWF0LCBsb2NhbGUpIHsKICAgICAgICB2YXIgaSA9IDU7CgogICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyhpbnB1dCkgewogICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDsKICAgICAgICB9CgogICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwOwogICAgICAgIHdoaWxlIChpID49IDAgJiYgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLnRlc3QoZm9ybWF0KSkgewogICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShsb2NhbEZvcm1hdHRpbmdUb2tlbnMsIHJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2Vucyk7CiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwOwogICAgICAgICAgICBpIC09IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZm9ybWF0OwogICAgfQoKCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgUGFyc2luZwogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICAvLyBnZXQgdGhlIHJlZ2V4IHRvIGZpbmQgdGhlIG5leHQgdG9rZW4KICAgIGZ1bmN0aW9uIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSB7CiAgICAgICAgdmFyIGEsIHN0cmljdCA9IGNvbmZpZy5fc3RyaWN0OwogICAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICdRJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5PbmVEaWdpdDsKICAgICAgICBjYXNlICdEREREJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5UaHJlZURpZ2l0czsKICAgICAgICBjYXNlICdZWVlZJzoKICAgICAgICBjYXNlICdHR0dHJzoKICAgICAgICBjYXNlICdnZ2dnJzoKICAgICAgICAgICAgcmV0dXJuIHN0cmljdCA/IHBhcnNlVG9rZW5Gb3VyRGlnaXRzIDogcGFyc2VUb2tlbk9uZVRvRm91ckRpZ2l0czsKICAgICAgICBjYXNlICdZJzoKICAgICAgICBjYXNlICdHJzoKICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5TaWduZWROdW1iZXI7CiAgICAgICAgY2FzZSAnWVlZWVlZJzoKICAgICAgICBjYXNlICdZWVlZWSc6CiAgICAgICAgY2FzZSAnR0dHR0cnOgogICAgICAgIGNhc2UgJ2dnZ2dnJzoKICAgICAgICAgICAgcmV0dXJuIHN0cmljdCA/IHBhcnNlVG9rZW5TaXhEaWdpdHMgOiBwYXJzZVRva2VuT25lVG9TaXhEaWdpdHM7CiAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuT25lRGlnaXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgIGNhc2UgJ1NTJzoKICAgICAgICAgICAgaWYgKHN0cmljdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5Ud29EaWdpdHM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgIGNhc2UgJ1NTUyc6CiAgICAgICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuVGhyZWVEaWdpdHM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgIGNhc2UgJ0RERCc6CiAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuT25lVG9UaHJlZURpZ2l0czsKICAgICAgICBjYXNlICdNTU0nOgogICAgICAgIGNhc2UgJ01NTU0nOgogICAgICAgIGNhc2UgJ2RkJzoKICAgICAgICBjYXNlICdkZGQnOgogICAgICAgIGNhc2UgJ2RkZGQnOgogICAgICAgICAgICByZXR1cm4gcGFyc2VUb2tlbldvcmQ7CiAgICAgICAgY2FzZSAnYSc6CiAgICAgICAgY2FzZSAnQSc6CiAgICAgICAgICAgIHJldHVybiBjb25maWcuX2xvY2FsZS5fbWVyaWRpZW1QYXJzZTsKICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5PZmZzZXRNczsKICAgICAgICBjYXNlICdYJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5UaW1lc3RhbXBNczsKICAgICAgICBjYXNlICdaJzoKICAgICAgICBjYXNlICdaWic6CiAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuVGltZXpvbmU7CiAgICAgICAgY2FzZSAnVCc6CiAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuVDsKICAgICAgICBjYXNlICdTU1NTJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5EaWdpdHM7CiAgICAgICAgY2FzZSAnTU0nOgogICAgICAgIGNhc2UgJ0REJzoKICAgICAgICBjYXNlICdZWSc6CiAgICAgICAgY2FzZSAnR0cnOgogICAgICAgIGNhc2UgJ2dnJzoKICAgICAgICBjYXNlICdISCc6CiAgICAgICAgY2FzZSAnaGgnOgogICAgICAgIGNhc2UgJ21tJzoKICAgICAgICBjYXNlICdzcyc6CiAgICAgICAgY2FzZSAnd3cnOgogICAgICAgIGNhc2UgJ1dXJzoKICAgICAgICAgICAgcmV0dXJuIHN0cmljdCA/IHBhcnNlVG9rZW5Ud29EaWdpdHMgOiBwYXJzZVRva2VuT25lT3JUd29EaWdpdHM7CiAgICAgICAgY2FzZSAnTSc6CiAgICAgICAgY2FzZSAnRCc6CiAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgY2FzZSAnSCc6CiAgICAgICAgY2FzZSAnaCc6CiAgICAgICAgY2FzZSAnbSc6CiAgICAgICAgY2FzZSAncyc6CiAgICAgICAgY2FzZSAndyc6CiAgICAgICAgY2FzZSAnVyc6CiAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgIHJldHVybiBwYXJzZVRva2VuT25lT3JUd29EaWdpdHM7CiAgICAgICAgY2FzZSAnRG8nOgogICAgICAgICAgICByZXR1cm4gc3RyaWN0ID8gY29uZmlnLl9sb2NhbGUuX29yZGluYWxQYXJzZSA6IGNvbmZpZy5fbG9jYWxlLl9vcmRpbmFsUGFyc2VMZW5pZW50OwogICAgICAgIGRlZmF1bHQgOgogICAgICAgICAgICBhID0gbmV3IFJlZ0V4cChyZWdleHBFc2NhcGUodW5lc2NhcGVGb3JtYXQodG9rZW4ucmVwbGFjZSgnXFwnLCAnJykpLCAnaScpKTsKICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHRpbWV6b25lTWludXRlc0Zyb21TdHJpbmcoc3RyaW5nKSB7CiAgICAgICAgc3RyaW5nID0gc3RyaW5nIHx8ICcnOwogICAgICAgIHZhciBwb3NzaWJsZVR6TWF0Y2hlcyA9IChzdHJpbmcubWF0Y2gocGFyc2VUb2tlblRpbWV6b25lKSB8fCBbXSksCiAgICAgICAgICAgIHR6Q2h1bmsgPSBwb3NzaWJsZVR6TWF0Y2hlc1twb3NzaWJsZVR6TWF0Y2hlcy5sZW5ndGggLSAxXSB8fCBbXSwKICAgICAgICAgICAgcGFydHMgPSAodHpDaHVuayArICcnKS5tYXRjaChwYXJzZVRpbWV6b25lQ2h1bmtlcikgfHwgWyctJywgMCwgMF0sCiAgICAgICAgICAgIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pOwoKICAgICAgICByZXR1cm4gcGFydHNbMF0gPT09ICcrJyA/IC1taW51dGVzIDogbWludXRlczsKICAgIH0KCiAgICAvLyBmdW5jdGlvbiB0byBjb252ZXJ0IHN0cmluZyBpbnB1dCB0byBkYXRlCiAgICBmdW5jdGlvbiBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgaW5wdXQsIGNvbmZpZykgewogICAgICAgIHZhciBhLCBkYXRlUGFydEFycmF5ID0gY29uZmlnLl9hOwoKICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgLy8gUVVBUlRFUgogICAgICAgIGNhc2UgJ1EnOgogICAgICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIE1PTlRICiAgICAgICAgY2FzZSAnTScgOiAvLyBmYWxsIHRocm91Z2ggdG8gTU0KICAgICAgICBjYXNlICdNTScgOgogICAgICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ01NTScgOiAvLyBmYWxsIHRocm91Z2ggdG8gTU1NTQogICAgICAgIGNhc2UgJ01NTU0nIDoKICAgICAgICAgICAgYSA9IGNvbmZpZy5fbG9jYWxlLm1vbnRoc1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpOwogICAgICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC4KICAgICAgICAgICAgaWYgKGEgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtNT05USF0gPSBhOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uZmlnLl9wZi5pbnZhbGlkTW9udGggPSBpbnB1dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAvLyBEQVkgT0YgTU9OVEgKICAgICAgICBjYXNlICdEJyA6IC8vIGZhbGwgdGhyb3VnaCB0byBERAogICAgICAgIGNhc2UgJ0REJyA6CiAgICAgICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBkYXRlUGFydEFycmF5W0RBVEVdID0gdG9JbnQoaW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0RvJyA6CiAgICAgICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBkYXRlUGFydEFycmF5W0RBVEVdID0gdG9JbnQocGFyc2VJbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5tYXRjaCgvXGR7MSwyfS8pWzBdLCAxMCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIERBWSBPRiBZRUFSCiAgICAgICAgY2FzZSAnREREJyA6IC8vIGZhbGwgdGhyb3VnaCB0byBERERECiAgICAgICAgY2FzZSAnRERERCcgOgogICAgICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0b0ludChpbnB1dCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIFlFQVIKICAgICAgICBjYXNlICdZWScgOgogICAgICAgICAgICBkYXRlUGFydEFycmF5W1lFQVJdID0gbW9tZW50LnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnWVlZWScgOgogICAgICAgIGNhc2UgJ1lZWVlZJyA6CiAgICAgICAgY2FzZSAnWVlZWVlZJyA6CiAgICAgICAgICAgIGRhdGVQYXJ0QXJyYXlbWUVBUl0gPSB0b0ludChpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIEFNIC8gUE0KICAgICAgICBjYXNlICdhJyA6IC8vIGZhbGwgdGhyb3VnaCB0byBBCiAgICAgICAgY2FzZSAnQScgOgogICAgICAgICAgICBjb25maWcuX2lzUG0gPSBjb25maWcuX2xvY2FsZS5pc1BNKGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gSE9VUgogICAgICAgIGNhc2UgJ2gnIDogLy8gZmFsbCB0aHJvdWdoIHRvIGhoCiAgICAgICAgY2FzZSAnaGgnIDoKICAgICAgICAgICAgY29uZmlnLl9wZi5iaWdIb3VyID0gdHJ1ZTsKICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgIGNhc2UgJ0gnIDogLy8gZmFsbCB0aHJvdWdoIHRvIEhICiAgICAgICAgY2FzZSAnSEgnIDoKICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtIT1VSXSA9IHRvSW50KGlucHV0KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gTUlOVVRFCiAgICAgICAgY2FzZSAnbScgOiAvLyBmYWxsIHRocm91Z2ggdG8gbW0KICAgICAgICBjYXNlICdtbScgOgogICAgICAgICAgICBkYXRlUGFydEFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIFNFQ09ORAogICAgICAgIGNhc2UgJ3MnIDogLy8gZmFsbCB0aHJvdWdoIHRvIHNzCiAgICAgICAgY2FzZSAnc3MnIDoKICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtTRUNPTkRdID0gdG9JbnQoaW5wdXQpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAvLyBNSUxMSVNFQ09ORAogICAgICAgIGNhc2UgJ1MnIDoKICAgICAgICBjYXNlICdTUycgOgogICAgICAgIGNhc2UgJ1NTUycgOgogICAgICAgIGNhc2UgJ1NTU1MnIDoKICAgICAgICAgICAgZGF0ZVBhcnRBcnJheVtNSUxMSVNFQ09ORF0gPSB0b0ludCgoJzAuJyArIGlucHV0KSAqIDEwMDApOwogICAgICAgICAgICBicmVhazsKICAgICAgICAvLyBVTklYIE9GRlNFVCAoTUlMTElTRUNPTkRTKQogICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAvLyBVTklYIFRJTUVTVEFNUCBXSVRIIE1TCiAgICAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQpICogMTAwMCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIFRJTUVaT05FCiAgICAgICAgY2FzZSAnWicgOiAvLyBmYWxsIHRocm91Z2ggdG8gWloKICAgICAgICBjYXNlICdaWicgOgogICAgICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7CiAgICAgICAgICAgIGNvbmZpZy5fdHptID0gdGltZXpvbmVNaW51dGVzRnJvbVN0cmluZyhpbnB1dCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIC8vIFdFRUtEQVkgLSBodW1hbgogICAgICAgIGNhc2UgJ2RkJzoKICAgICAgICBjYXNlICdkZGQnOgogICAgICAgIGNhc2UgJ2RkZGQnOgogICAgICAgICAgICBhID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7CiAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZAogICAgICAgICAgICBpZiAoYSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307CiAgICAgICAgICAgICAgICBjb25maWcuX3dbJ2QnXSA9IGE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25maWcuX3BmLmludmFsaWRXZWVrZGF5ID0gaW5wdXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gV0VFSywgV0VFSyBEQVkgLSBudW1lcmljCiAgICAgICAgY2FzZSAndyc6CiAgICAgICAgY2FzZSAnd3cnOgogICAgICAgIGNhc2UgJ1cnOgogICAgICAgIGNhc2UgJ1dXJzoKICAgICAgICBjYXNlICdkJzoKICAgICAgICBjYXNlICdlJzoKICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgdG9rZW4gPSB0b2tlbi5zdWJzdHIoMCwgMSk7CiAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgICBjYXNlICdnZ2dnJzoKICAgICAgICBjYXNlICdHR0dHJzoKICAgICAgICBjYXNlICdHR0dHRyc6CiAgICAgICAgICAgIHRva2VuID0gdG9rZW4uc3Vic3RyKDAsIDIpOwogICAgICAgICAgICBpZiAoaW5wdXQpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5fdyA9IGNvbmZpZy5fdyB8fCB7fTsKICAgICAgICAgICAgICAgIGNvbmZpZy5fd1t0b2tlbl0gPSB0b0ludChpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZ2cnOgogICAgICAgIGNhc2UgJ0dHJzoKICAgICAgICAgICAgY29uZmlnLl93ID0gY29uZmlnLl93IHx8IHt9OwogICAgICAgICAgICBjb25maWcuX3dbdG9rZW5dID0gbW9tZW50LnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykgewogICAgICAgIHZhciB3LCB3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3ksIHRlbXA7CgogICAgICAgIHcgPSBjb25maWcuX3c7CiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkgewogICAgICAgICAgICBkb3cgPSAxOwogICAgICAgICAgICBkb3kgPSA0OwoKICAgICAgICAgICAgLy8gVE9ETzogV2UgbmVlZCB0byB0YWtlIHRoZSBjdXJyZW50IGlzb1dlZWtZZWFyLCBidXQgdGhhdCBkZXBlbmRzIG9uCiAgICAgICAgICAgIC8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGUKICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmQKICAgICAgICAgICAgLy8gY3JlYXRlIG5vdykuCiAgICAgICAgICAgIHdlZWtZZWFyID0gZGZsKHcuR0csIGNvbmZpZy5fYVtZRUFSXSwgd2Vla09mWWVhcihtb21lbnQoKSwgMSwgNCkueWVhcik7CiAgICAgICAgICAgIHdlZWsgPSBkZmwody5XLCAxKTsKICAgICAgICAgICAgd2Vla2RheSA9IGRmbCh3LkUsIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdzsKICAgICAgICAgICAgZG95ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG95OwoKICAgICAgICAgICAgd2Vla1llYXIgPSBkZmwody5nZywgY29uZmlnLl9hW1lFQVJdLCB3ZWVrT2ZZZWFyKG1vbWVudCgpLCBkb3csIGRveSkueWVhcik7CiAgICAgICAgICAgIHdlZWsgPSBkZmwody53LCAxKTsKCiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrCiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kOwogICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCBkb3cpIHsKICAgICAgICAgICAgICAgICAgICArK3dlZWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAody5lICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIC8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5pbmcgb2Ygd2VlawogICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYmVnaW5pbmcgb2Ygd2VlawogICAgICAgICAgICAgICAgd2Vla2RheSA9IGRvdzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0ZW1wID0gZGF5T2ZZZWFyRnJvbVdlZWtzKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3ksIGRvdyk7CgogICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjsKICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyOwogICAgfQoKICAgIC8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLgogICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3cKICAgIC8vIG5vdGU6IGFsbCB2YWx1ZXMgcGFzdCB0aGUgeWVhciBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlIHZhbHVlLgogICAgLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdCiAgICBmdW5jdGlvbiBkYXRlRnJvbUNvbmZpZyhjb25maWcpIHsKICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIHllYXJUb1VzZTsKCiAgICAgICAgaWYgKGNvbmZpZy5fZCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlQXJyYXkoY29uZmlnKTsKCiAgICAgICAgLy9jb21wdXRlIGRheSBvZiB0aGUgeWVhciBmcm9tIHdlZWtzIGFuZCB3ZWVrZGF5cwogICAgICAgIGlmIChjb25maWcuX3cgJiYgY29uZmlnLl9hW0RBVEVdID09IG51bGwgJiYgY29uZmlnLl9hW01PTlRIXSA9PSBudWxsKSB7CiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzCiAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyKSB7CiAgICAgICAgICAgIHllYXJUb1VzZSA9IGRmbChjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTsKCiAgICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSkgewogICAgICAgICAgICAgICAgY29uZmlnLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXIgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkYXRlID0gbWFrZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7CiAgICAgICAgICAgIGNvbmZpZy5fYVtNT05USF0gPSBkYXRlLmdldFVUQ01vbnRoKCk7CiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpOwogICAgICAgIH0KCiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuCiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheQogICAgICAgIC8vICogaWYgZGF5IG9mIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG1vbnRoIGFuZCB5ZWFyCiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXIKICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmcKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMyAmJiBjb25maWcuX2FbaV0gPT0gbnVsbDsgKytpKSB7CiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07CiAgICAgICAgfQoKICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWUKICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykgewogICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9IChjb25maWcuX2FbaV0gPT0gbnVsbCkgPyAoaSA9PT0gMiA/IDEgOiAwKSA6IGNvbmZpZy5fYVtpXTsKICAgICAgICB9CgogICAgICAgIC8vIENoZWNrIGZvciAyNDowMDowMC4wMDAKICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJgogICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiYKICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtTRUNPTkRdID09PSAwICYmCiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwKSB7CiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7CiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDA7CiAgICAgICAgfQoKICAgICAgICBjb25maWcuX2QgPSAoY29uZmlnLl91c2VVVEMgPyBtYWtlVVRDRGF0ZSA6IG1ha2VEYXRlKS5hcHBseShudWxsLCBpbnB1dCk7CiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgem9uZSBjYW4gYmUgY2hhbmdlZAogICAgICAgIC8vIHdpdGggcGFyc2Vab25lLgogICAgICAgIGlmIChjb25maWcuX3R6bSAhPSBudWxsKSB7CiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgKyBjb25maWcuX3R6bSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7CiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0OwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkYXRlRnJvbU9iamVjdChjb25maWcpIHsKICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0OwoKICAgICAgICBpZiAoY29uZmlnLl9kKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7CiAgICAgICAgY29uZmlnLl9hID0gWwogICAgICAgICAgICBub3JtYWxpemVkSW5wdXQueWVhciwKICAgICAgICAgICAgbm9ybWFsaXplZElucHV0Lm1vbnRoLAogICAgICAgICAgICBub3JtYWxpemVkSW5wdXQuZGF5IHx8IG5vcm1hbGl6ZWRJbnB1dC5kYXRlLAogICAgICAgICAgICBub3JtYWxpemVkSW5wdXQuaG91ciwKICAgICAgICAgICAgbm9ybWFsaXplZElucHV0Lm1pbnV0ZSwKICAgICAgICAgICAgbm9ybWFsaXplZElucHV0LnNlY29uZCwKICAgICAgICAgICAgbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kCiAgICAgICAgXTsKCiAgICAgICAgZGF0ZUZyb21Db25maWcoY29uZmlnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZykgewogICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgICAgIGlmIChjb25maWcuX3VzZVVUQykgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgbm93LmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgICAgICAgICAgICBub3cuZ2V0VVRDTW9udGgoKSwKICAgICAgICAgICAgICAgIG5vdy5nZXRVVENEYXRlKCkKICAgICAgICAgICAgXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gW25vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKV07CiAgICAgICAgfQogICAgfQoKICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmcKICAgIGZ1bmN0aW9uIG1ha2VEYXRlRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpIHsKICAgICAgICBpZiAoY29uZmlnLl9mID09PSBtb21lbnQuSVNPXzg2MDEpIHsKICAgICAgICAgICAgcGFyc2VJU08oY29uZmlnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uZmlnLl9hID0gW107CiAgICAgICAgY29uZmlnLl9wZi5lbXB0eSA9IHRydWU7CgogICAgICAgIC8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgCiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLAogICAgICAgICAgICBpLCBwYXJzZWRJbnB1dCwgdG9rZW5zLCB0b2tlbiwgc2tpcHBlZCwKICAgICAgICAgICAgc3RyaW5nTGVuZ3RoID0gc3RyaW5nLmxlbmd0aCwKICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7CgogICAgICAgIHRva2VucyA9IGV4cGFuZEZvcm1hdChjb25maWcuX2YsIGNvbmZpZy5fbG9jYWxlKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSB8fCBbXTsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTsKICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdOwogICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHsKICAgICAgICAgICAgICAgIHNraXBwZWQgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSk7CiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9wZi51bnVzZWRJbnB1dC5wdXNoKHNraXBwZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoICs9IHBhcnNlZElucHV0Lmxlbmd0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuCiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0pIHsKICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5fcGYuZW1wdHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5fcGYudW51c2VkVG9rZW5zLnB1c2godG9rZW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIHBhcnNlZElucHV0LCBjb25maWcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJzZWRJbnB1dCkgewogICAgICAgICAgICAgICAgY29uZmlnLl9wZi51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmcKICAgICAgICBjb25maWcuX3BmLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoOwogICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCkgewogICAgICAgICAgICBjb25maWcuX3BmLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyCiAgICAgICAgaWYgKGNvbmZpZy5fcGYuYmlnSG91ciA9PT0gdHJ1ZSAmJiBjb25maWcuX2FbSE9VUl0gPD0gMTIpIHsKICAgICAgICAgICAgY29uZmlnLl9wZi5iaWdIb3VyID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICAvLyBoYW5kbGUgYW0gcG0KICAgICAgICBpZiAoY29uZmlnLl9pc1BtICYmIGNvbmZpZy5fYVtIT1VSXSA8IDEyKSB7CiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSArPSAxMjsKICAgICAgICB9CiAgICAgICAgLy8gaWYgaXMgMTIgYW0sIGNoYW5nZSBob3VycyB0byAwCiAgICAgICAgaWYgKGNvbmZpZy5faXNQbSA9PT0gZmFsc2UgJiYgY29uZmlnLl9hW0hPVVJdID09PSAxMikgewogICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwOwogICAgICAgIH0KICAgICAgICBkYXRlRnJvbUNvbmZpZyhjb25maWcpOwogICAgICAgIGNoZWNrT3ZlcmZsb3coY29uZmlnKTsKICAgIH0KCiAgICBmdW5jdGlvbiB1bmVzY2FwZUZvcm1hdChzKSB7CiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoXFspfFxcKFxdKXxcWyhbXlxdXFtdKilcXXxcXCguKS9nLCBmdW5jdGlvbiAobWF0Y2hlZCwgcDEsIHAyLCBwMywgcDQpIHsKICAgICAgICAgICAgcmV0dXJuIHAxIHx8IHAyIHx8IHAzIHx8IHA0OwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIENvZGUgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NjE0OTMvaXMtdGhlcmUtYS1yZWdleHAtZXNjYXBlLWZ1bmN0aW9uLWluLWphdmFzY3JpcHQKICAgIGZ1bmN0aW9uIHJlZ2V4cEVzY2FwZShzKSB7CiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csICdcXCQmJyk7CiAgICB9CgogICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgYXJyYXkgb2YgZm9ybWF0IHN0cmluZ3MKICAgIGZ1bmN0aW9uIG1ha2VEYXRlRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykgewogICAgICAgIHZhciB0ZW1wQ29uZmlnLAogICAgICAgICAgICBiZXN0TW9tZW50LAoKICAgICAgICAgICAgc2NvcmVUb0JlYXQsCiAgICAgICAgICAgIGksCiAgICAgICAgICAgIGN1cnJlbnRTY29yZTsKCiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgY29uZmlnLl9wZi5pbnZhbGlkRm9ybWF0ID0gdHJ1ZTsKICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBjdXJyZW50U2NvcmUgPSAwOwogICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTsKICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRlbXBDb25maWcuX3VzZVVUQyA9IGNvbmZpZy5fdXNlVVRDOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXBDb25maWcuX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpOwogICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldOwogICAgICAgICAgICBtYWtlRGF0ZUZyb21TdHJpbmdBbmRGb3JtYXQodGVtcENvbmZpZyk7CgogICAgICAgICAgICBpZiAoIWlzVmFsaWQodGVtcENvbmZpZykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgdGhhdCB3YXMgbm90IHBhcnNlZCBhZGQgYSBwZW5hbHR5IGZvciB0aGF0IGZvcm1hdAogICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gdGVtcENvbmZpZy5fcGYuY2hhcnNMZWZ0T3ZlcjsKCiAgICAgICAgICAgIC8vb3IgdG9rZW5zCiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSB0ZW1wQ29uZmlnLl9wZi51bnVzZWRUb2tlbnMubGVuZ3RoICogMTA7CgogICAgICAgICAgICB0ZW1wQ29uZmlnLl9wZi5zY29yZSA9IGN1cnJlbnRTY29yZTsKCiAgICAgICAgICAgIGlmIChzY29yZVRvQmVhdCA9PSBudWxsIHx8IGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7CiAgICAgICAgICAgICAgICBzY29yZVRvQmVhdCA9IGN1cnJlbnRTY29yZTsKICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpOwogICAgfQoKICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0CiAgICBmdW5jdGlvbiBwYXJzZUlTTyhjb25maWcpIHsKICAgICAgICB2YXIgaSwgbCwKICAgICAgICAgICAgc3RyaW5nID0gY29uZmlnLl9pLAogICAgICAgICAgICBtYXRjaCA9IGlzb1JlZ2V4LmV4ZWMoc3RyaW5nKTsKCiAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgIGNvbmZpZy5fcGYuaXNvID0gdHJ1ZTsKICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGlzb0RhdGVzW2ldWzFdLmV4ZWMoc3RyaW5nKSkgewogICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoWzVdIHNob3VsZCBiZSAnVCcgb3IgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9mID0gaXNvRGF0ZXNbaV1bMF0gKyAobWF0Y2hbNl0gfHwgJyAnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNvVGltZXNbaV1bMV0uZXhlYyhzdHJpbmcpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9mICs9IGlzb1RpbWVzW2ldWzBdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzdHJpbmcubWF0Y2gocGFyc2VUb2tlblRpbWV6b25lKSkgewogICAgICAgICAgICAgICAgY29uZmlnLl9mICs9ICdaJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYWtlRGF0ZUZyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXQgb3IgZmFsbGJhY2sKICAgIGZ1bmN0aW9uIG1ha2VEYXRlRnJvbVN0cmluZyhjb25maWcpIHsKICAgICAgICBwYXJzZUlTTyhjb25maWcpOwogICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7CiAgICAgICAgICAgIG1vbWVudC5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBtYXAoYXJyLCBmbikgewogICAgICAgIHZhciByZXMgPSBbXSwgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIHJlcy5wdXNoKGZuKGFycltpXSwgaSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VEYXRlRnJvbUlucHV0KGNvbmZpZykgewogICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faSwgbWF0Y2hlZDsKICAgICAgICBpZiAoaW5wdXQgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgpOwogICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkgewogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgraW5wdXQpOwogICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhpbnB1dCkpICE9PSBudWxsKSB7CiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKCttYXRjaGVkWzFdKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgbWFrZURhdGVGcm9tU3RyaW5nKGNvbmZpZyk7CiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGlucHV0KSkgewogICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHsKICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmosIDEwKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGRhdGVGcm9tQ29uZmlnKGNvbmZpZyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YoaW5wdXQpID09PSAnb2JqZWN0JykgewogICAgICAgICAgICBkYXRlRnJvbU9iamVjdChjb25maWcpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGlucHV0KSA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHMKICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG1vbWVudC5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhjb25maWcpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBtYWtlRGF0ZSh5LCBtLCBkLCBoLCBNLCBzLCBtcykgewogICAgICAgIC8vY2FuJ3QganVzdCBhcHBseSgpIHRvIGNyZWF0ZSBhIGRhdGU6CiAgICAgICAgLy9odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4MTM0OC9pbnN0YW50aWF0aW5nLWEtamF2YXNjcmlwdC1vYmplY3QtYnktY2FsbGluZy1wcm90b3R5cGUtY29uc3RydWN0b3ItYXBwbHkKICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTsKCiAgICAgICAgLy90aGUgZGF0ZSBjb25zdHJ1Y3RvciBkb2Vzbid0IGFjY2VwdCB5ZWFycyA8IDE5NzAKICAgICAgICBpZiAoeSA8IDE5NzApIHsKICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRhdGU7CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZVVUQ0RhdGUoeSkgewogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7CiAgICAgICAgaWYgKHkgPCAxOTcwKSB7CiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkYXRlOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7CiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gcGFyc2VJbnQoaW5wdXQsIDEwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICB9CgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIFJlbGF0aXZlIFRpbWUKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgogICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemUKICAgIGZ1bmN0aW9uIHN1YnN0aXR1dGVUaW1lQWdvKHN0cmluZywgbnVtYmVyLCB3aXRob3V0U3VmZml4LCBpc0Z1dHVyZSwgbG9jYWxlKSB7CiAgICAgICAgcmV0dXJuIGxvY2FsZS5yZWxhdGl2ZVRpbWUobnVtYmVyIHx8IDEsICEhd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSk7CiAgICB9CgogICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCBsb2NhbGUpIHsKICAgICAgICB2YXIgZHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpLAogICAgICAgICAgICBzZWNvbmRzID0gcm91bmQoZHVyYXRpb24uYXMoJ3MnKSksCiAgICAgICAgICAgIG1pbnV0ZXMgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKSwKICAgICAgICAgICAgaG91cnMgPSByb3VuZChkdXJhdGlvbi5hcygnaCcpKSwKICAgICAgICAgICAgZGF5cyA9IHJvdW5kKGR1cmF0aW9uLmFzKCdkJykpLAogICAgICAgICAgICBtb250aHMgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKSwKICAgICAgICAgICAgeWVhcnMgPSByb3VuZChkdXJhdGlvbi5hcygneScpKSwKCiAgICAgICAgICAgIGFyZ3MgPSBzZWNvbmRzIDwgcmVsYXRpdmVUaW1lVGhyZXNob2xkcy5zICYmIFsncycsIHNlY29uZHNdIHx8CiAgICAgICAgICAgICAgICBtaW51dGVzID09PSAxICYmIFsnbSddIHx8CiAgICAgICAgICAgICAgICBtaW51dGVzIDwgcmVsYXRpdmVUaW1lVGhyZXNob2xkcy5tICYmIFsnbW0nLCBtaW51dGVzXSB8fAogICAgICAgICAgICAgICAgaG91cnMgPT09IDEgJiYgWydoJ10gfHwKICAgICAgICAgICAgICAgIGhvdXJzIDwgcmVsYXRpdmVUaW1lVGhyZXNob2xkcy5oICYmIFsnaGgnLCBob3Vyc10gfHwKICAgICAgICAgICAgICAgIGRheXMgPT09IDEgJiYgWydkJ10gfHwKICAgICAgICAgICAgICAgIGRheXMgPCByZWxhdGl2ZVRpbWVUaHJlc2hvbGRzLmQgJiYgWydkZCcsIGRheXNdIHx8CiAgICAgICAgICAgICAgICBtb250aHMgPT09IDEgJiYgWydNJ10gfHwKICAgICAgICAgICAgICAgIG1vbnRocyA8IHJlbGF0aXZlVGltZVRocmVzaG9sZHMuTSAmJiBbJ01NJywgbW9udGhzXSB8fAogICAgICAgICAgICAgICAgeWVhcnMgPT09IDEgJiYgWyd5J10gfHwgWyd5eScsIHllYXJzXTsKCiAgICAgICAgYXJnc1syXSA9IHdpdGhvdXRTdWZmaXg7CiAgICAgICAgYXJnc1szXSA9ICtwb3NOZWdEdXJhdGlvbiA+IDA7CiAgICAgICAgYXJnc1s0XSA9IGxvY2FsZTsKICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkoe30sIGFyZ3MpOwogICAgfQoKCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgV2VlayBvZiBZZWFyCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKICAgIC8vIGZpcnN0RGF5T2ZXZWVrICAgICAgIDAgPSBzdW4sIDYgPSBzYXQKICAgIC8vICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXkgb2YgdGhlIHdlZWsgdGhhdCBzdGFydHMgdGhlIHdlZWsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgICh1c3VhbGx5IHN1bmRheSBvciBtb25kYXkpCiAgICAvLyBmaXJzdERheU9mV2Vla09mWWVhciAwID0gc3VuLCA2ID0gc2F0CiAgICAvLyAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlyc3Qgd2VlayBpcyB0aGUgd2VlayB0aGF0IGNvbnRhaW5zIHRoZSBmaXJzdAogICAgLy8gICAgICAgICAgICAgICAgICAgICAgb2YgdGhpcyBkYXkgb2YgdGhlIHdlZWsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgIChlZy4gSVNPIHdlZWtzIHVzZSB0aHVyc2RheSAoNCkpCiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZmlyc3REYXlPZldlZWssIGZpcnN0RGF5T2ZXZWVrT2ZZZWFyKSB7CiAgICAgICAgdmFyIGVuZCA9IGZpcnN0RGF5T2ZXZWVrT2ZZZWFyIC0gZmlyc3REYXlPZldlZWssCiAgICAgICAgICAgIGRheXNUb0RheU9mV2VlayA9IGZpcnN0RGF5T2ZXZWVrT2ZZZWFyIC0gbW9tLmRheSgpLAogICAgICAgICAgICBhZGp1c3RlZE1vbWVudDsKCgogICAgICAgIGlmIChkYXlzVG9EYXlPZldlZWsgPiBlbmQpIHsKICAgICAgICAgICAgZGF5c1RvRGF5T2ZXZWVrIC09IDc7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGF5c1RvRGF5T2ZXZWVrIDwgZW5kIC0gNykgewogICAgICAgICAgICBkYXlzVG9EYXlPZldlZWsgKz0gNzsKICAgICAgICB9CgogICAgICAgIGFkanVzdGVkTW9tZW50ID0gbW9tZW50KG1vbSkuYWRkKGRheXNUb0RheU9mV2VlaywgJ2QnKTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB3ZWVrOiBNYXRoLmNlaWwoYWRqdXN0ZWRNb21lbnQuZGF5T2ZZZWFyKCkgLyA3KSwKICAgICAgICAgICAgeWVhcjogYWRqdXN0ZWRNb21lbnQueWVhcigpCiAgICAgICAgfTsKICAgIH0KCiAgICAvL2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19hX2RhdGVfZ2l2ZW5fdGhlX3llYXIuMkNfd2Vla19udW1iZXJfYW5kX3dlZWtkYXkKICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBmaXJzdERheU9mV2Vla09mWWVhciwgZmlyc3REYXlPZldlZWspIHsKICAgICAgICB2YXIgZCA9IG1ha2VVVENEYXRlKHllYXIsIDAsIDEpLmdldFVUQ0RheSgpLCBkYXlzVG9BZGQsIGRheU9mWWVhcjsKCiAgICAgICAgZCA9IGQgPT09IDAgPyA3IDogZDsKICAgICAgICB3ZWVrZGF5ID0gd2Vla2RheSAhPSBudWxsID8gd2Vla2RheSA6IGZpcnN0RGF5T2ZXZWVrOwogICAgICAgIGRheXNUb0FkZCA9IGZpcnN0RGF5T2ZXZWVrIC0gZCArIChkID4gZmlyc3REYXlPZldlZWtPZlllYXIgPyA3IDogMCkgLSAoZCA8IGZpcnN0RGF5T2ZXZWVrID8gNyA6IDApOwogICAgICAgIGRheU9mWWVhciA9IDcgKiAod2VlayAtIDEpICsgKHdlZWtkYXkgLSBmaXJzdERheU9mV2VlaykgKyBkYXlzVG9BZGQgKyAxOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB5ZWFyOiBkYXlPZlllYXIgPiAwID8geWVhciA6IHllYXIgLSAxLAogICAgICAgICAgICBkYXlPZlllYXI6IGRheU9mWWVhciA+IDAgPyAgZGF5T2ZZZWFyIDogZGF5c0luWWVhcih5ZWFyIC0gMSkgKyBkYXlPZlllYXIKICAgICAgICB9OwogICAgfQoKICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgICBUb3AgTGV2ZWwgRnVuY3Rpb25zCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgZnVuY3Rpb24gbWFrZU1vbWVudChjb25maWcpIHsKICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksCiAgICAgICAgICAgIGZvcm1hdCA9IGNvbmZpZy5fZiwKICAgICAgICAgICAgcmVzOwoKICAgICAgICBjb25maWcuX2xvY2FsZSA9IGNvbmZpZy5fbG9jYWxlIHx8IG1vbWVudC5sb2NhbGVEYXRhKGNvbmZpZy5fbCk7CgogICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCAoZm9ybWF0ID09PSB1bmRlZmluZWQgJiYgaW5wdXQgPT09ICcnKSkgewogICAgICAgICAgICByZXR1cm4gbW9tZW50LmludmFsaWQoe251bGxJbnB1dDogdHJ1ZX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7CiAgICAgICAgfQoKICAgICAgICBpZiAobW9tZW50LmlzTW9tZW50KGlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChpbnB1dCwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoZm9ybWF0KSkgewogICAgICAgICAgICAgICAgbWFrZURhdGVGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG1ha2VEYXRlRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbWFrZURhdGVGcm9tSW5wdXQoY29uZmlnKTsKICAgICAgICB9CgogICAgICAgIHJlcyA9IG5ldyBNb21lbnQoY29uZmlnKTsKICAgICAgICBpZiAocmVzLl9uZXh0RGF5KSB7CiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVAogICAgICAgICAgICByZXMuYWRkKDEsICdkJyk7CiAgICAgICAgICAgIHJlcy5fbmV4dERheSA9IHVuZGVmaW5lZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXM7CiAgICB9CgogICAgbW9tZW50ID0gZnVuY3Rpb24gKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7CiAgICAgICAgdmFyIGM7CgogICAgICAgIGlmICh0eXBlb2YobG9jYWxlKSA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTsKICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS4KICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyMwogICAgICAgIGMgPSB7fTsKICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlOwogICAgICAgIGMuX2kgPSBpbnB1dDsKICAgICAgICBjLl9mID0gZm9ybWF0OwogICAgICAgIGMuX2wgPSBsb2NhbGU7CiAgICAgICAgYy5fc3RyaWN0ID0gc3RyaWN0OwogICAgICAgIGMuX2lzVVRDID0gZmFsc2U7CiAgICAgICAgYy5fcGYgPSBkZWZhdWx0UGFyc2luZ0ZsYWdzKCk7CgogICAgICAgIHJldHVybiBtYWtlTW9tZW50KGMpOwogICAgfTsKCiAgICBtb21lbnQuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID0gZmFsc2U7CgogICAgbW9tZW50LmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrID0gZGVwcmVjYXRlKAogICAgICAgICdtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyAnICsKICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyBtYWpvciAnICsKICAgICAgICAncmVsZWFzZS4gUGxlYXNlIHJlZmVyIHRvICcgKwogICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3IgbW9yZSBpbmZvLicsCiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpOwogICAgICAgIH0KICAgICk7CgogICAgLy8gUGljayBhIG1vbWVudCBtIGZyb20gbW9tZW50cyBzbyB0aGF0IG1bZm5dKG90aGVyKSBpcyB0cnVlIGZvciBhbGwKICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS4KICAgIC8vCiAgICAvLyBtb21lbnRzIHNob3VsZCBlaXRoZXIgYmUgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMgb3IgYW4gYXJyYXksIHdob3NlCiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLgogICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7CiAgICAgICAgdmFyIHJlcywgaTsKICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkgewogICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTsKICAgICAgICB9CiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gbW9tZW50KCk7CiAgICAgICAgfQogICAgICAgIHJlcyA9IG1vbWVudHNbMF07CiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgaWYgKG1vbWVudHNbaV1bZm5dKHJlcykpIHsKICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBtb21lbnQubWluID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOwoKICAgICAgICByZXR1cm4gcGlja0J5KCdpc0JlZm9yZScsIGFyZ3MpOwogICAgfTsKCiAgICBtb21lbnQubWF4ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOwoKICAgICAgICByZXR1cm4gcGlja0J5KCdpc0FmdGVyJywgYXJncyk7CiAgICB9OwoKICAgIC8vIGNyZWF0aW5nIHdpdGggdXRjCiAgICBtb21lbnQudXRjID0gZnVuY3Rpb24gKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7CiAgICAgICAgdmFyIGM7CgogICAgICAgIGlmICh0eXBlb2YobG9jYWxlKSA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTsKICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS4KICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyMwogICAgICAgIGMgPSB7fTsKICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlOwogICAgICAgIGMuX3VzZVVUQyA9IHRydWU7CiAgICAgICAgYy5faXNVVEMgPSB0cnVlOwogICAgICAgIGMuX2wgPSBsb2NhbGU7CiAgICAgICAgYy5faSA9IGlucHV0OwogICAgICAgIGMuX2YgPSBmb3JtYXQ7CiAgICAgICAgYy5fc3RyaWN0ID0gc3RyaWN0OwogICAgICAgIGMuX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpOwoKICAgICAgICByZXR1cm4gbWFrZU1vbWVudChjKS51dGMoKTsKICAgIH07CgogICAgLy8gY3JlYXRpbmcgd2l0aCB1bml4IHRpbWVzdGFtcCAoaW4gc2Vjb25kcykKICAgIG1vbWVudC51bml4ID0gZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgcmV0dXJuIG1vbWVudChpbnB1dCAqIDEwMDApOwogICAgfTsKCiAgICAvLyBkdXJhdGlvbgogICAgbW9tZW50LmR1cmF0aW9uID0gZnVuY3Rpb24gKGlucHV0LCBrZXkpIHsKICAgICAgICB2YXIgZHVyYXRpb24gPSBpbnB1dCwKICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmQKICAgICAgICAgICAgbWF0Y2ggPSBudWxsLAogICAgICAgICAgICBzaWduLAogICAgICAgICAgICByZXQsCiAgICAgICAgICAgIHBhcnNlSXNvLAogICAgICAgICAgICBkaWZmUmVzOwoKICAgICAgICBpZiAobW9tZW50LmlzRHVyYXRpb24oaW5wdXQpKSB7CiAgICAgICAgICAgIGR1cmF0aW9uID0gewogICAgICAgICAgICAgICAgbXM6IGlucHV0Ll9taWxsaXNlY29uZHMsCiAgICAgICAgICAgICAgICBkOiBpbnB1dC5fZGF5cywKICAgICAgICAgICAgICAgIE06IGlucHV0Ll9tb250aHMKICAgICAgICAgICAgfTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZHVyYXRpb24gPSB7fTsKICAgICAgICAgICAgaWYgKGtleSkgewogICAgICAgICAgICAgICAgZHVyYXRpb25ba2V5XSA9IGlucHV0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlzZWNvbmRzID0gaW5wdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0VGltZVNwYW5Kc29uUmVnZXguZXhlYyhpbnB1dCkpKSB7CiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7CiAgICAgICAgICAgIGR1cmF0aW9uID0gewogICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgIGQ6IHRvSW50KG1hdGNoW0RBVEVdKSAqIHNpZ24sCiAgICAgICAgICAgICAgICBoOiB0b0ludChtYXRjaFtIT1VSXSkgKiBzaWduLAogICAgICAgICAgICAgICAgbTogdG9JbnQobWF0Y2hbTUlOVVRFXSkgKiBzaWduLAogICAgICAgICAgICAgICAgczogdG9JbnQobWF0Y2hbU0VDT05EXSkgKiBzaWduLAogICAgICAgICAgICAgICAgbXM6IHRvSW50KG1hdGNoW01JTExJU0VDT05EXSkgKiBzaWduCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIGlmICghIShtYXRjaCA9IGlzb0R1cmF0aW9uUmVnZXguZXhlYyhpbnB1dCkpKSB7CiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7CiAgICAgICAgICAgIHBhcnNlSXNvID0gZnVuY3Rpb24gKGlucCkgewogICAgICAgICAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc28KICAgICAgICAgICAgICAgIC8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLgogICAgICAgICAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LgogICAgICAgICAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7CiAgICAgICAgICAgICAgICAvLyBhcHBseSBzaWduIHdoaWxlIHdlJ3JlIGF0IGl0CiAgICAgICAgICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGR1cmF0aW9uID0gewogICAgICAgICAgICAgICAgeTogcGFyc2VJc28obWF0Y2hbMl0pLAogICAgICAgICAgICAgICAgTTogcGFyc2VJc28obWF0Y2hbM10pLAogICAgICAgICAgICAgICAgZDogcGFyc2VJc28obWF0Y2hbNF0pLAogICAgICAgICAgICAgICAgaDogcGFyc2VJc28obWF0Y2hbNV0pLAogICAgICAgICAgICAgICAgbTogcGFyc2VJc28obWF0Y2hbNl0pLAogICAgICAgICAgICAgICAgczogcGFyc2VJc28obWF0Y2hbN10pLAogICAgICAgICAgICAgICAgdzogcGFyc2VJc28obWF0Y2hbOF0pCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb24gPT09ICdvYmplY3QnICYmCiAgICAgICAgICAgICAgICAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pKSB7CiAgICAgICAgICAgIGRpZmZSZXMgPSBtb21lbnRzRGlmZmVyZW5jZShtb21lbnQoZHVyYXRpb24uZnJvbSksIG1vbWVudChkdXJhdGlvbi50bykpOwoKICAgICAgICAgICAgZHVyYXRpb24gPSB7fTsKICAgICAgICAgICAgZHVyYXRpb24ubXMgPSBkaWZmUmVzLm1pbGxpc2Vjb25kczsKICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzOwogICAgICAgIH0KCiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTsKCiAgICAgICAgaWYgKG1vbWVudC5pc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7CiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXQ7CiAgICB9OwoKICAgIC8vIHZlcnNpb24gbnVtYmVyCiAgICBtb21lbnQudmVyc2lvbiA9IFZFUlNJT047CgogICAgLy8gZGVmYXVsdCBmb3JtYXQKICAgIG1vbWVudC5kZWZhdWx0Rm9ybWF0ID0gaXNvRm9ybWF0OwoKICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBJU08gc3RhbmRhcmQKICAgIG1vbWVudC5JU09fODYwMSA9IGZ1bmN0aW9uICgpIHt9OwoKICAgIC8vIFBsdWdpbnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtleSBoZXJlIChudWxsIHZhbHVlKSwKICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuCiAgICBtb21lbnQubW9tZW50UHJvcGVydGllcyA9IG1vbWVudFByb3BlcnRpZXM7CgogICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLgogICAgLy8gSXQgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGUgb2Zmc2V0IGluIHN5bmMgd2l0aCB0aGUgdGltZXpvbmUuCiAgICBtb21lbnQudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKCkge307CgogICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCBhIHRocmVzaG9sZCBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzCiAgICBtb21lbnQucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZnVuY3Rpb24gKHRocmVzaG9sZCwgbGltaXQpIHsKICAgICAgICBpZiAocmVsYXRpdmVUaW1lVGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICByZXR1cm4gcmVsYXRpdmVUaW1lVGhyZXNob2xkc1t0aHJlc2hvbGRdOwogICAgICAgIH0KICAgICAgICByZWxhdGl2ZVRpbWVUaHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgbW9tZW50LmxhbmcgPSBkZXByZWNhdGUoCiAgICAgICAgJ21vbWVudC5sYW5nIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlIGluc3RlYWQuJywKICAgICAgICBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4gbW9tZW50LmxvY2FsZShrZXksIHZhbHVlKTsKICAgICAgICB9CiAgICApOwoKICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZgogICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9iYWwKICAgIC8vIGxvY2FsZSBrZXkuCiAgICBtb21lbnQubG9jYWxlID0gZnVuY3Rpb24gKGtleSwgdmFsdWVzKSB7CiAgICAgICAgdmFyIGRhdGE7CiAgICAgICAgaWYgKGtleSkgewogICAgICAgICAgICBpZiAodHlwZW9mKHZhbHVlcykgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICBkYXRhID0gbW9tZW50LmRlZmluZUxvY2FsZShrZXksIHZhbHVlcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhID0gbW9tZW50LmxvY2FsZURhdGEoa2V5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbW9tZW50Ll9sb2NhbGUuX2FiYnI7CiAgICB9OwoKICAgIG1vbWVudC5kZWZpbmVMb2NhbGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWVzKSB7CiAgICAgICAgaWYgKHZhbHVlcyAhPT0gbnVsbCkgewogICAgICAgICAgICB2YWx1ZXMuYWJiciA9IG5hbWU7CiAgICAgICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSkgewogICAgICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IG5ldyBMb2NhbGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsb2NhbGVzW25hbWVdLnNldCh2YWx1ZXMpOwoKICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlCiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUobmFtZSk7CgogICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmcKICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH07CgogICAgbW9tZW50LmxhbmdEYXRhID0gZGVwcmVjYXRlKAogICAgICAgICdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywKICAgICAgICBmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICAgIHJldHVybiBtb21lbnQubG9jYWxlRGF0YShrZXkpOwogICAgICAgIH0KICAgICk7CgogICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YQogICAgbW9tZW50LmxvY2FsZURhdGEgPSBmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgdmFyIGxvY2FsZTsKCiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikgewogICAgICAgICAgICBrZXkgPSBrZXkuX2xvY2FsZS5fYWJicjsKICAgICAgICB9CgogICAgICAgIGlmICgha2V5KSB7CiAgICAgICAgICAgIHJldHVybiBtb21lbnQuX2xvY2FsZTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7CiAgICAgICAgICAgIC8vc2hvcnQtY2lyY3VpdCBldmVyeXRoaW5nIGVsc2UKICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShrZXkpOwogICAgICAgICAgICBpZiAobG9jYWxlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGtleSA9IFtrZXldOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpOwogICAgfTsKCiAgICAvLyBjb21wYXJlIG1vbWVudCBvYmplY3QKICAgIG1vbWVudC5pc01vbWVudCA9IGZ1bmN0aW9uIChvYmopIHsKICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTW9tZW50IHx8CiAgICAgICAgICAgIChvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wKG9iaiwgJ19pc0FNb21lbnRPYmplY3QnKSk7CiAgICB9OwoKICAgIC8vIGZvciB0eXBlY2hlY2tpbmcgRHVyYXRpb24gb2JqZWN0cwogICAgbW9tZW50LmlzRHVyYXRpb24gPSBmdW5jdGlvbiAob2JqKSB7CiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uOwogICAgfTsKCiAgICBmb3IgKGkgPSBsaXN0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIG1ha2VMaXN0KGxpc3RzW2ldKTsKICAgIH0KCiAgICBtb21lbnQubm9ybWFsaXplVW5pdHMgPSBmdW5jdGlvbiAodW5pdHMpIHsKICAgICAgICByZXR1cm4gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgfTsKCiAgICBtb21lbnQuaW52YWxpZCA9IGZ1bmN0aW9uIChmbGFncykgewogICAgICAgIHZhciBtID0gbW9tZW50LnV0YyhOYU4pOwogICAgICAgIGlmIChmbGFncyAhPSBudWxsKSB7CiAgICAgICAgICAgIGV4dGVuZChtLl9wZiwgZmxhZ3MpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbS5fcGYudXNlckludmFsaWRhdGVkID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtOwogICAgfTsKCiAgICBtb21lbnQucGFyc2Vab25lID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBtb21lbnQuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTsKICAgIH07CgogICAgbW9tZW50LnBhcnNlVHdvRGlnaXRZZWFyID0gZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgcmV0dXJuIHRvSW50KGlucHV0KSArICh0b0ludChpbnB1dCkgPiA2OCA/IDE5MDAgOiAyMDAwKTsKICAgIH07CgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIE1vbWVudCBQcm90b3R5cGUKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgogICAgZXh0ZW5kKG1vbWVudC5mbiA9IE1vbWVudC5wcm90b3R5cGUsIHsKCiAgICAgICAgY2xvbmUgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiBtb21lbnQodGhpcyk7CiAgICAgICAgfSwKCiAgICAgICAgdmFsdWVPZiA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuICt0aGlzLl9kICsgKCh0aGlzLl9vZmZzZXQgfHwgMCkgKiA2MDAwMCk7CiAgICAgICAgfSwKCiAgICAgICAgdW5peCA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoK3RoaXMgLyAxMDAwKTsKICAgICAgICB9LAoKICAgICAgICB0b1N0cmluZyA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoJ2VuJykuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWicpOwogICAgICAgIH0sCgogICAgICAgIHRvRGF0ZSA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldCA/IG5ldyBEYXRlKCt0aGlzKSA6IHRoaXMuX2Q7CiAgICAgICAgfSwKCiAgICAgICAgdG9JU09TdHJpbmcgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBtID0gbW9tZW50KHRoaXMpLnV0YygpOwogICAgICAgICAgICBpZiAoMCA8IG0ueWVhcigpICYmIG0ueWVhcigpIDw9IDk5OTkpIHsKICAgICAgICAgICAgICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhbgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgdG9BcnJheSA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG0gPSB0aGlzOwogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgbS55ZWFyKCksCiAgICAgICAgICAgICAgICBtLm1vbnRoKCksCiAgICAgICAgICAgICAgICBtLmRhdGUoKSwKICAgICAgICAgICAgICAgIG0uaG91cnMoKSwKICAgICAgICAgICAgICAgIG0ubWludXRlcygpLAogICAgICAgICAgICAgICAgbS5zZWNvbmRzKCksCiAgICAgICAgICAgICAgICBtLm1pbGxpc2Vjb25kcygpCiAgICAgICAgICAgIF07CiAgICAgICAgfSwKCiAgICAgICAgaXNWYWxpZCA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQodGhpcyk7CiAgICAgICAgfSwKCiAgICAgICAgaXNEU1RTaGlmdGVkIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAodGhpcy5fYSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpICYmIGNvbXBhcmVBcnJheXModGhpcy5fYSwgKHRoaXMuX2lzVVRDID8gbW9tZW50LnV0Yyh0aGlzLl9hKSA6IG1vbWVudCh0aGlzLl9hKSkudG9BcnJheSgpKSA+IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9LAoKICAgICAgICBwYXJzaW5nRmxhZ3MgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiBleHRlbmQoe30sIHRoaXMuX3BmKTsKICAgICAgICB9LAoKICAgICAgICBpbnZhbGlkQXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BmLm92ZXJmbG93OwogICAgICAgIH0sCgogICAgICAgIHV0YyA6IGZ1bmN0aW9uIChrZWVwTG9jYWxUaW1lKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnpvbmUoMCwga2VlcExvY2FsVGltZSk7CiAgICAgICAgfSwKCiAgICAgICAgbG9jYWwgOiBmdW5jdGlvbiAoa2VlcExvY2FsVGltZSkgewogICAgICAgICAgICBpZiAodGhpcy5faXNVVEMpIHsKICAgICAgICAgICAgICAgIHRoaXMuem9uZSgwLCBrZWVwTG9jYWxUaW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7CgogICAgICAgICAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZCh0aGlzLl9kYXRlVHpPZmZzZXQoKSwgJ20nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAgICAgICBmb3JtYXQgOiBmdW5jdGlvbiAoaW5wdXRTdHJpbmcpIHsKICAgICAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyB8fCBtb21lbnQuZGVmYXVsdEZvcm1hdCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7CiAgICAgICAgfSwKCiAgICAgICAgYWRkIDogY3JlYXRlQWRkZXIoMSwgJ2FkZCcpLAoKICAgICAgICBzdWJ0cmFjdCA6IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKSwKCiAgICAgICAgZGlmZiA6IGZ1bmN0aW9uIChpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSBtYWtlQXMoaW5wdXQsIHRoaXMpLAogICAgICAgICAgICAgICAgem9uZURpZmYgPSAodGhpcy56b25lKCkgLSB0aGF0LnpvbmUoKSkgKiA2ZTQsCiAgICAgICAgICAgICAgICBkaWZmLCBvdXRwdXQsIGRheXNBZGp1c3Q7CgogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKCiAgICAgICAgICAgIGlmICh1bml0cyA9PT0gJ3llYXInIHx8IHVuaXRzID09PSAnbW9udGgnKSB7CiAgICAgICAgICAgICAgICAvLyBhdmVyYWdlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aHMgaW4gdGhlIGdpdmVuIGRhdGVzCiAgICAgICAgICAgICAgICBkaWZmID0gKHRoaXMuZGF5c0luTW9udGgoKSArIHRoYXQuZGF5c0luTW9udGgoKSkgKiA0MzJlNTsgLy8gMjQgKiA2MCAqIDYwICogMTAwMCAvIDIKICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzCiAgICAgICAgICAgICAgICBvdXRwdXQgPSAoKHRoaXMueWVhcigpIC0gdGhhdC55ZWFyKCkpICogMTIpICsgKHRoaXMubW9udGgoKSAtIHRoYXQubW9udGgoKSk7CiAgICAgICAgICAgICAgICAvLyBhZGp1c3QgYnkgdGFraW5nIGRpZmZlcmVuY2UgaW4gZGF5cywgYXZlcmFnZSBudW1iZXIgb2YgZGF5cwogICAgICAgICAgICAgICAgLy8gYW5kIGRzdCBpbiB0aGUgZ2l2ZW4gbW9udGhzLgogICAgICAgICAgICAgICAgZGF5c0FkanVzdCA9ICh0aGlzIC0gbW9tZW50KHRoaXMpLnN0YXJ0T2YoJ21vbnRoJykpIC0KICAgICAgICAgICAgICAgICAgICAodGhhdCAtIG1vbWVudCh0aGF0KS5zdGFydE9mKCdtb250aCcpKTsKICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdpdGggem9uZXMsIHRvIG5lZ2F0ZSBhbGwgZHN0CiAgICAgICAgICAgICAgICBkYXlzQWRqdXN0IC09ICgodGhpcy56b25lKCkgLSBtb21lbnQodGhpcykuc3RhcnRPZignbW9udGgnKS56b25lKCkpIC0KICAgICAgICAgICAgICAgICAgICAgICAgKHRoYXQuem9uZSgpIC0gbW9tZW50KHRoYXQpLnN0YXJ0T2YoJ21vbnRoJykuem9uZSgpKSkgKiA2ZTQ7CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZGF5c0FkanVzdCAvIGRpZmY7CiAgICAgICAgICAgICAgICBpZiAodW5pdHMgPT09ICd5ZWFyJykgewogICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCAvIDEyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGlmZiA9ICh0aGlzIC0gdGhhdCk7CiAgICAgICAgICAgICAgICBvdXRwdXQgPSB1bml0cyA9PT0gJ3NlY29uZCcgPyBkaWZmIC8gMWUzIDogLy8gMTAwMAogICAgICAgICAgICAgICAgICAgIHVuaXRzID09PSAnbWludXRlJyA/IGRpZmYgLyA2ZTQgOiAvLyAxMDAwICogNjAKICAgICAgICAgICAgICAgICAgICB1bml0cyA9PT0gJ2hvdXInID8gZGlmZiAvIDM2ZTUgOiAvLyAxMDAwICogNjAgKiA2MAogICAgICAgICAgICAgICAgICAgIHVuaXRzID09PSAnZGF5JyA/IChkaWZmIC0gem9uZURpZmYpIC8gODY0ZTUgOiAvLyAxMDAwICogNjAgKiA2MCAqIDI0LCBuZWdhdGUgZHN0CiAgICAgICAgICAgICAgICAgICAgdW5pdHMgPT09ICd3ZWVrJyA/IChkaWZmIC0gem9uZURpZmYpIC8gNjA0OGU1IDogLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3QKICAgICAgICAgICAgICAgICAgICBkaWZmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzUm91bmQob3V0cHV0KTsKICAgICAgICB9LAoKICAgICAgICBmcm9tIDogZnVuY3Rpb24gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHsKICAgICAgICAgICAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7dG86IHRoaXMsIGZyb206IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpOwogICAgICAgIH0sCgogICAgICAgIGZyb21Ob3cgOiBmdW5jdGlvbiAod2l0aG91dFN1ZmZpeCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5mcm9tKG1vbWVudCgpLCB3aXRob3V0U3VmZml4KTsKICAgICAgICB9LAoKICAgICAgICBjYWxlbmRhciA6IGZ1bmN0aW9uICh0aW1lKSB7CiAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuCiAgICAgICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIHpvbmUnZCBvciBub3QuCiAgICAgICAgICAgIHZhciBub3cgPSB0aW1lIHx8IG1vbWVudCgpLAogICAgICAgICAgICAgICAgc29kID0gbWFrZUFzKG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksCiAgICAgICAgICAgICAgICBkaWZmID0gdGhpcy5kaWZmKHNvZCwgJ2RheXMnLCB0cnVlKSwKICAgICAgICAgICAgICAgIGZvcm1hdCA9IGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOgogICAgICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOgogICAgICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDoKICAgICAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6CiAgICAgICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOgogICAgICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihmb3JtYXQsIHRoaXMsIG1vbWVudChub3cpKSk7CiAgICAgICAgfSwKCiAgICAgICAgaXNMZWFwWWVhciA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpOwogICAgICAgIH0sCgogICAgICAgIGlzRFNUIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gKHRoaXMuem9uZSgpIDwgdGhpcy5jbG9uZSgpLm1vbnRoKDApLnpvbmUoKSB8fAogICAgICAgICAgICAgICAgdGhpcy56b25lKCkgPCB0aGlzLmNsb25lKCkubW9udGgoNSkuem9uZSgpKTsKICAgICAgICB9LAoKICAgICAgICBkYXkgOiBmdW5jdGlvbiAoaW5wdXQpIHsKICAgICAgICAgICAgdmFyIGRheSA9IHRoaXMuX2lzVVRDID8gdGhpcy5fZC5nZXRVVENEYXkoKSA6IHRoaXMuX2QuZ2V0RGF5KCk7CiAgICAgICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHBhcnNlV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGlucHV0IC0gZGF5LCAnZCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIGRheTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIG1vbnRoIDogbWFrZUFjY2Vzc29yKCdNb250aCcsIHRydWUpLAoKICAgICAgICBzdGFydE9mIDogZnVuY3Rpb24gKHVuaXRzKSB7CiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgICAgICAgICAvLyB0aGUgZm9sbG93aW5nIHN3aXRjaCBpbnRlbnRpb25hbGx5IG9taXRzIGJyZWFrIGtleXdvcmRzCiAgICAgICAgICAgIC8vIHRvIHV0aWxpemUgZmFsbGluZyB0aHJvdWdoIHRoZSBjYXNlcy4KICAgICAgICAgICAgc3dpdGNoICh1bml0cykgewogICAgICAgICAgICBjYXNlICd5ZWFyJzoKICAgICAgICAgICAgICAgIHRoaXMubW9udGgoMCk7CiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOgogICAgICAgICAgICBjYXNlICdtb250aCc6CiAgICAgICAgICAgICAgICB0aGlzLmRhdGUoMSk7CiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOgogICAgICAgICAgICBjYXNlICdpc29XZWVrJzoKICAgICAgICAgICAgY2FzZSAnZGF5JzoKICAgICAgICAgICAgICAgIHRoaXMuaG91cnMoMCk7CiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgICAgIGNhc2UgJ2hvdXInOgogICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKDApOwogICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgICAgICBjYXNlICdtaW51dGUnOgogICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRzKDApOwogICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgICAgICBjYXNlICdzZWNvbmQnOgogICAgICAgICAgICAgICAgdGhpcy5taWxsaXNlY29uZHMoMCk7CiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZQogICAgICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykgewogICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5KDApOwogICAgICAgICAgICB9IGVsc2UgaWYgKHVuaXRzID09PSAnaXNvV2VlaycpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNvV2Vla2RheSgxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcXVhcnRlcnMgYXJlIGFsc28gc3BlY2lhbAogICAgICAgICAgICBpZiAodW5pdHMgPT09ICdxdWFydGVyJykgewogICAgICAgICAgICAgICAgdGhpcy5tb250aChNYXRoLmZsb29yKHRoaXMubW9udGgoKSAvIDMpICogMyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCgogICAgICAgIGVuZE9mOiBmdW5jdGlvbiAodW5pdHMpIHsKICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7CiAgICAgICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKHVuaXRzKS5hZGQoMSwgKHVuaXRzID09PSAnaXNvV2VlaycgPyAnd2VlaycgOiB1bml0cykpLnN1YnRyYWN0KDEsICdtcycpOwogICAgICAgIH0sCgogICAgICAgIGlzQWZ0ZXI6IGZ1bmN0aW9uIChpbnB1dCwgdW5pdHMpIHsKICAgICAgICAgICAgdmFyIGlucHV0TXM7CiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModHlwZW9mIHVuaXRzICE9PSAndW5kZWZpbmVkJyA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7CiAgICAgICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykgewogICAgICAgICAgICAgICAgaW5wdXQgPSBtb21lbnQuaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBtb21lbnQoaW5wdXQpOwogICAgICAgICAgICAgICAgcmV0dXJuICt0aGlzID4gK2lucHV0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXRNcyA9IG1vbWVudC5pc01vbWVudChpbnB1dCkgPyAraW5wdXQgOiArbW9tZW50KGlucHV0KTsKICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dE1zIDwgK3RoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGlzQmVmb3JlOiBmdW5jdGlvbiAoaW5wdXQsIHVuaXRzKSB7CiAgICAgICAgICAgIHZhciBpbnB1dE1zOwogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHR5cGVvZiB1bml0cyAhPT0gJ3VuZGVmaW5lZCcgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpOwogICAgICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gbW9tZW50LmlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogbW9tZW50KGlucHV0KTsKICAgICAgICAgICAgICAgIHJldHVybiArdGhpcyA8ICtpbnB1dDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlucHV0TXMgPSBtb21lbnQuaXNNb21lbnQoaW5wdXQpID8gK2lucHV0IDogK21vbWVudChpbnB1dCk7CiAgICAgICAgICAgICAgICByZXR1cm4gK3RoaXMuY2xvbmUoKS5lbmRPZih1bml0cykgPCBpbnB1dE1zOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgaXNTYW1lOiBmdW5jdGlvbiAoaW5wdXQsIHVuaXRzKSB7CiAgICAgICAgICAgIHZhciBpbnB1dE1zOwogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpOwogICAgICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gbW9tZW50LmlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogbW9tZW50KGlucHV0KTsKICAgICAgICAgICAgICAgIHJldHVybiArdGhpcyA9PT0gK2lucHV0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXRNcyA9ICttb21lbnQoaW5wdXQpOwogICAgICAgICAgICAgICAgcmV0dXJuICsodGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gKyh0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIG1pbjogZGVwcmVjYXRlKAogICAgICAgICAgICAgICAgICdtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE1NDgnLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChvdGhlcikgewogICAgICAgICAgICAgICAgICAgICBvdGhlciA9IG1vbWVudC5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgKSwKCiAgICAgICAgbWF4OiBkZXByZWNhdGUoCiAgICAgICAgICAgICAgICAnbW9tZW50KCkubWF4IGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNTQ4JywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChvdGhlcikgewogICAgICAgICAgICAgICAgICAgIG90aGVyID0gbW9tZW50LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICApLAoKICAgICAgICAvLyBrZWVwTG9jYWxUaW1lID0gdHJ1ZSBtZWFucyBvbmx5IGNoYW5nZSB0aGUgdGltZXpvbmUsIHdpdGhvdXQKICAgICAgICAvLyBhZmZlY3RpbmcgdGhlIGxvY2FsIGhvdXIuIFNvIDU6MzE6MjYgKzAzMDAgLS1bem9uZSgyLCB0cnVlKV0tLT4KICAgICAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IGludCB6b25lCiAgICAgICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLgogICAgICAgIC8vCiAgICAgICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpCiAgICAgICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0CiAgICAgICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpbgogICAgICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZQogICAgICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuCiAgICAgICAgem9uZSA6IGZ1bmN0aW9uIChpbnB1dCwga2VlcExvY2FsVGltZSkgewogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsCiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdDsKICAgICAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSB0aW1lem9uZU1pbnV0ZXNGcm9tU3RyaW5nKGlucHV0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNikgewogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgKiA2MDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkgewogICAgICAgICAgICAgICAgICAgIGxvY2FsQWRqdXN0ID0gdGhpcy5fZGF0ZVR6T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDsKICAgICAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChsb2NhbEFkanVzdCwgJ20nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IGlucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3JTdWJ0cmFjdER1cmF0aW9uRnJvbU1vbWVudCh0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC5kdXJhdGlvbihvZmZzZXQgLSBpbnB1dCwgJ20nKSwgMSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IHRoaXMuX2RhdGVUek9mZnNldCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCgogICAgICAgIHpvbmVBYmJyIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnOwogICAgICAgIH0sCgogICAgICAgIHpvbmVOYW1lIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7CiAgICAgICAgfSwKCiAgICAgICAgcGFyc2Vab25lIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAodGhpcy5fdHptKSB7CiAgICAgICAgICAgICAgICB0aGlzLnpvbmUodGhpcy5fdHptKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgIHRoaXMuem9uZSh0aGlzLl9pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAgICAgICBoYXNBbGlnbmVkSG91ck9mZnNldCA6IGZ1bmN0aW9uIChpbnB1dCkgewogICAgICAgICAgICBpZiAoIWlucHV0KSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IG1vbWVudChpbnB1dCkuem9uZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKHRoaXMuem9uZSgpIC0gaW5wdXQpICUgNjAgPT09IDA7CiAgICAgICAgfSwKCiAgICAgICAgZGF5c0luTW9udGggOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpKTsKICAgICAgICB9LAoKICAgICAgICBkYXlPZlllYXIgOiBmdW5jdGlvbiAoaW5wdXQpIHsKICAgICAgICAgICAgdmFyIGRheU9mWWVhciA9IHJvdW5kKChtb21lbnQodGhpcykuc3RhcnRPZignZGF5JykgLSBtb21lbnQodGhpcykuc3RhcnRPZigneWVhcicpKSAvIDg2NGU1KSArIDE7CiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gZGF5T2ZZZWFyIDogdGhpcy5hZGQoKGlucHV0IC0gZGF5T2ZZZWFyKSwgJ2QnKTsKICAgICAgICB9LAoKICAgICAgICBxdWFydGVyIDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyB0aGlzLm1vbnRoKCkgJSAzKTsKICAgICAgICB9LAoKICAgICAgICB3ZWVrWWVhciA6IGZ1bmN0aW9uIChpbnB1dCkgewogICAgICAgICAgICB2YXIgeWVhciA9IHdlZWtPZlllYXIodGhpcywgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LCB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpLnllYXI7CiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8geWVhciA6IHRoaXMuYWRkKChpbnB1dCAtIHllYXIpLCAneScpOwogICAgICAgIH0sCgogICAgICAgIGlzb1dlZWtZZWFyIDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgICAgIHZhciB5ZWFyID0gd2Vla09mWWVhcih0aGlzLCAxLCA0KS55ZWFyOwogICAgICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSB5ZWFyKSwgJ3knKTsKICAgICAgICB9LAoKICAgICAgICB3ZWVrIDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTsKICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpOwogICAgICAgIH0sCgogICAgICAgIGlzb1dlZWsgOiBmdW5jdGlvbiAoaW5wdXQpIHsKICAgICAgICAgICAgdmFyIHdlZWsgPSB3ZWVrT2ZZZWFyKHRoaXMsIDEsIDQpLndlZWs7CiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTsKICAgICAgICB9LAoKICAgICAgICB3ZWVrZGF5IDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gKHRoaXMuZGF5KCkgKyA3IC0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSAlIDc7CiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTsKICAgICAgICB9LAoKICAgICAgICBpc29XZWVrZGF5IDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgICAgICAgIC8vIGJlaGF2ZXMgdGhlIHNhbWUgYXMgbW9tZW50I2RheSBleGNlcHQKICAgICAgICAgICAgLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNikKICAgICAgICAgICAgLy8gYXMgYSBzZXR0ZXIsIHN1bmRheSBzaG91bGQgYmVsb25nIHRvIHRoZSBwcmV2aW91cyB3ZWVrLgogICAgICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHRoaXMuZGF5KCkgfHwgNyA6IHRoaXMuZGF5KHRoaXMuZGF5KCkgJSA3ID8gaW5wdXQgOiBpbnB1dCAtIDcpOwogICAgICAgIH0sCgogICAgICAgIGlzb1dlZWtzSW5ZZWFyIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpOwogICAgICAgIH0sCgogICAgICAgIHdlZWtzSW5ZZWFyIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgd2Vla0luZm8gPSB0aGlzLmxvY2FsZURhdGEoKS5fd2VlazsKICAgICAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7CiAgICAgICAgfSwKCiAgICAgICAgZ2V0IDogZnVuY3Rpb24gKHVuaXRzKSB7CiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgICAgICAgICByZXR1cm4gdGhpc1t1bml0c10oKTsKICAgICAgICB9LAoKICAgICAgICBzZXQgOiBmdW5jdGlvbiAodW5pdHMsIHZhbHVlKSB7CiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXNbdW5pdHNdID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aGlzW3VuaXRzXSh2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgLy8gSWYgcGFzc2VkIGEgbG9jYWxlIGtleSwgaXQgd2lsbCBzZXQgdGhlIGxvY2FsZSBmb3IgdGhpcwogICAgICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb24KICAgICAgICAvLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuCiAgICAgICAgbG9jYWxlIDogZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTsKCiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBtb21lbnQubG9jYWxlRGF0YShrZXkpOwogICAgICAgICAgICAgICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGxhbmcgOiBkZXByZWNhdGUoCiAgICAgICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsCiAgICAgICAgICAgIGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICApLAoKICAgICAgICBsb2NhbGVEYXRhIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlOwogICAgICAgIH0sCgogICAgICAgIF9kYXRlVHpPZmZzZXQgOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuCiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MQogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkgLyAxNSkgKiAxNTsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiByYXdNb250aFNldHRlcihtb20sIHZhbHVlKSB7CiAgICAgICAgdmFyIGRheU9mTW9udGg7CgogICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyBvdXQgb2YgaGVyZSEKICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgewogICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpOwogICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlPwogICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgcmV0dXJuIG1vbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZGF5T2ZNb250aCA9IE1hdGgubWluKG1vbS5kYXRlKCksCiAgICAgICAgICAgICAgICBkYXlzSW5Nb250aChtb20ueWVhcigpLCB2YWx1ZSkpOwogICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyAnTW9udGgnXSh2YWx1ZSwgZGF5T2ZNb250aCk7CiAgICAgICAgcmV0dXJuIG1vbTsKICAgIH0KCiAgICBmdW5jdGlvbiByYXdHZXR0ZXIobW9tLCB1bml0KSB7CiAgICAgICAgcmV0dXJuIG1vbS5fZFsnZ2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIHJhd1NldHRlcihtb20sIHVuaXQsIHZhbHVlKSB7CiAgICAgICAgaWYgKHVuaXQgPT09ICdNb250aCcpIHsKICAgICAgICAgICAgcmV0dXJuIHJhd01vbnRoU2V0dGVyKG1vbSwgdmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgdW5pdF0odmFsdWUpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBtYWtlQWNjZXNzb3IodW5pdCwga2VlcFRpbWUpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICByYXdTZXR0ZXIodGhpcywgdW5pdCwgdmFsdWUpOwogICAgICAgICAgICAgICAgbW9tZW50LnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiByYXdHZXR0ZXIodGhpcywgdW5pdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQoKICAgIG1vbWVudC5mbi5taWxsaXNlY29uZCA9IG1vbWVudC5mbi5taWxsaXNlY29uZHMgPSBtYWtlQWNjZXNzb3IoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTsKICAgIG1vbWVudC5mbi5zZWNvbmQgPSBtb21lbnQuZm4uc2Vjb25kcyA9IG1ha2VBY2Nlc3NvcignU2Vjb25kcycsIGZhbHNlKTsKICAgIG1vbWVudC5mbi5taW51dGUgPSBtb21lbnQuZm4ubWludXRlcyA9IG1ha2VBY2Nlc3NvcignTWludXRlcycsIGZhbHNlKTsKICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseQogICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgaGUgd2FudHMuIFNvIHRyeWluZyB0byBtYWludGFpbiB0aGUgc2FtZSBob3VyIChpbgogICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93CiAgICAvLyB0aGlzIHJ1bGUuCiAgICBtb21lbnQuZm4uaG91ciA9IG1vbWVudC5mbi5ob3VycyA9IG1ha2VBY2Nlc3NvcignSG91cnMnLCB0cnVlKTsKICAgIC8vIG1vbWVudC5mbi5tb250aCBpcyBkZWZpbmVkIHNlcGFyYXRlbHkKICAgIG1vbWVudC5mbi5kYXRlID0gbWFrZUFjY2Vzc29yKCdEYXRlJywgdHJ1ZSk7CiAgICBtb21lbnQuZm4uZGF0ZXMgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgbWFrZUFjY2Vzc29yKCdEYXRlJywgdHJ1ZSkpOwogICAgbW9tZW50LmZuLnllYXIgPSBtYWtlQWNjZXNzb3IoJ0Z1bGxZZWFyJywgdHJ1ZSk7CiAgICBtb21lbnQuZm4ueWVhcnMgPSBkZXByZWNhdGUoJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQuJywgbWFrZUFjY2Vzc29yKCdGdWxsWWVhcicsIHRydWUpKTsKCiAgICAvLyBhZGQgcGx1cmFsIG1ldGhvZHMKICAgIG1vbWVudC5mbi5kYXlzID0gbW9tZW50LmZuLmRheTsKICAgIG1vbWVudC5mbi5tb250aHMgPSBtb21lbnQuZm4ubW9udGg7CiAgICBtb21lbnQuZm4ud2Vla3MgPSBtb21lbnQuZm4ud2VlazsKICAgIG1vbWVudC5mbi5pc29XZWVrcyA9IG1vbWVudC5mbi5pc29XZWVrOwogICAgbW9tZW50LmZuLnF1YXJ0ZXJzID0gbW9tZW50LmZuLnF1YXJ0ZXI7CgogICAgLy8gYWRkIGFsaWFzZWQgZm9ybWF0IG1ldGhvZHMKICAgIG1vbWVudC5mbi50b0pTT04gPSBtb21lbnQuZm4udG9JU09TdHJpbmc7CgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIER1cmF0aW9uIFByb3RvdHlwZQogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICBmdW5jdGlvbiBkYXlzVG9ZZWFycyAoZGF5cykgewogICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDE0NjA5NyBkYXlzICh0YWtpbmcgaW50byBhY2NvdW50IGxlYXAgeWVhciBydWxlcykKICAgICAgICByZXR1cm4gZGF5cyAqIDQwMCAvIDE0NjA5NzsKICAgIH0KCiAgICBmdW5jdGlvbiB5ZWFyc1RvRGF5cyAoeWVhcnMpIHsKICAgICAgICAvLyB5ZWFycyAqIDM2NSArIGFic1JvdW5kKHllYXJzIC8gNCkgLQogICAgICAgIC8vICAgICBhYnNSb3VuZCh5ZWFycyAvIDEwMCkgKyBhYnNSb3VuZCh5ZWFycyAvIDQwMCk7CiAgICAgICAgcmV0dXJuIHllYXJzICogMTQ2MDk3IC8gNDAwOwogICAgfQoKICAgIGV4dGVuZChtb21lbnQuZHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGUsIHsKCiAgICAgICAgX2J1YmJsZSA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcywKICAgICAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzLAogICAgICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzLAogICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuX2RhdGEsCiAgICAgICAgICAgICAgICBzZWNvbmRzLCBtaW51dGVzLCBob3VycywgeWVhcnMgPSAwOwoKICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGJ1YmJsZXMgdXAgdmFsdWVzLCBzZWUgdGhlIHRlc3RzIGZvcgogICAgICAgICAgICAvLyBleGFtcGxlcyBvZiB3aGF0IHRoYXQgbWVhbnMuCiAgICAgICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzICUgMTAwMDsKCiAgICAgICAgICAgIHNlY29uZHMgPSBhYnNSb3VuZChtaWxsaXNlY29uZHMgLyAxMDAwKTsKICAgICAgICAgICAgZGF0YS5zZWNvbmRzID0gc2Vjb25kcyAlIDYwOwoKICAgICAgICAgICAgbWludXRlcyA9IGFic1JvdW5kKHNlY29uZHMgLyA2MCk7CiAgICAgICAgICAgIGRhdGEubWludXRlcyA9IG1pbnV0ZXMgJSA2MDsKCiAgICAgICAgICAgIGhvdXJzID0gYWJzUm91bmQobWludXRlcyAvIDYwKTsKICAgICAgICAgICAgZGF0YS5ob3VycyA9IGhvdXJzICUgMjQ7CgogICAgICAgICAgICBkYXlzICs9IGFic1JvdW5kKGhvdXJzIC8gMjQpOwoKICAgICAgICAgICAgLy8gQWNjdXJhdGVseSBjb252ZXJ0IGRheXMgdG8geWVhcnMsIGFzc3VtZSBzdGFydCBmcm9tIHllYXIgMC4KICAgICAgICAgICAgeWVhcnMgPSBhYnNSb3VuZChkYXlzVG9ZZWFycyhkYXlzKSk7CiAgICAgICAgICAgIGRheXMgLT0gYWJzUm91bmQoeWVhcnNUb0RheXMoeWVhcnMpKTsKCiAgICAgICAgICAgIC8vIDMwIGRheXMgdG8gYSBtb250aAogICAgICAgICAgICAvLyBUT0RPIChpc2tyZW4pOiBVc2UgYW5jaG9yIGRhdGUgKGxpa2UgMXN0IEphbikgdG8gY29tcHV0ZSB0aGlzLgogICAgICAgICAgICBtb250aHMgKz0gYWJzUm91bmQoZGF5cyAvIDMwKTsKICAgICAgICAgICAgZGF5cyAlPSAzMDsKCiAgICAgICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXIKICAgICAgICAgICAgeWVhcnMgKz0gYWJzUm91bmQobW9udGhzIC8gMTIpOwogICAgICAgICAgICBtb250aHMgJT0gMTI7CgogICAgICAgICAgICBkYXRhLmRheXMgPSBkYXlzOwogICAgICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRoczsKICAgICAgICAgICAgZGF0YS55ZWFycyA9IHllYXJzOwogICAgICAgIH0sCgogICAgICAgIGFicyA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gTWF0aC5hYnModGhpcy5fbWlsbGlzZWNvbmRzKTsKICAgICAgICAgICAgdGhpcy5fZGF5cyA9IE1hdGguYWJzKHRoaXMuX2RheXMpOwogICAgICAgICAgICB0aGlzLl9tb250aHMgPSBNYXRoLmFicyh0aGlzLl9tb250aHMpOwoKICAgICAgICAgICAgdGhpcy5fZGF0YS5taWxsaXNlY29uZHMgPSBNYXRoLmFicyh0aGlzLl9kYXRhLm1pbGxpc2Vjb25kcyk7CiAgICAgICAgICAgIHRoaXMuX2RhdGEuc2Vjb25kcyA9IE1hdGguYWJzKHRoaXMuX2RhdGEuc2Vjb25kcyk7CiAgICAgICAgICAgIHRoaXMuX2RhdGEubWludXRlcyA9IE1hdGguYWJzKHRoaXMuX2RhdGEubWludXRlcyk7CiAgICAgICAgICAgIHRoaXMuX2RhdGEuaG91cnMgPSBNYXRoLmFicyh0aGlzLl9kYXRhLmhvdXJzKTsKICAgICAgICAgICAgdGhpcy5fZGF0YS5tb250aHMgPSBNYXRoLmFicyh0aGlzLl9kYXRhLm1vbnRocyk7CiAgICAgICAgICAgIHRoaXMuX2RhdGEueWVhcnMgPSBNYXRoLmFicyh0aGlzLl9kYXRhLnllYXJzKTsKCiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCgogICAgICAgIHdlZWtzIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gYWJzUm91bmQodGhpcy5kYXlzKCkgLyA3KTsKICAgICAgICB9LAoKICAgICAgICB2YWx1ZU9mIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzICsKICAgICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgKwogICAgICAgICAgICAgICh0aGlzLl9tb250aHMgJSAxMikgKiAyNTkyZTYgKwogICAgICAgICAgICAgIHRvSW50KHRoaXMuX21vbnRocyAvIDEyKSAqIDMxNTM2ZTY7CiAgICAgICAgfSwKCiAgICAgICAgaHVtYW5pemUgOiBmdW5jdGlvbiAod2l0aFN1ZmZpeCkgewogICAgICAgICAgICB2YXIgb3V0cHV0ID0gcmVsYXRpdmVUaW1lKHRoaXMsICF3aXRoU3VmZml4LCB0aGlzLmxvY2FsZURhdGEoKSk7CgogICAgICAgICAgICBpZiAod2l0aFN1ZmZpeCkgewogICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcy5sb2NhbGVEYXRhKCkucGFzdEZ1dHVyZSgrdGhpcywgb3V0cHV0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTsKICAgICAgICB9LAoKICAgICAgICBhZGQgOiBmdW5jdGlvbiAoaW5wdXQsIHZhbCkgewogICAgICAgICAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQobW9tZW50KQogICAgICAgICAgICB2YXIgZHVyID0gbW9tZW50LmR1cmF0aW9uKGlucHV0LCB2YWwpOwoKICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzICs9IGR1ci5fbWlsbGlzZWNvbmRzOwogICAgICAgICAgICB0aGlzLl9kYXlzICs9IGR1ci5fZGF5czsKICAgICAgICAgICAgdGhpcy5fbW9udGhzICs9IGR1ci5fbW9udGhzOwoKICAgICAgICAgICAgdGhpcy5fYnViYmxlKCk7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAgICAgICBzdWJ0cmFjdCA6IGZ1bmN0aW9uIChpbnB1dCwgdmFsKSB7CiAgICAgICAgICAgIHZhciBkdXIgPSBtb21lbnQuZHVyYXRpb24oaW5wdXQsIHZhbCk7CgogICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgLT0gZHVyLl9taWxsaXNlY29uZHM7CiAgICAgICAgICAgIHRoaXMuX2RheXMgLT0gZHVyLl9kYXlzOwogICAgICAgICAgICB0aGlzLl9tb250aHMgLT0gZHVyLl9tb250aHM7CgogICAgICAgICAgICB0aGlzLl9idWJibGUoKTsKCiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCgogICAgICAgIGdldCA6IGZ1bmN0aW9uICh1bml0cykgewogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHMudG9Mb3dlckNhc2UoKSArICdzJ10oKTsKICAgICAgICB9LAoKICAgICAgICBhcyA6IGZ1bmN0aW9uICh1bml0cykgewogICAgICAgICAgICB2YXIgZGF5cywgbW9udGhzOwogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKCiAgICAgICAgICAgIGlmICh1bml0cyA9PT0gJ21vbnRoJyB8fCB1bml0cyA9PT0gJ3llYXInKSB7CiAgICAgICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIHRoaXMuX21pbGxpc2Vjb25kcyAvIDg2NGU1OwogICAgICAgICAgICAgICAgbW9udGhzID0gdGhpcy5fbW9udGhzICsgZGF5c1RvWWVhcnMoZGF5cykgKiAxMjsKICAgICAgICAgICAgICAgIHJldHVybiB1bml0cyA9PT0gJ21vbnRoJyA/IG1vbnRocyA6IG1vbnRocyAvIDEyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KQogICAgICAgICAgICAgICAgZGF5cyA9IHRoaXMuX2RheXMgKyBNYXRoLnJvdW5kKHllYXJzVG9EYXlzKHRoaXMuX21vbnRocyAvIDEyKSk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2Vlayc6IHJldHVybiBkYXlzIC8gNyArIHRoaXMuX21pbGxpc2Vjb25kcyAvIDYwNDhlNTsKICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXknOiByZXR1cm4gZGF5cyArIHRoaXMuX21pbGxpc2Vjb25kcyAvIDg2NGU1OwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdXInOiByZXR1cm4gZGF5cyAqIDI0ICsgdGhpcy5fbWlsbGlzZWNvbmRzIC8gMzZlNTsKICAgICAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnOiByZXR1cm4gZGF5cyAqIDI0ICogNjAgKyB0aGlzLl9taWxsaXNlY29uZHMgLyA2ZTQ7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzogcmV0dXJuIGRheXMgKiAyNCAqIDYwICogNjAgKyB0aGlzLl9taWxsaXNlY29uZHMgLyAxMDAwOwogICAgICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzogcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApICsgdGhpcy5fbWlsbGlzZWNvbmRzOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5rbm93biB1bml0ICcgKyB1bml0cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBsYW5nIDogbW9tZW50LmZuLmxhbmcsCiAgICAgICAgbG9jYWxlIDogbW9tZW50LmZuLmxvY2FsZSwKCiAgICAgICAgdG9Jc29TdHJpbmcgOiBkZXByZWNhdGUoCiAgICAgICAgICAgICd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkICcgKwogICAgICAgICAgICAnKG5vdGljZSB0aGUgY2FwaXRhbHMpJywKICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICksCgogICAgICAgIHRvSVNPU3RyaW5nIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qcwogICAgICAgICAgICB2YXIgeWVhcnMgPSBNYXRoLmFicyh0aGlzLnllYXJzKCkpLAogICAgICAgICAgICAgICAgbW9udGhzID0gTWF0aC5hYnModGhpcy5tb250aHMoKSksCiAgICAgICAgICAgICAgICBkYXlzID0gTWF0aC5hYnModGhpcy5kYXlzKCkpLAogICAgICAgICAgICAgICAgaG91cnMgPSBNYXRoLmFicyh0aGlzLmhvdXJzKCkpLAogICAgICAgICAgICAgICAgbWludXRlcyA9IE1hdGguYWJzKHRoaXMubWludXRlcygpKSwKICAgICAgICAgICAgICAgIHNlY29uZHMgPSBNYXRoLmFicyh0aGlzLnNlY29uZHMoKSArIHRoaXMubWlsbGlzZWNvbmRzKCkgLyAxMDAwKTsKCiAgICAgICAgICAgIGlmICghdGhpcy5hc1NlY29uZHMoKSkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLgogICAgICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKQogICAgICAgICAgICAgICAgcmV0dXJuICdQMEQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKHRoaXMuYXNTZWNvbmRzKCkgPCAwID8gJy0nIDogJycpICsKICAgICAgICAgICAgICAgICdQJyArCiAgICAgICAgICAgICAgICAoeWVhcnMgPyB5ZWFycyArICdZJyA6ICcnKSArCiAgICAgICAgICAgICAgICAobW9udGhzID8gbW9udGhzICsgJ00nIDogJycpICsKICAgICAgICAgICAgICAgIChkYXlzID8gZGF5cyArICdEJyA6ICcnKSArCiAgICAgICAgICAgICAgICAoKGhvdXJzIHx8IG1pbnV0ZXMgfHwgc2Vjb25kcykgPyAnVCcgOiAnJykgKwogICAgICAgICAgICAgICAgKGhvdXJzID8gaG91cnMgKyAnSCcgOiAnJykgKwogICAgICAgICAgICAgICAgKG1pbnV0ZXMgPyBtaW51dGVzICsgJ00nIDogJycpICsKICAgICAgICAgICAgICAgIChzZWNvbmRzID8gc2Vjb25kcyArICdTJyA6ICcnKTsKICAgICAgICB9LAoKICAgICAgICBsb2NhbGVEYXRhIDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlOwogICAgICAgIH0KICAgIH0pOwoKICAgIG1vbWVudC5kdXJhdGlvbi5mbi50b1N0cmluZyA9IG1vbWVudC5kdXJhdGlvbi5mbi50b0lTT1N0cmluZzsKCiAgICBmdW5jdGlvbiBtYWtlRHVyYXRpb25HZXR0ZXIobmFtZSkgewogICAgICAgIG1vbWVudC5kdXJhdGlvbi5mbltuYW1lXSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbbmFtZV07CiAgICAgICAgfTsKICAgIH0KCiAgICBmb3IgKGkgaW4gdW5pdE1pbGxpc2Vjb25kRmFjdG9ycykgewogICAgICAgIGlmIChoYXNPd25Qcm9wKHVuaXRNaWxsaXNlY29uZEZhY3RvcnMsIGkpKSB7CiAgICAgICAgICAgIG1ha2VEdXJhdGlvbkdldHRlcihpLnRvTG93ZXJDYXNlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBtb21lbnQuZHVyYXRpb24uZm4uYXNNaWxsaXNlY29uZHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYXMoJ21zJyk7CiAgICB9OwogICAgbW9tZW50LmR1cmF0aW9uLmZuLmFzU2Vjb25kcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5hcygncycpOwogICAgfTsKICAgIG1vbWVudC5kdXJhdGlvbi5mbi5hc01pbnV0ZXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYXMoJ20nKTsKICAgIH07CiAgICBtb21lbnQuZHVyYXRpb24uZm4uYXNIb3VycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5hcygnaCcpOwogICAgfTsKICAgIG1vbWVudC5kdXJhdGlvbi5mbi5hc0RheXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYXMoJ2QnKTsKICAgIH07CiAgICBtb21lbnQuZHVyYXRpb24uZm4uYXNXZWVrcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5hcygnd2Vla3MnKTsKICAgIH07CiAgICBtb21lbnQuZHVyYXRpb24uZm4uYXNNb250aHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYXMoJ00nKTsKICAgIH07CiAgICBtb21lbnQuZHVyYXRpb24uZm4uYXNZZWFycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5hcygneScpOwogICAgfTsKCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgRGVmYXVsdCBMb2NhbGUKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgogICAgLy8gU2V0IGRlZmF1bHQgbG9jYWxlLCBvdGhlciBsb2NhbGUgd2lsbCBpbmhlcml0IGZyb20gRW5nbGlzaC4KICAgIG1vbWVudC5sb2NhbGUoJ2VuJywgewogICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0odGh8c3R8bmR8cmQpLywKICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgewogICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLAogICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRvSW50KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDoKICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOgogICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6CiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJzsKICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDsKICAgICAgICB9CiAgICB9KTsKCiAgICAvKiBFTUJFRF9MT0NBTEVTICovCgogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIEV4cG9zaW5nIE1vbWVudAogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKICAgIGZ1bmN0aW9uIG1ha2VHbG9iYWwoc2hvdWxkRGVwcmVjYXRlKSB7CiAgICAgICAgLypnbG9iYWwgZW5kZXI6ZmFsc2UgKi8KICAgICAgICBpZiAodHlwZW9mIGVuZGVyICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG9sZEdsb2JhbE1vbWVudCA9IGdsb2JhbFNjb3BlLm1vbWVudDsKICAgICAgICBpZiAoc2hvdWxkRGVwcmVjYXRlKSB7CiAgICAgICAgICAgIGdsb2JhbFNjb3BlLm1vbWVudCA9IGRlcHJlY2F0ZSgKICAgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIE1vbWVudCB0aHJvdWdoIHRoZSBnbG9iYWwgc2NvcGUgaXMgJyArCiAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgJyArCiAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2UuJywKICAgICAgICAgICAgICAgICAgICBtb21lbnQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbFNjb3BlLm1vbWVudCA9IG1vbWVudDsKICAgICAgICB9CiAgICB9CgogICAgLy8gQ29tbW9uSlMgbW9kdWxlIGlzIGRlZmluZWQKICAgIGlmIChoYXNNb2R1bGUpIHsKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IG1vbWVudDsKICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgZGVmaW5lKCdtb21lbnQnLCBmdW5jdGlvbiAocmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlKSB7CiAgICAgICAgICAgIGlmIChtb2R1bGUuY29uZmlnICYmIG1vZHVsZS5jb25maWcoKSAmJiBtb2R1bGUuY29uZmlnKCkubm9HbG9iYWwgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIC8vIHJlbGVhc2UgdGhlIGdsb2JhbCB2YXJpYWJsZQogICAgICAgICAgICAgICAgZ2xvYmFsU2NvcGUubW9tZW50ID0gb2xkR2xvYmFsTW9tZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9tZW50OwogICAgICAgIH0pOwogICAgICAgIG1ha2VHbG9iYWwodHJ1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIG1ha2VHbG9iYWwoKTsKICAgIH0KfSkuY2FsbCh0aGlzKTsK"></script>
<script src="data:application/x-javascript;base64,Ly8hIG1vbWVudC10aW1lem9uZS5qcwovLyEgdmVyc2lvbiA6IDAuMi41Ci8vISBhdXRob3IgOiBUaW0gV29vZAovLyEgbGljZW5zZSA6IE1JVAovLyEgZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50LXRpbWV6b25lCgooZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHsKCSJ1c2Ugc3RyaWN0IjsKCgkvKmdsb2JhbCBkZWZpbmUqLwoJaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewoJCWRlZmluZShbJ21vbWVudCddLCBmYWN0b3J5KTsgICAgICAgICAgICAgICAgIC8vIEFNRAoJfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnbW9tZW50JykpOyAvLyBOb2RlCgl9IGVsc2UgewoJCWZhY3Rvcnkocm9vdC5tb21lbnQpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJyb3dzZXIKCX0KfSh0aGlzLCBmdW5jdGlvbiAobW9tZW50KSB7CgkidXNlIHN0cmljdCI7CgoJLy8gRG8gbm90IGxvYWQgbW9tZW50LXRpbWV6b25lIGEgc2Vjb25kIHRpbWUuCglpZiAobW9tZW50LnR6ICE9PSB1bmRlZmluZWQpIHsgcmV0dXJuIG1vbWVudDsgfQoKCXZhciBWRVJTSU9OID0gIjAuMi41IiwKCQl6b25lcyA9IHt9LAoJCWxpbmtzID0ge30sCgoJCW1vbWVudFZlcnNpb24gPSBtb21lbnQudmVyc2lvbi5zcGxpdCgnLicpLAoJCW1ham9yID0gK21vbWVudFZlcnNpb25bMF0sCgkJbWlub3IgPSArbW9tZW50VmVyc2lvblsxXTsKCgkvLyBNb21lbnQuanMgdmVyc2lvbiBjaGVjawoJaWYgKG1ham9yIDwgMiB8fCAobWFqb3IgPT09IDIgJiYgbWlub3IgPCA2KSkgewoJCWxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgcmVxdWlyZXMgTW9tZW50LmpzID49IDIuNi4wLiBZb3UgYXJlIHVzaW5nIE1vbWVudC5qcyAnICsgbW9tZW50LnZlcnNpb24gKyAnLiBTZWUgbW9tZW50anMuY29tJyk7Cgl9CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCVVucGFja2luZwoJKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCWZ1bmN0aW9uIGNoYXJDb2RlVG9JbnQoY2hhckNvZGUpIHsKCQlpZiAoY2hhckNvZGUgPiA5NikgewoJCQlyZXR1cm4gY2hhckNvZGUgLSA4NzsKCQl9IGVsc2UgaWYgKGNoYXJDb2RlID4gNjQpIHsKCQkJcmV0dXJuIGNoYXJDb2RlIC0gMjk7CgkJfQoJCXJldHVybiBjaGFyQ29kZSAtIDQ4OwoJfQoKCWZ1bmN0aW9uIHVucGFja0Jhc2U2MChzdHJpbmcpIHsKCQl2YXIgaSA9IDAsCgkJCXBhcnRzID0gc3RyaW5nLnNwbGl0KCcuJyksCgkJCXdob2xlID0gcGFydHNbMF0sCgkJCWZyYWN0aW9uYWwgPSBwYXJ0c1sxXSB8fCAnJywKCQkJbXVsdGlwbGllciA9IDEsCgkJCW51bSwKCQkJb3V0ID0gMCwKCQkJc2lnbiA9IDE7CgoJCS8vIGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzCgkJaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NSkgewoJCQlpID0gMTsKCQkJc2lnbiA9IC0xOwoJCX0KCgkJLy8gaGFuZGxlIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwKCQlmb3IgKGk7IGkgPCB3aG9sZS5sZW5ndGg7IGkrKykgewoJCQludW0gPSBjaGFyQ29kZVRvSW50KHdob2xlLmNoYXJDb2RlQXQoaSkpOwoJCQlvdXQgPSA2MCAqIG91dCArIG51bTsKCQl9CgoJCS8vIGhhbmRsZSBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwKCQlmb3IgKGkgPSAwOyBpIDwgZnJhY3Rpb25hbC5sZW5ndGg7IGkrKykgewoJCQltdWx0aXBsaWVyID0gbXVsdGlwbGllciAvIDYwOwoJCQludW0gPSBjaGFyQ29kZVRvSW50KGZyYWN0aW9uYWwuY2hhckNvZGVBdChpKSk7CgkJCW91dCArPSBudW0gKiBtdWx0aXBsaWVyOwoJCX0KCgkJcmV0dXJuIG91dCAqIHNpZ247Cgl9CgoJZnVuY3Rpb24gYXJyYXlUb0ludCAoYXJyYXkpIHsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CgkJCWFycmF5W2ldID0gdW5wYWNrQmFzZTYwKGFycmF5W2ldKTsKCQl9Cgl9CgoJZnVuY3Rpb24gaW50VG9VbnRpbCAoYXJyYXksIGxlbmd0aCkgewoJCWZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKCQkJYXJyYXlbaV0gPSBNYXRoLnJvdW5kKChhcnJheVtpIC0gMV0gfHwgMCkgKyAoYXJyYXlbaV0gKiA2MDAwMCkpOyAvLyBtaW51dGVzIHRvIG1pbGxpc2Vjb25kcwoJCX0KCgkJYXJyYXlbbGVuZ3RoIC0gMV0gPSBJbmZpbml0eTsKCX0KCglmdW5jdGlvbiBtYXBJbmRpY2VzIChzb3VyY2UsIGluZGljZXMpIHsKCQl2YXIgb3V0ID0gW10sIGk7CgoJCWZvciAoaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7CgkJCW91dFtpXSA9IHNvdXJjZVtpbmRpY2VzW2ldXTsKCQl9CgoJCXJldHVybiBvdXQ7Cgl9CgoJZnVuY3Rpb24gdW5wYWNrIChzdHJpbmcpIHsKCQl2YXIgZGF0YSA9IHN0cmluZy5zcGxpdCgnfCcpLAoJCQlvZmZzZXRzID0gZGF0YVsyXS5zcGxpdCgnICcpLAoJCQlpbmRpY2VzID0gZGF0YVszXS5zcGxpdCgnJyksCgkJCXVudGlscyAgPSBkYXRhWzRdLnNwbGl0KCcgJyk7CgoJCWFycmF5VG9JbnQob2Zmc2V0cyk7CgkJYXJyYXlUb0ludChpbmRpY2VzKTsKCQlhcnJheVRvSW50KHVudGlscyk7CgoJCWludFRvVW50aWwodW50aWxzLCBpbmRpY2VzLmxlbmd0aCk7CgoJCXJldHVybiB7CgkJCW5hbWUgICAgOiBkYXRhWzBdLAoJCQlhYmJycyAgIDogbWFwSW5kaWNlcyhkYXRhWzFdLnNwbGl0KCcgJyksIGluZGljZXMpLAoJCQlvZmZzZXRzIDogbWFwSW5kaWNlcyhvZmZzZXRzLCBpbmRpY2VzKSwKCQkJdW50aWxzICA6IHVudGlscwoJCX07Cgl9CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCVpvbmUgb2JqZWN0CgkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJZnVuY3Rpb24gWm9uZSAocGFja2VkU3RyaW5nKSB7CgkJaWYgKHBhY2tlZFN0cmluZykgewoJCQl0aGlzLl9zZXQodW5wYWNrKHBhY2tlZFN0cmluZykpOwoJCX0KCX0KCglab25lLnByb3RvdHlwZSA9IHsKCQlfc2V0IDogZnVuY3Rpb24gKHVucGFja2VkKSB7CgkJCXRoaXMubmFtZSAgICA9IHVucGFja2VkLm5hbWU7CgkJCXRoaXMuYWJicnMgICA9IHVucGFja2VkLmFiYnJzOwoJCQl0aGlzLnVudGlscyAgPSB1bnBhY2tlZC51bnRpbHM7CgkJCXRoaXMub2Zmc2V0cyA9IHVucGFja2VkLm9mZnNldHM7CgkJfSwKCgkJX2luZGV4IDogZnVuY3Rpb24gKHRpbWVzdGFtcCkgewoJCQl2YXIgdGFyZ2V0ID0gK3RpbWVzdGFtcCwKCQkJCXVudGlscyA9IHRoaXMudW50aWxzLAoJCQkJaTsKCgkJCWZvciAoaSA9IDA7IGkgPCB1bnRpbHMubGVuZ3RoOyBpKyspIHsKCQkJCWlmICh0YXJnZXQgPCB1bnRpbHNbaV0pIHsKCQkJCQlyZXR1cm4gaTsKCQkJCX0KCQkJfQoJCX0sCgoJCXBhcnNlIDogZnVuY3Rpb24gKHRpbWVzdGFtcCkgewoJCQl2YXIgdGFyZ2V0ICA9ICt0aW1lc3RhbXAsCgkJCQlvZmZzZXRzID0gdGhpcy5vZmZzZXRzLAoJCQkJdW50aWxzICA9IHRoaXMudW50aWxzLAoJCQkJbWF4ICAgICA9IHVudGlscy5sZW5ndGggLSAxLAoJCQkJb2Zmc2V0LCBvZmZzZXROZXh0LCBvZmZzZXRQcmV2LCBpOwoKCQkJZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7CgkJCQlvZmZzZXQgICAgID0gb2Zmc2V0c1tpXTsKCQkJCW9mZnNldE5leHQgPSBvZmZzZXRzW2kgKyAxXTsKCQkJCW9mZnNldFByZXYgPSBvZmZzZXRzW2kgPyBpIC0gMSA6IGldOwoKCQkJCWlmIChvZmZzZXQgPCBvZmZzZXROZXh0ICYmIHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkKSB7CgkJCQkJb2Zmc2V0ID0gb2Zmc2V0TmV4dDsKCQkJCX0gZWxzZSBpZiAob2Zmc2V0ID4gb2Zmc2V0UHJldiAmJiB0ei5tb3ZlSW52YWxpZEZvcndhcmQpIHsKCQkJCQlvZmZzZXQgPSBvZmZzZXRQcmV2OwoJCQkJfQoKCQkJCWlmICh0YXJnZXQgPCB1bnRpbHNbaV0gLSAob2Zmc2V0ICogNjAwMDApKSB7CgkJCQkJcmV0dXJuIG9mZnNldHNbaV07CgkJCQl9CgkJCX0KCgkJCXJldHVybiBvZmZzZXRzW21heF07CgkJfSwKCgkJYWJiciA6IGZ1bmN0aW9uIChtb20pIHsKCQkJcmV0dXJuIHRoaXMuYWJicnNbdGhpcy5faW5kZXgobW9tKV07CgkJfSwKCgkJb2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkgewoJCQlyZXR1cm4gdGhpcy5vZmZzZXRzW3RoaXMuX2luZGV4KG1vbSldOwoJCX0KCX07CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCUdsb2JhbCBNZXRob2RzCgkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJZnVuY3Rpb24gbm9ybWFsaXplTmFtZSAobmFtZSkgewoJCXJldHVybiAobmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cLy9nLCAnXycpOwoJfQoKCWZ1bmN0aW9uIGFkZFpvbmUgKHBhY2tlZCkgewoJCXZhciBpLCB6b25lLCB6b25lTmFtZTsKCgkJaWYgKHR5cGVvZiBwYWNrZWQgPT09ICJzdHJpbmciKSB7CgkJCXBhY2tlZCA9IFtwYWNrZWRdOwoJCX0KCgkJZm9yIChpID0gMDsgaSA8IHBhY2tlZC5sZW5ndGg7IGkrKykgewoJCQl6b25lID0gbmV3IFpvbmUocGFja2VkW2ldKTsKCQkJem9uZU5hbWUgPSBub3JtYWxpemVOYW1lKHpvbmUubmFtZSk7CgkJCXpvbmVzW3pvbmVOYW1lXSA9IHpvbmU7CgkJCXVwZ3JhZGVMaW5rc1RvWm9uZXMoem9uZU5hbWUpOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRab25lIChuYW1lKSB7CgkJcmV0dXJuIHpvbmVzW25vcm1hbGl6ZU5hbWUobmFtZSldIHx8IG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0TmFtZXMgKCkgewoJCXZhciBpLCBvdXQgPSBbXTsKCgkJZm9yIChpIGluIHpvbmVzKSB7CgkJCWlmICh6b25lcy5oYXNPd25Qcm9wZXJ0eShpKSAmJiB6b25lc1tpXSkgewoJCQkJb3V0LnB1c2goem9uZXNbaV0ubmFtZSk7CgkJCX0KCQl9CgoJCXJldHVybiBvdXQuc29ydCgpOwoJfQoKCWZ1bmN0aW9uIGFkZExpbmsgKGFsaWFzZXMpIHsKCQl2YXIgaSwgYWxpYXM7CgoJCWlmICh0eXBlb2YgYWxpYXNlcyA9PT0gInN0cmluZyIpIHsKCQkJYWxpYXNlcyA9IFthbGlhc2VzXTsKCQl9CgoJCWZvciAoaSA9IDA7IGkgPCBhbGlhc2VzLmxlbmd0aDsgaSsrKSB7CgkJCWFsaWFzID0gYWxpYXNlc1tpXS5zcGxpdCgnfCcpOwoJCQlwdXNoTGluayhhbGlhc1swXSwgYWxpYXNbMV0pOwoJCQlwdXNoTGluayhhbGlhc1sxXSwgYWxpYXNbMF0pOwoJCX0KCX0KCglmdW5jdGlvbiB1cGdyYWRlTGlua3NUb1pvbmVzICh6b25lTmFtZSkgewoJCWlmICghbGlua3Nbem9uZU5hbWVdKSB7CgkJCXJldHVybjsKCQl9CgoJCXZhciBpLAoJCQl6b25lID0gem9uZXNbem9uZU5hbWVdLAoJCQlsaW5rTmFtZXMgPSBsaW5rc1t6b25lTmFtZV07CgoJCWZvciAoaSA9IDA7IGkgPCBsaW5rTmFtZXMubGVuZ3RoOyBpKyspIHsKCQkJY29weVpvbmVXaXRoTmFtZSh6b25lLCBsaW5rTmFtZXNbaV0pOwoJCX0KCgkJbGlua3Nbem9uZU5hbWVdID0gbnVsbDsKCX0KCglmdW5jdGlvbiBjb3B5Wm9uZVdpdGhOYW1lICh6b25lLCBuYW1lKSB7CgkJdmFyIGxpbmtab25lID0gem9uZXNbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBuZXcgWm9uZSgpOwoJCWxpbmtab25lLl9zZXQoem9uZSk7CgkJbGlua1pvbmUubmFtZSA9IG5hbWU7Cgl9CgoJZnVuY3Rpb24gcHVzaExpbmsgKHpvbmVOYW1lLCBsaW5rTmFtZSkgewoJCXpvbmVOYW1lID0gbm9ybWFsaXplTmFtZSh6b25lTmFtZSk7CgoJCWlmICh6b25lc1t6b25lTmFtZV0pIHsKCQkJY29weVpvbmVXaXRoTmFtZSh6b25lc1t6b25lTmFtZV0sIGxpbmtOYW1lKTsKCQl9IGVsc2UgewoJCQlsaW5rc1t6b25lTmFtZV0gPSBsaW5rc1t6b25lTmFtZV0gfHwgW107CgkJCWxpbmtzW3pvbmVOYW1lXS5wdXNoKGxpbmtOYW1lKTsKCQl9Cgl9CgoJZnVuY3Rpb24gbG9hZERhdGEgKGRhdGEpIHsKCQlhZGRab25lKGRhdGEuem9uZXMpOwoJCWFkZExpbmsoZGF0YS5saW5rcyk7CgkJdHouZGF0YVZlcnNpb24gPSBkYXRhLnZlcnNpb247Cgl9CgoJZnVuY3Rpb24gem9uZUV4aXN0cyAobmFtZSkgewoJCWlmICghem9uZUV4aXN0cy5kaWRTaG93RXJyb3IpIHsKCQkJem9uZUV4aXN0cy5kaWRTaG93RXJyb3IgPSB0cnVlOwoJCQkJbG9nRXJyb3IoIm1vbWVudC50ei56b25lRXhpc3RzKCciICsgbmFtZSArICInKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mICFtb21lbnQudHouem9uZSgnIiArIG5hbWUgKyAiJykiKTsKCQl9CgkJcmV0dXJuICEhZ2V0Wm9uZShuYW1lKTsKCX0KCglmdW5jdGlvbiBuZWVkc09mZnNldCAobSkgewoJCXJldHVybiAhIShtLl9hICYmIChtLl90em0gPT09IHVuZGVmaW5lZCkpOwoJfQoKCWZ1bmN0aW9uIGxvZ0Vycm9yIChtZXNzYWdlKSB7CgkJaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykgewoJCQljb25zb2xlLmVycm9yKG1lc3NhZ2UpOwoJCX0KCX0KCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJbW9tZW50LnR6IG5hbWVzcGFjZQoJKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCWZ1bmN0aW9uIHR6ICgpIHsKCQl2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCwgLTEpLAoJCQluYW1lID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXSwKCQkJem9uZSA9IGdldFpvbmUobmFtZSksCgkJCW91dCAgPSBtb21lbnQudXRjLmFwcGx5KG51bGwsIGFyZ3MpOwoKCQlpZiAoem9uZSAmJiBuZWVkc09mZnNldChvdXQpKSB7CgkJCW91dC5hZGQoem9uZS5wYXJzZShvdXQpLCAnbWludXRlcycpOwoJCX0KCgkJb3V0LnR6KG5hbWUpOwoKCQlyZXR1cm4gb3V0OwoJfQoKCXR6LnZlcnNpb24gICAgICA9IFZFUlNJT047Cgl0ei5kYXRhVmVyc2lvbiAgPSAnJzsKCXR6Ll96b25lcyAgICAgICA9IHpvbmVzOwoJdHouX2xpbmtzICAgICAgID0gbGlua3M7Cgl0ei5hZGQgICAgICAgICAgPSBhZGRab25lOwoJdHoubGluayAgICAgICAgID0gYWRkTGluazsKCXR6LmxvYWQgICAgICAgICA9IGxvYWREYXRhOwoJdHouem9uZSAgICAgICAgID0gZ2V0Wm9uZTsKCXR6LnpvbmVFeGlzdHMgICA9IHpvbmVFeGlzdHM7IC8vIGRlcHJlY2F0ZWQgaW4gMC4xLjAKCXR6Lm5hbWVzICAgICAgICA9IGdldE5hbWVzOwoJdHouWm9uZSAgICAgICAgID0gWm9uZTsKCXR6LnVucGFjayAgICAgICA9IHVucGFjazsKCXR6LnVucGFja0Jhc2U2MCA9IHVucGFja0Jhc2U2MDsKCXR6Lm5lZWRzT2Zmc2V0ICA9IG5lZWRzT2Zmc2V0OwoJdHoubW92ZUludmFsaWRGb3J3YXJkICAgPSB0cnVlOwoJdHoubW92ZUFtYmlndW91c0ZvcndhcmQgPSBmYWxzZTsKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJSW50ZXJmYWNlIHdpdGggTW9tZW50LmpzCgkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJdmFyIGZuID0gbW9tZW50LmZuOwoKCW1vbWVudC50eiA9IHR6OwoKCW1vbWVudC51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAobW9tLCBrZWVwVGltZSkgewoJCXZhciBvZmZzZXQ7CgkJaWYgKG1vbS5feikgewoJCQlvZmZzZXQgPSBtb20uX3oub2Zmc2V0KG1vbSk7CgkJCWlmIChNYXRoLmFicyhvZmZzZXQpIDwgMTYpIHsKCQkJCW9mZnNldCA9IG9mZnNldCAvIDYwOwoJCQl9CgkJCW1vbS56b25lKG9mZnNldCwga2VlcFRpbWUpOwoJCX0KCX07CgoJZm4udHogPSBmdW5jdGlvbiAobmFtZSkgewoJCWlmIChuYW1lKSB7CgkJCXRoaXMuX3ogPSBnZXRab25lKG5hbWUpOwoJCQlpZiAodGhpcy5feikgewoJCQkJbW9tZW50LnVwZGF0ZU9mZnNldCh0aGlzKTsKCQkJfSBlbHNlIHsKCQkJCWxvZ0Vycm9yKCJNb21lbnQgVGltZXpvbmUgaGFzIG5vIGRhdGEgZm9yICIgKyBuYW1lICsgIi4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL2RhdGEtbG9hZGluZy8uIik7CgkJCX0KCQkJcmV0dXJuIHRoaXM7CgkJfQoJCWlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96Lm5hbWU7IH0KCX07CgoJZnVuY3Rpb24gYWJicldyYXAgKG9sZCkgewoJCXJldHVybiBmdW5jdGlvbiAoKSB7CgkJCWlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96LmFiYnIodGhpcyk7IH0KCQkJcmV0dXJuIG9sZC5jYWxsKHRoaXMpOwoJCX07Cgl9CgoJZnVuY3Rpb24gcmVzZXRab25lV3JhcCAob2xkKSB7CgkJcmV0dXJuIGZ1bmN0aW9uICgpIHsKCQkJdGhpcy5feiA9IG51bGw7CgkJCXJldHVybiBvbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCQl9OwoJfQoKCWZuLnpvbmVOYW1lID0gYWJicldyYXAoZm4uem9uZU5hbWUpOwoJZm4uem9uZUFiYnIgPSBhYmJyV3JhcChmbi56b25lQWJicik7Cglmbi51dGMgICAgICA9IHJlc2V0Wm9uZVdyYXAoZm4udXRjKTsKCgkvLyBDbG9uaW5nIGEgbW9tZW50IHNob3VsZCBpbmNsdWRlIHRoZSBfeiBwcm9wZXJ0eS4KCXZhciBtb21lbnRQcm9wZXJ0aWVzID0gbW9tZW50Lm1vbWVudFByb3BlcnRpZXM7CglpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1vbWVudFByb3BlcnRpZXMpID09PSAnW29iamVjdCBBcnJheV0nKSB7CgkJLy8gbW9tZW50IDIuOC4xKwoJCW1vbWVudFByb3BlcnRpZXMucHVzaCgnX3onKTsKCQltb21lbnRQcm9wZXJ0aWVzLnB1c2goJ19hJyk7Cgl9IGVsc2UgaWYgKG1vbWVudFByb3BlcnRpZXMpIHsKCQkvLyBtb21lbnQgMi43LjAKCQltb21lbnRQcm9wZXJ0aWVzLl96ID0gbnVsbDsKCX0KCglsb2FkRGF0YSh7CgkJInZlcnNpb24iOiAiMjAxNGoiLAoJCSJ6b25lcyI6IFsKCQkJIkFmcmljYS9BYmlkamFufExNVCBHTVR8Zy44IDB8MDF8LTJsZFhILlEiLAoJCQkiQWZyaWNhL0FjY3JhfExNVCBHTVQgR0hTVHwuUSAwIC1rfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCYlguOCA2dHpYLjggTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIiwKCQkJIkFmcmljYS9BZGRpc19BYmFiYXxMTVQgRUFUIEJFQVQgQkVBVVR8LTJyLmcgLTMwIC0ydSAtMkp8MDEyMzF8LTFGM0NyLmcgM0R6ci5nIG9rTXUgTUZYSiIsCgkJCSJBZnJpY2EvQWxnaWVyc3xQTVQgV0VUIFdFU1QgQ0VUIENFU1R8LTkubCAwIC0xMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEzNDM0MzEzMTIxMjM0MzEyMTN8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCBEQTAgSW1vMCByZDAgRGUwIDlYejAgMWZiMCAxYXAwIDE2SzAgMnlvMCBtRXAwIGh3TDAganhBMCAxMUEwIGREZDAgMTdiMCAxMUIwIDFjTjAgMkR5MCAxY04wIDFmQjAgMWNMMCIsCgkJCSJBZnJpY2EvQmFuZ3VpfExNVCBXQVR8LWQuQSAtMTB8MDF8LTIyeTBkLkEiLAoJCQkiQWZyaWNhL0Jpc3NhdXxMTVQgV0FUIEdNVHwxMi5rIDEwIDB8MDEyfC0ybGRXVi5FIDJ4b25WLkUiLAoJCQkiQWZyaWNhL0JsYW50eXJlfExNVCBDQVR8LTJhLmsgLTIwfDAxfC0yR0plYS5rIiwKCQkJIkFmcmljYS9DYWlyb3xFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWJJTzAgdmIwIDFpcDAgMTF6MCAxaU4wIDFuejAgMTJwMCAxcHowIDEwTjAgMXB6MCAxNnAwIDFqejAgczNkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMVdMMCByZDAgMVJ6MCB3cDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxcUwwIFhkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFueTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCBXTDAgMXFOMCBSYjAgMXdwMCBPbjAgMXpkMCBMejAgMUVOMCBGYjAgYzEwIDhuMCA4TmQwIGdMMCBlMTAgbW4wIDFvMTAganowIGdOMCBwYjAgMXFOMCBkWDAgZTEwIHh6MCAxbzEwIGJiMCBlMTAgQW4wIDFvMTAgNXowIGUxMCBGWDAgMW8xMCAyTDAgZTEwIElMMCAxQzEwIEx6MCAxd3AwIFRYMCAxcU4wIFdMMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCIsCgkJCSJBZnJpY2EvQ2FzYWJsYW5jYXxMTVQgV0VUIFdFU1QgQ0VUfHUuayAwIC0xMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ01udC5FIDEzMEx0LkUgcmIwIERkMCBkVmIwIGI2cDAgVFgwIEVvQjAgTEwwIGduZDAgcnowIDQzZDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIGRFcDAgNG1uMCBTeU4wIEFMMCAxTmQwIHduMCAxRkIwIERiMCAxemQwIEx6MCAxTmYwIHdNMCBjbzAgZ28wIDFvMDAgczAwIGRBMCB2YzAgMTFBMCBBMDAgZTAwIHkwMCAxMUEwIHVvMCBlMDAgREEwIDExQTAgckEwIGUwMCBKYzAgV00wIG0wMCBnTTAgTTAwIFdNMCBqYzAgZTAwIFJBMCAxMUEwIGRBMCBlMDAgVW8wIDExQTAgODAwIGdNMCBYYzAgMTFBMCA1YzAgZTAwIDE3QTAgV00wIDJvMCBlMDAgMWFvMCAxOUEwIDFnMDAgMTZNMCAxaU0wIDE0MDAgMWxBMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcW8wIDEyMDAgMWtNMCAxNE0wIDFpMDAiLAoJCQkiQWZyaWNhL0NldXRhfFdFVCBXRVNUIENFVCBDRVNUfDAgLTEwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNUtOMCAxMXowIGRyZDAgMThvMCAzSTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxeTdwMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0VkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBZnJpY2EvRWxfQWFpdW58TE1UIFdBVCBXRVQgV0VTVHxRLk0gMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMXJEejcuYyAxR1ZBNy5jIDZMMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgMWNCQjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdW8wIGUwMCBEQTAgMTFBMCByQTAgZTAwIEpjMCBXTTAgbTAwIGdNMCBNMDAgV00wIGpjMCBlMDAgUkEwIDExQTAgZEEwIGUwMCBVbzAgMTFBMCA4MDAgZ00wIFhjMCAxMUEwIDVjMCBlMDAgMTdBMCBXTTAgMm8wIGUwMCAxYW8wIDE5QTAgMWcwMCAxNk0wIDFpTTAgMTQwMCAxbEEwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxbzAgMTIwMCAxa00wIDE0TTAgMWkwMCIsCgkJCSJBZnJpY2EvSm9oYW5uZXNidXJnfFNBU1QgU0FTVCBTQVNUfC0xdSAtMjAgLTMwfDAxMjEyMXwtMkdKZHUgMUFqZHUgMWNMMCAxY04wIDFjTDAiLAoJCQkiQWZyaWNhL0p1YmF8TE1UIENBVCBDQVNUIEVBVHwtMmEuOCAtMjAgLTMwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMXlXMmEuOCAxekswYS44IDE2TDAgMWlOMCAxN2IwIDFqZDAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxN1gwIDFoQjAgMThuMCAxaGQwIDE5YjAgMWdwMCAxOXowIDFpTjAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxOG4wIDFoZDAgMThMMCAxZ04wIDE5YjAgMWdwMCAxOXowIDFpTjAgMTd6MCAxaTEwIDE3WDAgeUdkMCIsCgkJCSJBZnJpY2EvTW9ucm92aWF8TU1UIExSVCBHTVR8SC44IEkudSAwfDAxMnwtMjNMemcuUSAyOXMwMS5tIiwKCQkJIkFmcmljYS9OZGphbWVuYXxMTVQgV0FUIFdBU1R8LTEwLmMgLTEwIC0yMHwwMTIxfC0ybGUxMC5jIDJKM2MwLmMgV24wIiwKCQkJIkFmcmljYS9Ucmlwb2xpfExNVCBDRVQgQ0VTVCBFRVR8LVEuSSAtMTAgLTIwIC0yMHwwMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTMxMjMxMjN8LTIxSmNRLkkgMWhuQlEuSSB2eDAgNGlQMCB4eDAgNGVOMCBCYjAgN2lwMCBVMG4wIEExMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWVOMCAxYmIwIDFlMTAgMWNMMCAxYzEwIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxcTEwIGZBbjAgMWVwMCAxZGIwIEFLcTAgVEEwIDFvMDAiLAoJCQkiQWZyaWNhL1R1bmlzfFBNVCBDRVQgQ0VTVHwtOS5sIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMm5jbzkubCAxOHBhOS5sIDFxTTAgREEwIDNUYzAgMTFCMCAxemUwIFdNMCA3ejAgM2QwIDE0TDAgMWNOMCAxZjkwIDFhcjAgMTZKMCAxZ1hCMCBXTTAgMXJBMCAxMWMwIG53bzAgS28wIDFjTTAgMWNNMCAxckEwIDEwTTAgenVNMCAxME4wIDFhTjAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAiLAoJCQkiQWZyaWNhL1dpbmRob2VrfFNXQVQgU0FTVCBTQVNUIENBVCBXQVQgV0FTVHwtMXUgLTIwIC0zMCAtMjAgLTEwIC0yMHwwMTIxMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDV8LTJHSmR1IDFBamR1IDFjTDAgMVNxTDAgOU5BMCAxMUQwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxMUIwIDFuWDAgMTFCMCIsCgkJCSJBbWVyaWNhL0FkYWt8TlNUIE5XVCBOUFQgQlNUIEJEVCBBSFNUIEhBU1QgSEFEVHxiMCBhMCBhMCBiMCBhMCBhMCBhMCA5MHwwMTIwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3U1gwIDh3VzAgaUIwIFFsYjAgNTJPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNtMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvQW5jaG9yYWdlfENBVCBDQVdUIENBUFQgQUhTVCBBSERUIFlTVCBBS1NUIEFLRFR8YTAgOTAgOTAgYTAgOTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1QwMCA4d1gwIGlBMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfExNVCBBU1R8NDYuNCA0MHwwMXwtMmtOdlIuVSIsCgkJCSJBbWVyaWNhL0FudGlndWF8TE1UIEVTVCBBU1R8NDcuYyA1MCA0MHwwMTJ8LTJrTnZRLk0gMXl4QVEuTSIsCgkJCSJBbWVyaWNhL0FyYWd1YWluYXxMTVQgQlJUIEJSU1R8M2MuTSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x3TC5jIEhkS0wuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBkTU4wIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCBueTEwIEx6MCIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXN8Q01UIEFSVCBBUlNUIEFSVCBBUlNUfDRnLk0gNDAgMzAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0MzQzNDM0MzIzNDM0M3wtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgZzBwMCAxME0wIGozYzAgdUwwIDFxTjAgV0wwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxDTVQgQVJUIEFSU1QgQVJUIEFSU1QgV0FSVHw0Zy5NIDQwIDMwIDMwIDIwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MzQzNDM0NTQzNDMyMzUzNDN8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIGcwcDAgMTBNMCBha28wIDdCMCA4emIwIHVMMCIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfENNVCBBUlQgQVJTVCBBUlQgQVJTVCBXQVJUfDRnLk0gNDAgMzAgMzAgMjAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0MzQ1NDM0MzIzNDM0M3wtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgZzBwMCAxME0wIGozYzAgdUwwIDFxTjAgV0wwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fENNVCBBUlQgQVJTVCBBUlQgQVJTVCBXQVJUIFdBUlNUfDRnLk0gNDAgMzAgMzAgMjAgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0NTY1NDM0MzIzNDN8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF6ZTAgVFgwIDFsZDAgV0swIDF3cDAgVFgwIGcwcDAgMTBNMCBqM2MwIHVMMCIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9MYV9SaW9qYXxDTVQgQVJUIEFSU1QgQVJUIEFSU1QgV0FSVHw0Zy5NIDQwIDMwIDMwIDIwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MzQzNDM0NTM0MzQzMjM1MzQzfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgZzBwMCAxME0wIGFrbzAgN0IwIDh6YjAgdUwwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL01lbmRvemF8Q01UIEFSVCBBUlNUIEFSVCBBUlNUIFdBUlQgV0FSU1R8NGcuTSA0MCAzMCAzMCAyMCA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDM0MzQ1NjU2NTQzMjM1MzQzfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxdTIwIFNMMCAxdmQwIFRiMCAxd3AwIFRXMCBnMHAwIDEwTTAgYWdNMCBPcDAgN1RYMCB1TDAiLAoJCQkiQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zfENNVCBBUlQgQVJTVCBBUlQgQVJTVCBXQVJUfDRnLk0gNDAgMzAgMzAgMjAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0MzQzNDM0MzIzNTM0M3wtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgZzBwMCAxME0wIGFrbzAgN0IwIDh6YjAgdUwwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL1NhbHRhfENNVCBBUlQgQVJTVCBBUlQgQVJTVCBXQVJUfDRnLk0gNDAgMzAgMzAgMjAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0MzQ1NDM0MzIzNDN8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIGcwcDAgMTBNMCBqM2MwIHVMMCIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbnxDTVQgQVJUIEFSU1QgQVJUIEFSU1QgV0FSVHw0Zy5NIDQwIDMwIDMwIDIwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MzQzNDM0NTM0MzQzMjM1MzQzfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgZzBwMCAxME0wIGFrMDAgbTEwIDhsYjAgdUwwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9MdWlzfENNVCBBUlQgQVJTVCBBUlQgQVJTVCBXQVJUIFdBUlNUfDRnLk0gNDAgMzAgMzAgMjAgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQzNDM0NTY1MzYzNTM0NjU2NTN8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgWFgwIDFxMjAgU0wwIEFOMCBraW4wIDEwTTAgYWswMCBtMTAgOGxiMCA4TDAgamQwIDFxTjAgV0wwIDFxTjAiLAoJCQkiQW1lcmljYS9BcmdlbnRpbmEvVHVjdW1hbnxDTVQgQVJUIEFSU1QgQVJUIEFSU1QgV0FSVHw0Zy5NIDQwIDMwIDMwIDIwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MzQzNDM0NTQzNDMyMzUzNDM0M3wtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgZzBwMCAxME0wIGFrbzAgNE4wIDhCWDAgdUwwIDFxTjAgV0wwIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWF8Q01UIEFSVCBBUlNUIEFSVCBBUlNUIFdBUlR8NGcuTSA0MCAzMCAzMCAyMCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDM0MzQzNDM0MzQzMjM1MzQzfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBnMHAwIDEwTTAgYWpBMCA4cDAgOHpiMCB1TDAiLAoJCQkiQW1lcmljYS9BcnViYXxMTVQgQU5UIEFTVHw0ei5MIDR1IDQwfDAxMnwtMmtWN28uZCAyOEtMUy5kIiwKCQkJIkFtZXJpY2EvQXN1bmNpb258QU1UIFBZVCBQWVQgUFlTVHwzTy5FIDQwIDMwIDMwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxM3wtMXg1ODkuayAxREtNOS5rIDNDTDAgM0RkMCAxMEwwIDFwQjAgMTBuMCAxcEIwIDEwbjAgMXBCMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxbEIwIDE0bjAgMWRkMCAxY0wwIDFmZDAgV0wwIDFyZDAgMWFMMCAxZEIwIFh6MCAxcXAwIFhiMCAxcU4wIDEwTDAgMXJCMCBUWDAgMXRCMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIFdOMCAxcUwwIDExQjAgMW5YMCAxaXAwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIDE5WDAgMWExMCAxZnowIDFhMTAgMWZ6MCAxY04wIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCIsCgkJCSJBbWVyaWNhL0F0aWtva2FufENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTIzNHwtMjVUUTAgMWluMCBSbmIwIDNqZTAgOHgzMCBpdzAiLAoJCQkiQW1lcmljYS9CYWhpYXxMTVQgQlJUIEJSU1R8MnkuNCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHAuVSBIZExwLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgbDVCMCBSYjAiLAoJCQkiQW1lcmljYS9CYWhpYV9CYW5kZXJhc3xMTVQgTVNUIENTVCBQU1QgTURUIENEVHw3MSA3MCA2MCA4MCA2MCA1MHwwMTIxMjEyMTMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuVzAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAiLAoJCQkiQW1lcmljYS9CYXJiYWRvc3xMTVQgQk1UIEFTVCBBRFR8M1cudCAzVy50IDQwIDMwfDAxMjMyMzIzMjMyfC0xUTBJMS52IGpzTTAgMU9EQzEudiBJTDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxbGQwIDEzYjAiLAoJCQkiQW1lcmljYS9CZWxlbXxMTVQgQlJUIEJSU1R8M2QuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdLLjQgSGRLSy40IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIiwKCQkJIkFtZXJpY2EvQmVsaXplfExNVCBDU1QgQ0hEVCBDRFR8NVEuTSA2MCA1dSA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzEzMXwtMmtCdTcuYyBmUEE3LmMgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDFmME11IHFuMCBseEIwIG1uMCIsCgkJCSJBbWVyaWNhL0JsYW5jLVNhYmxvbnxBU1QgQURUIEFXVCBBUFR8NDAgMzAgMzAgMzB8MDEwMjMwfC0yNVRTMCAxaW4wIFVHcDAgOHg1MCBpdTAiLAoJCQkiQW1lcmljYS9Cb2FfVmlzdGF8TE1UIEFNVCBBTVNUfDQyLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlYuayBIZEtWLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgc21wMCBXTDAgMXRCMCAyTDAiLAoJCQkiQW1lcmljYS9Cb2dvdGF8Qk1UIENPVCBDT1NUfDRVLmcgNTAgNDB8MDEyMXwtMmViNzMuSSAzOHlvMy5JIDJlbjAiLAoJCQkiQW1lcmljYS9Cb2lzZXxQU1QgUERUIE1TVCBNV1QgTVBUIE1EVHw4MCA3MCA3MCA2MCA2MCA2MHwwMTAxMDIzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yNjFxMCAxblgwIDExQjAgMW5YMCA4QzEwIEpDTDAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIERkMCAxS24wIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0NhbWJyaWRnZV9CYXl8enp6IE1TVCBNV1QgTVBUIE1ERFQgTURUIENTVCBDRFQgRVNUfDAgNzAgNjAgNjAgNTAgNjAgNjAgNTAgNTB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTY3ODY1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMjFKYzAgUk85MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUEwIDFuWDAgMkswIFdRMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9DYW1wb19HcmFuZGV8TE1UIEFNVCBBTVNUfDNDLnMgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC53IEhkTGwudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCAxQzEwIEx6MCAxSXAwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxQzEwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxQzEwIEx6MCAxQzEwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIFJiMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIiwKCQkJIkFtZXJpY2EvQ2FuY3VufExNVCBDU1QgRVNUIEVEVCBDRFR8NUwuNCA2MCA1MCA0MCA1MHwwMTIzMjMyMzQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFHMCAycTJvMCB5TEIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgTHowIHhCMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvQ2FyYWNhc3xDTVQgVkVUIFZFVHw0ci5FIDR1IDQwfDAxMjF8LTJrVjd3LmsgMjhLTTIuayAxSXdPdSIsCgkJCSJBbWVyaWNhL0NheWVubmV8TE1UIEdGVCBHRlR8M3QuayA0MCAzMHwwMTJ8LTJtcnd1LkUgMmdXb3UuRSIsCgkJCSJBbWVyaWNhL0NheW1hbnxLTVQgRVNUfDU3LmIgNTB8MDF8LTJsMXVRLk4iLAoJCQkiQW1lcmljYS9DaGljYWdvfENTVCBDRFQgRVNUIENXVCBDUFR8NjAgNTAgNTAgNTAgNTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDM0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDF3cDAgVFgwIFdOMCAxcUwwIDFjTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDExQjAgMUh6MCAxNHAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0NoaWh1YWh1YXxMTVQgTVNUIENTVCBDRFQgTURUfDc0LmsgNzAgNjAgNTAgNjB8MDEyMTIxMjMyMzI0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIDJ6UU4wIDFsYjAgMTRwMCAxbGIwIDE0cTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvQ29zdGFfUmljYXxTSk1UIENTVCBDRFR8NUEuZCA2MCA1MHwwMTIxMjEyMTIxfC0xWGQ2bi5MIDJsdTBuLkwgRGIwIDFLcDAgRGIwIHBSQjAgMTViMCAxa3AwIG1MMCIsCgkJCSJBbWVyaWNhL0NyZXN0b258TVNUIFBTVHw3MCA4MHwwMTB8LTI5RFIwIDQzQjAiLAoJCQkiQW1lcmljYS9DdWlhYmF8TE1UIEFNVCBBTVNUfDNJLmsgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2YuRSBIZExmLkUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgNGExMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUMxMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUMxMCBMejAgMUMxMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBSYjAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCIsCgkJCSJBbWVyaWNhL0Rhbm1hcmtzaGF2bnxMTVQgV0dUIFdHU1QgR01UfDFlLkUgMzAgMjAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMmE1V0ouayAyejVmSi5rIDE5VTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgREMwIiwKCQkJIkFtZXJpY2EvRGF3c29ufFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAganJBMCBmTmQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0Rhd3Nvbl9DcmVla3xQU1QgUERUIFBXVCBQUFQgTVNUfDgwIDcwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTR8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgTUwwIiwKCQkJIkFtZXJpY2EvRGVudmVyfE1TVCBNRFQgTVdUIE1QVHw3MCA2MCA2MCA2MHwwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCBtbjAgT3JkMCA4eDIwIGl4MCBMQ04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9EZXRyb2l0fExNVCBDU1QgRVNUIEVXVCBFUFQgRURUfDV3LmIgNjAgNTAgNDAgNDAgNDB8MDEyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTJDZ2lyLk4gcGVxci5OIDE1NkwwIDh4NDAgaXYwIDZmZDAgMTF6MCBKeTEwIFNMMCBkbkIwIDFjTDAgczEwIDFWejAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0VkbW9udG9ufExNVCBNU1QgTURUIE1XVCBNUFR8N3guUSA3MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMnlkNHEuOCBzaGRxLjggMWluMCAxN2QwIGh6MCAyZEIwIDFmejAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCBJR04wIDh4MjAgaXgwIDNOQjAgMTF6MCBMRkIwIDFjTDAgM0NwMCAxY0wwIDY2TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9FaXJ1bmVwZXxMTVQgQUNUIEFDU1QgQU1UfDRELnMgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzMXwtMmdsdmsudyBIZExrLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjAgeVRkMCBkNVgwIiwKCQkJIkFtZXJpY2EvRWxfU2FsdmFkb3J8TE1UIENTVCBDRFR8NVUuTSA2MCA1MHwwMTIxMjF8LTFYaUczLmMgMkZ2YzMuYyBXTDAgMXFOMCBXTDAiLAoJCQkiQW1lcmljYS9FbnNlbmFkYXxMTVQgTVNUIFBTVCBQRFQgUFdUIFBQVHw3TS40IDcwIDgwIDcwIDcwIDcwfDAxMjEyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRTAgNFBYMCA4bU0wIDhsYzAgU04wIDFjTDAgcEhCMCA4M3IwIHpJMCA1TzEwIDFSejAgY09QMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIEJVcDAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0ZvcnRfV2F5bmV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDQwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBRSTEwIERiMCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDVUejAgMW8xMCBxTGIwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9Gb3J0YWxlemF8TE1UIEJSVCBCUlNUfDJ5IDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhxIEhkTHEgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjAiLAoJCQkiQW1lcmljYS9HbGFjZV9CYXl8TE1UIEFTVCBBRFQgQVdUIEFQVHwzWC5NIDQwIDMwIDMwIDMwfDAxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSTAuYyBDd08wLmMgMWluMCBVR3AwIDh4NTAgaXUwIGlxMTAgMTF6MCBKZzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvR29kdGhhYnxMTVQgV0dUIFdHU1R8M3EuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVVeC40IDJ6NWR4LjQgMTlVMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkFtZXJpY2EvR29vc2VfQmF5fE5TVCBORFQgTlNUIE5EVCBOV1QgTlBUIEFTVCBBRFQgQUREVHwzdS5RIDJ1LlEgM3UgMnUgMnUgMnUgNDAgMzAgMjB8MDEwMjMyMzIzMjMyMzIzMjQ1MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY4Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0yNVRTdC44IDFpbjAgRFhiMCAySGJYLjggV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgN1VIdSBpdHUgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBXTDAgMWxkMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgUzEwIGcwdSAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRuMSAxbGIwIDE0cDAgMW5XMCAxMUMwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpjWCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0dyYW5kX1R1cmt8S01UIEVTVCBFRFQgQVNUfDU3LmIgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyM3wtMmwxdVEuTiAySEhCUS5OIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9HdWF0ZW1hbGF8TE1UIENTVCBDRFR8NjIuNCA2MCA1MHwwMTIxMjEyMTIxfC0yNEtoVi5VIDJlZlhWLlUgQW4wIG10ZDAgTnowIGlmQjAgMTdiMCB6REIwIDExejAiLAoJCQkiQW1lcmljYS9HdWF5YXF1aWx8UU1UIEVDVHw1ZSA1MHwwMXwtMXlWU0siLAoJCQkiQW1lcmljYS9HdXlhbmF8TE1UIEdCR1QgR1lUIEdZVCBHWVR8M1EuRSAzSiAzSiAzMCA0MHwwMTIzNHwtMmR2VTcuayAyNEp6US5rIG1sYzAgQnhiZiIsCgkJCSJBbWVyaWNhL0hhbGlmYXh8TE1UIEFTVCBBRFQgQVdUIEFQVHw0ZS5vIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0hKLkEgeHp6Si5BIDFkYjAgM0kzMCAxaW4wIDNIWDAgSUwwIDFFMTAgTUwwIDF5TjAgUGIwIDFCZDAgTW4wIDFCZDAgUnowIDF3MTAgWGIwIDF3MTAgTFgwIDF3MTAgWGIwIDF3MTAgTHowIDFDMTAgSnowIDFFMTAgT0wwIDF5TjAgVW4wIDFxcDAgWGIwIDFxcDAgMTFYMCAxdzEwIEx6MCAxSEIwIExYMCAxQzEwIEZYMCAxdzEwIFhiMCAxcXAwIFhiMCAxQkIwIExYMCAxdGQwIFhiMCAxcXAwIFhiMCBSZjAgOHg1MCBpdTAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAzUXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgNmkxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9IYXZhbmF8SE1UIENTVCBDRFR8NXQuQSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFNZXV1Lm8gNzJ6dS5vIE1MMCBzbGQwIEFuMCAxTmQwIERiMCAxTmQwIEFuMCA2RXAwIEFuMCAxTmQwIEFuMCBKRGQwIE1uMCAxQXAwIE9uMCAxZmQwIDExWDAgMXFOMCBXTDAgMXdwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxNG4wIDFsZDAgMTRMMCAxa04wIDE1YjAgMWtwMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWZCMCAxMXowIDE0cDAgMW5YMCAxMUIwIDFuWDAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxNG4wIDFsZDAgMTRuMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMWExMCAxaW4wIDFhMTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxN2MwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxMUEwIDZpMDAgUmMwIDF3bzAgVTAwIDF0QTAgUmMwIDF3bzAgVTAwIDF3bzAgVTAwIDF6YzAgVTAwIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAiLAoJCQkiQW1lcmljYS9IZXJtb3NpbGxvfExNVCBNU1QgQ1NUIFBTVCBNRFR8N24uUSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvSW5kaWFuYS9Lbm94fENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgM0NuMCA4d3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIHo4bzAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0luZGlhbmEvTWFyZW5nb3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDU0NTQ1NDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGR5TjAgMTF6MCA2ZmQwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVkEwIExBMCAxQlgwIDFlNnAwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmd8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgbmpYMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAzRmIwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDE5Y28wIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9JbmRpYW5hL1ZldmF5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBrUEIwIEF3bjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxbG5kMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvSW5kaWFuYS9WaW5jZW5uZXN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIGcwcDAgMTF6MCAxbzEwIDExejAgMXFMMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgY2FMMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxbzAwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvSW5kaWFuYS9XaW5hbWFjfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YTAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9JbnV2aWt8enp6IFBTVCBQRERUIE1TVCBNRFR8MCA4MCA2MCA3MCA2MHwwMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC1GbkEwIHRXVTAgMWZBMCB3UGUwIDJwejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvSXFhbHVpdHx6enogRVdUIEVQVCBFU1QgRUREVCBFRFQgQ1NUIENEVHwwIDQwIDQwIDUwIDMwIDQwIDYwIDUwfDAxMjM0MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTY3MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzfC0xNkswMCA3blgwIGl2MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUMwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9KYW1haWNhfEtNVCBFU1QgRURUfDU3LmIgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmwxdVEuTiAydU0xUS5OIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCIsCgkJCSJBbWVyaWNhL0p1bmVhdXxQU1QgUFdUIFBQVCBQRFQgWURUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgODAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0MDMwMzAzNTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0tlbnR1Y2t5L0xvdWlzdmlsbGV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgM0ZkMCBOYjAgTFBkMCAxMXowIFJCMCA4eDMwIGl3MCBCYjAgMTBOMCAyYkIwIDhpbjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgeHowIGdzbzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVkEwIExBMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL0tlbnR1Y2t5L01vbnRpY2VsbG98Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBTV3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9MYV9QYXp8Q01UIEJPU1QgQk9UfDR3LkEgM3cuQSA0MHwwMTJ8LTF4MzdyLm8gMTNiMCIsCgkJCSJBbWVyaWNhL0xpbWF8TE1UIFBFVCBQRVNUfDU4LkEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMXwtMnR5R1AubyAxYkR6UC5vIHpYMCAxYU4wIDFjTDAgMWNOMCAxY0wwIDFQckIwIHpYMCAxTzEwIHpYMCA2R3AwIHpYMCA5OHAwIHpYMCIsCgkJCSJBbWVyaWNhL0xvc19BbmdlbGVzfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgNVdwMCAxVmIwIDNkQjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9NYWNlaW98TE1UIEJSVCBCUlNUfDJtLlEgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4Qi44IEhkTEIuOCAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBkTU4wIEx6MCA4UTEwIFdMMCAxdEIwIDV6MCAybU4wIE9uMCIsCgkJCSJBbWVyaWNhL01hbmFndWF8TU1UIENTVCBFU1QgQ0RUfDVKLmMgNjAgNTAgNTB8MDEyMTMxMzEyMTIxMzEzMXwtMXF1aWUuTSAxeUFNZS5NIDRtbjAgOVVwMCBEejAgMUsxMCBEejAgczNGMCAxS0gwIERCMCA5SW4wIGs4cDAgMTlYMCAxbzMwIDExeTAiLAoJCQkiQW1lcmljYS9NYW5hdXN8TE1UIEFNVCBBTVNUfDQwLjQgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZYLlUgSGRLWC5VIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIGRQQjAgT24wIiwKCQkJIkFtZXJpY2EvTWFydGluaXF1ZXxGRk1UIEFTVCBBRFR8NDQuayA0MCAzMHwwMTIxfC0ybVBUVC5FIDJMUGJULkUgMTlYMCIsCgkJCSJBbWVyaWNhL01hdGFtb3Jvc3xMTVQgQ1NUIENEVHw2RSA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL01hemF0bGFufExNVCBNU1QgQ1NUIFBTVCBNRFR8NzUuRSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAiLAoJCQkiQW1lcmljYS9NZW5vbWluZWV8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTA0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgTENOMCAxZnowIDY0MTAgOUpiMCAxY00wIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL01lcmlkYXxMTVQgQ1NUIEVTVCBDRFR8NVcucyA2MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC0xVVFHMCAycTJvMCAyaHowIHd1MzAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAiLAoJCQkiQW1lcmljYS9NZXRsYWthdGxhfFBTVCBQV1QgUFBUIFBEVHw4MCA3MCA3MCA3MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwfC0xN1QyMCA4eDEwIGl5MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAiLAoJCQkiQW1lcmljYS9NZXhpY29fQ2l0eXxMTVQgTVNUIENTVCBDRFQgQ1dUfDZBLkEgNzAgNjAgNTAgNTB8MDEyMTIxMjMyMzI0MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgZ0VuMCBUWDAgM3hkMCBKYjAgNnpCMCBTTDAgZTVkMCAxN2IwIDFQZmYwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvTWlxdWVsb258TE1UIEFTVCBQTVNUIFBNRFR8M0kuRSA0MCAzMCAyMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJtS2tmLmsgMkxUQWYuayBnUTEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvTW9uY3RvbnxFU1QgQVNUIEFEVCBBV1QgQVBUfDUwIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSDAgQ3dOMCAxaW4wIHpBbzAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFLMTAgTHowIDF6QjAgTlgwIDF1MTAgV24wIFMyMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG4xIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJlWCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvTW9udGVycmV5fExNVCBDU1QgQ0RUfDZGLmcgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVVRRzAgMkZqQzAgMW5YMCBpNnAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvTW9udGV2aWRlb3xNTVQgVVlUIFVZSFNUIFVZU1QgVVlUIFVZSFNUfDNJLkkgM3UgMzAgMjAgMzAgMnV8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDM0MzQzNDM0MzQ1NDU0NTQzNDUzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yMFVJZi5nIDhqekouZyAxY0x1IDFkY3UgMWNMdSAxZGN1IDFjTHUgaXJjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSBXTHUgMXFNdSBXTHUgMXFNdSAxMXp1IDFvMHUgMTF6dSBOQXUgMTFidSAyaU11IHpXdSBEcTEwIDE5WDAgcGQwIGp6MCBjbTEwIDE5WDAgMWZCMCAxb24wIDExZDAgMW9MMCAxbkIwIDFmenUgMWFvdSAxZnp1IDFhb3UgMWZ6dSAzbkF1IEpiMCAzTU4wIDFTTHUgNGp6dSAyUEIwIExiMCAzRGQwIDFwYjAgaXhkMCBBbjAgMU1OMCBBbjAgMXdwMCBPbjAgMXdwMCBSYjAgMXpkMCBPbjAgMXdwMCBSYjAgczhwMCAxZkIwIDFpcDAgMTF6MCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMWxkMCAxNG4wIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxNG4wIDFsZDAgMTRuMCAxbGQwIDE0bjAgMWxkMCAxNG4wIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCIsCgkJCSJBbWVyaWNhL01vbnRyZWFsfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjh0UjAgYlYwIDJtMzAgMWluMCAxMjF1IDFuYjAgMWcxMCAxMXowIDFvMHUgMTF6dSAxbzB1IDExenUgM1ZBdSBSenUgMXFNdSBXTHUgMXFNdSBXTHUgMXFLdSBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgNGtPMCA4eDQwIGl2MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9OYXNzYXV8TE1UIEVTVCBFRFR8NTkudSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJrTnVPLnUgMjZYZE8udSAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvTmV3X1lvcmt8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjF0MCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4NDAgaXYwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL05pcGlnb258RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUUjAgMWluMCBSbmIwIDNqZTAgOHg0MCBpdjAgMTl5TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvTm9tZXxOU1QgTldUIE5QVCBCU1QgQkRUIFlTVCBBS1NUIEFLRFR8YjAgYTAgYTAgYjAgYTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbDAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL05vcm9uaGF8TE1UIEZOVCBGTlNUfDI5LkUgMjAgMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseE8uayBIZEtPLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCAyTDAgMnBCMCBPbjAiLAoJCQkiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFofE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcnxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW18TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9PamluYWdhfExNVCBNU1QgQ1NUIENEVCBNRFR8NlYuRSA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1BhbmFtYXxDTVQgRVNUfDVqLkEgNTB8MDF8LTJ1ZHVFLm8iLAoJCQkiQW1lcmljYS9QYW5nbmlydHVuZ3x6enogQVNUIEFXVCBBUFQgQUREVCBBRFQgRURUIEVTVCBDU1QgQ0RUfDAgNDAgMzAgMzAgMjAgMzAgNDAgNTAgNjAgNTB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTY3Njc2NzY3Njg5NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3fC0xWGlNMCBQbkcwIDh4NTAgaXUwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFvMDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQzAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1BhcmFtYXJpYm98TE1UIFBNVCBQTVQgTkVHVCBTUlQgU1JUfDNFLkUgM0UuUSAzRS5BIDN1IDN1IDMwfDAxMjM0NXwtMm5EVWouayBXcW8wLmMgcWFuWC5JIDFkbUxOLm8gbHpjMCIsCgkJCSJBbWVyaWNhL1Bob2VuaXh8TVNUIE1EVCBNV1R8NzAgNjAgNjB8MDEwMTAyMDIwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgNEFsMSBBcDAgMWRiMCBTV3FYIDFjTDAiLAoJCQkiQW1lcmljYS9Qb3J0LWF1LVByaW5jZXxQUE1UIEVTVCBFRFR8NE4gNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjhSSGIgMkZuTWIgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRxMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIGk2bjAgMW5YMCAxMUIwIDFuWDAgZDQzMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvUG9ydG9fQWNyZXxMTVQgQUNUIEFDU1QgQU1UfDR2LmMgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzF8LTJnbHZzLk0gSGRMcy5NIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDAgZDVYMCIsCgkJCSJBbWVyaWNhL1BvcnRvX1ZlbGhvfExNVCBBTVQgQU1TVHw0Zi5BIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdkkubyBIZEtJLm8gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAiLAoJCQkiQW1lcmljYS9QdWVydG9fUmljb3xBU1QgQVdUIEFQVHw0MCAzMCAzMHwwMTIwfC0xN2xVMCA3WFQwIGl1MCIsCgkJCSJBbWVyaWNhL1JhaW55X1JpdmVyfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1Jhbmtpbl9JbmxldHx6enogQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtdkRjMCBrZXUwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9SZWNpZmV8TE1UIEJSVCBCUlNUfDJqLkEgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEUubyBIZExFLm8gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCAyTDAgMnBCMCBPbjAiLAoJCQkiQW1lcmljYS9SZWdpbmF8TE1UIE1TVCBNRFQgTVdUIE1QVCBDU1R8NlcuQSA3MCA2MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTV8LTJBRDUxLm8gdUhlMS5vIDFpbjAgczJMMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDY2TjAgMWNMMCAxY04wIDE5WDAgMWZCMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgTTMwIDh4MjAgaXgwIDFpcDAgMWNMMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgM05CMCAxY0wwIDFjTjAiLAoJCQkiQW1lcmljYS9SZXNvbHV0ZXx6enogQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtU25BMCBHV1MwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9TYW50YV9Jc2FiZWx8TE1UIE1TVCBQU1QgUERUIFBXVCBQUFR8N0QucyA3MCA4MCA3MCA3MCA3MHwwMTIxMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVUUUwIDRQWDAgOG1NMCA4bGMwIFNOMCAxY0wwIHBIQjAgODNyMCB6STAgNU8xMCAxUnowIGNPUDAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCBCVXAwIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIiwKCQkJIkFtZXJpY2EvU2FudGFyZW18TE1UIEFNVCBBTVNUIEJSVHwzQy5NIDQwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJnbHdsLmMgSGRMbC5jIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDAiLAoJCQkiQW1lcmljYS9TYW50aWFnb3xTTVQgQ0xUIENMVCBDTFNUIENMU1R8NEcuSyA1MCA0MCA0MCAzMHwwMTAyMDMxMzEzMTMxMzEzMTMxMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjR8LTJxNVRoLmUgZk5jaC5lIDVnTEcuSyAyMWJoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCA5VUswIDFKZTAgUWVuMCBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMWxkMCAxNG4wIDFxTjAgMTF6MCAxY04wIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIiwKCQkJIkFtZXJpY2EvU2FudG9fRG9taW5nb3xTRE1UIEVTVCBFRFQgRUhEVCBBU1R8NEUgNTAgNDAgNHUgNDB8MDEyMTMxMzEzMTMxMzE0MTR8LTF0dGprIDFsSk1rIE1uMCA2c3AwIExidSAxQ291IHlMdSAxUkF1IHdMdSAxUU11IHh6dSAxUTB1IHhYdSAxUEF1IDEzakIwIGUwMCIsCgkJCSJBbWVyaWNhL1Nhb19QYXVsb3xMTVQgQlJUIEJSU1R8MzYucyAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdSLncgSGRLUi53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHBUZDAgUFgwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDFDMTAgTHowIDFJcDAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFDMTAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFDMTAgTHowIDFDMTAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgUmIwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAiLAoJCQkiQW1lcmljYS9TY29yZXNieXN1bmR8TE1UIENHVCBDR1NUIEVHU1QgRUdUfDFyLlEgMjAgMTAgMCAxMHwwMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0fC0yYTVXdy44IDJ6NWV3LjggMWEwMCAxY0swIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkFtZXJpY2EvU2l0a2F8UFNUIFBXVCBQUFQgUERUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzNDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1N0X0pvaG5zfE5TVCBORFQgTlNUIE5EVCBOV1QgTlBUIE5ERFR8M3UuUSAydS5RIDN1IDJ1IDJ1IDJ1IDF1fDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzIzMjMyMzIzMjMyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI2MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yOG9pdC44IDE0TDAgMW5CMCAxaW4wIDFnbTAgRHowIDFKQjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDEwTzAgZUtYLjggMTlYMCAxaXEwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIDdVSHUgaXR1IDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgV0wwIDFsZDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0bjEgMWxiMCAxNHAwIDFuVzAgMTFDMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6Y1ggT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9Td2lmdF9DdXJyZW50fExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDdiLmsgNzAgNjAgNjAgNjAgNjB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ0TS5FIHVIZE0uRSAxaW4wIFVHcDAgOHgyMCBpeDAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIGlzTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxMXowIDFxTjAgV0wwIHBNcDAiLAoJCQkiQW1lcmljYS9UZWd1Y2lnYWxwYXxMTVQgQ1NUIENEVHw1TS5RIDYwIDUwfDAxMjEyMTIxfC0xV0dHYi44IDJFVGNiLjggV0wwIDFxTjAgV0wwIEdSZDAgQUwwIiwKCQkJIkFtZXJpY2EvVGh1bGV8TE1UIEFTVCBBRFR8NHouOCA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNVRvLlEgMzFOQm8uUSAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvVGh1bmRlcl9CYXl8Q1NUIEVTVCBFV1QgRVBUIEVEVHw2MCA1MCA0MCA0MCA0MHwwMTIzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0ycTVTMCAxaWFOMCA4eDQwIGl2MCBYTkIwIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1Rvcm9udG98RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRSMCAxaW4wIDExV3UgMW56dSAxZkQwIFdKMCAxd3IwIE5iMCAxQXAwIE9uMCAxemQwIE9uMCAxd3AwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCA0a00wIDh4NDAgaXYwIDFvMTAgMTF6MCAxblgwIDExejAgMW8xMCAxMXowIDFvMTAgMXFMMCAxMUQwIDFuWDAgMTFCMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1ZhbmNvdXZlcnxQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDFvMTAgMTdiMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9XaGl0ZWhvcnNlfFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAgMUJlMCB4RHowIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJBbWVyaWNhL1dpbm5pcGVnfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhSWkwIFdMMCAzTkQwIDFpbjAgSmFwMCBSYjAgYUNOMCA4eDMwIGl3MCAxdEIwIDExejAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXJkMCAxMEwwIDFvcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMTF6MCA2aTEwIFdMMCA2aTEwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFtZXJpY2EvWWFrdXRhdHxZU1QgWVdUIFlQVCBZRFQgQUtTVCBBS0RUfDkwIDgwIDgwIDgwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xN1QxMCA4eDAwIGl6MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY24wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQW1lcmljYS9ZZWxsb3drbmlmZXx6enogTVNUIE1XVCBNUFQgTUREVCBNRFR8MCA3MCA2MCA2MCA1MCA2MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTF8LTFwZEEwIGhpeDAgOHgyMCBpeDAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIiwKCQkJIkFudGFyY3RpY2EvQ2FzZXl8enp6IEFXU1QgQ0FTVHwwIC04MCAtYjB8MDEyMTIxfC0ycTAwIDFEalMwIFQ5MCA0MFAwIEtMMCIsCgkJCSJBbnRhcmN0aWNhL0RhdmlzfHp6eiBEQVZUIERBVlR8MCAtNzAgLTUwfDAxMDEyMTIxfC12eW8wIGlYdDAgYWxqMCAxRDd2MCBWQjAgM1duMCBLTjAiLAoJCQkiQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZXx6enogUE1UIEREVVR8MCAtYTAgLWEwfDAxMDJ8LVUwbzAgY2ZxMCBiRm0wIiwKCQkJIkFudGFyY3RpY2EvTWFjcXVhcmllfEFFU1QgQUVEVCB6enogTUlTVHwtYTAgLWIwIDAgLWIwfDAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTN8LTI5RTgwIDE5WDAgNFNMMCAxYXl5MCBMdnMwIDFjTTAgMW8wMCBSYzAgMXdvMCBSYzAgMXdvMCBVMDAgMXdvMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFxTTAgV00wIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF3bzAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTFBMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxMUEwIDFvMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAiLAoJCQkiQW50YXJjdGljYS9NYXdzb258enp6IE1BV1QgTUFXVHwwIC02MCAtNTB8MDEyfC1DRW8wIDJmeWswIiwKCQkJIkFudGFyY3RpY2EvTWNNdXJkb3xOWk1UIE5aU1QgTlpTVCBOWkRUfC1idSAtY3UgLWMwIC1kMHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMUdDVnUgTHowIDF0QjAgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTRudSAxbGN1IDE0bnUgMWxjdSAxbGJ1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFxTHUgV011IDFxTHUgMTFBdSAxbjFidSBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCIsCgkJCSJBbnRhcmN0aWNhL1BhbG1lcnx6enogQVJTVCBBUlQgQVJUIEFSU1QgQ0xUIENMU1R8MCAzMCA0MCAzMCAyMCA0MCAzMHwwMTIxMjEyMTIxMjM0MzU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTZ8LWNhbzAgbkQwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAganNOMCAxNE4wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMWxkMCAxNG4wIDFxTjAgMTF6MCAxY04wIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgUmQwIDF6YjAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIiwKCQkJIkFudGFyY3RpY2EvUm90aGVyYXx6enogUk9UVHwwIDMwfDAxfGdPbzAiLAoJCQkiQW50YXJjdGljYS9TeW93YXx6enogU1lPVHwwIC0zMHwwMXwtdnMwMCIsCgkJCSJBbnRhcmN0aWNhL1Ryb2xsfHp6eiBVVEMgQ0VTVHwwIDAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfDFwdW8wIGhkMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBbnRhcmN0aWNhL1Zvc3Rva3x6enogVk9TVHwwIC02MHwwMXwtdGpBMCIsCgkJCSJBcmN0aWMvTG9uZ3llYXJieWVufENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXdNMCBRbTAgVzZvMCA1cGYwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgd0pjMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMXFNMCBXTTAgenBjMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiQXNpYS9BZGVufExNVCBBU1R8LTJYLlMgLTMwfDAxfC1NRzJYLlMiLAoJCQkiQXNpYS9BbG1hdHl8TE1UIEFMTVQgQUxNVCBBTE1TVHwtNTcuTSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGM1Ny5NIGVVbzcuTSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDNDbDAgMWNMMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAiLAoJCQkiQXNpYS9BbW1hbnxMTVQgRUVUIEVFU1R8LTJuLkkgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xeVcybi5JIDFIaU1uLkkgS0wwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxZHowIDFjcDAgMTFiMCAxb3AwIDExYjAgZk8xMCAxZGIwIDFlMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFwZDAgMTBuMCAxbGQwIDE0bjAgMWhCMCAxNWIwIDFpcDAgMTlYMCAxY04wIDFjTDAgMWNOMCAxN2IwIDFsZDAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxU28wIHkwMCAxZmMwIDFkYzAgMWNvMCAxZGMwIDFjTTAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbGMwIDE3YzAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCA0YlgwIERkMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAiLAoJCQkiQXNpYS9BbmFkeXJ8TE1UIEFOQVQgQU5BVCBBTkFTVCBBTkFTVCBBTkFTVCBBTkFUfC1iTi5VIC1jMCAtZDAgLWUwIC1kMCAtYzAgLWIwfDAxMjMyNDE0MTQxNDE0MTQxNDE0MTQxNTYxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNTYxfC0xUGNiTi5VIGVVbk4uVSAyM0NMMCAxZGIwIDFjTjAgMWRjMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU4wIFdNMCIsCgkJCSJBc2lhL0FxdGF1fExNVCBGT1JUIEZPUlQgU0hFVCBTSEVUIFNIRVNUIEFRVFQgQVFUU1QgQVFUU1QgQVFUVHwtM2wuNCAtNDAgLTUwIC01MCAtNjAgLTYwIC01MCAtNjAgLTUwIC00MHwwMTIzNDUzNTM1MzUzNTM1MzUzNTM1MzY3Njc2NzY4OTg5ODk4OTg5ODk4OTg5ODk4OTZ8LTFQYzNsLjQgZVVubC40IDFqY0wwIEpEYzAgMWNMMCAxZGMwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMlVLMCBGejAgMWNMMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgUlcwIiwKCQkJIkFzaWEvQXF0b2JlfExNVCBBS1RUIEFLVFQgQUtUU1QgQUtUVCBBUVRUIEFRVFNUfC0zTS5FIC00MCAtNTAgLTYwIC02MCAtNTAgLTYwfDAxMjM0MzIzMjMyMzIzMjMyMzIzMjMyNTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1fC0xUGMzTS5FIGVVbk0uRSAyM0NMMCAxZGIwIDFjTTAgMWRjMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJVSzAgRnowIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIiwKCQkJIkFzaWEvQXNoZ2FiYXR8TE1UIEFTSFQgQVNIVCBBU0hTVCBBU0hTVCBUTVQgVE1UfC0zUi53IC00MCAtNTAgLTYwIC01MCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDE1NnwtMVBjM1IudyBlVW5SLncgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgYmEwIHhDMCIsCgkJCSJBc2lhL0JhZ2hkYWR8Qk1UIEFTVCBBRFR8LTJWLkEgLTMwIC00MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmVWLkEgMkFDblYuQSAxMWIwIDFjcDAgMWR6MCAxZGQwIDFkYjAgMWNOMCAxY3AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWRlMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCIsCgkJCSJBc2lhL0JhaHJhaW58TE1UIEdTVCBBU1R8LTNtLmsgLTQwIC0zMHwwMTJ8LTIxSmZtLmsgMjdCWG0uayIsCgkJCSJBc2lhL0Jha3V8TE1UIEJBS1QgQkFLVCBCQUtTVCBCQUtTVCBBWlNUIEFaVCBBWlQgQVpTVHwtM2oubyAtMzAgLTQwIC01MCAtNDAgLTQwIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDU2NTc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODd8LTFQYzNqLm8gMWpVb2oubyBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxMEswIGMzMCAxY0owIDFjTDAgOHd1MCAxbzAwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBc2lhL0Jhbmdrb2t8Qk1UIElDVHwtNkcuNCAtNzB8MDF8LTIxOFNHLjQiLAoJCQkiQXNpYS9CZWlydXR8RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTIxYXEwIDFvbjAgMTQxMCAxZGIwIDE5QjAgMWluMCAxaXAwIFdMMCAxbFFwMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCBxNk4wIEVuMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvcDAgMTFiMCBkQTEwIDE3YjAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxaU4wIDE3YjAgMXZCMCBTTDAgMW1wMCAxM3owIDFpTjAgMTdiMCAxaU4wIDE3YjAgMWpkMCAxMm4wIDFhMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAiLAoJCQkiQXNpYS9CaXNoa2VrfExNVCBGUlVUIEZSVVQgRlJVU1QgRlJVU1QgS0dUIEtHU1QgS0dUfC00Vy5vIC01MCAtNjAgLTcwIC02MCAtNTAgLTYwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQ1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2N3wtMVBjNFcubyBlVW5XLm8gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDExYzAgMXRYMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxY1B1IDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgVDh1IiwKCQkJIkFzaWEvQnJ1bmVpfExNVCBCTlQgQk5UfC03RC5FIC03dSAtODB8MDEyfC0xS0lURC5FIGdEYzkuRSIsCgkJCSJBc2lhL0NhbGN1dHRhfEhNVCBCVVJUIElTVCBJU1R8LTVSLmsgLTZ1IC01dSAtNnV8MDEyMzJ8LTE4TEZSLmsgMXVubi5rIEhCMCA3elgwIiwKCQkJIkFzaWEvQ2hpdGF8TE1UIFlBS1QgWUFLVCBZQUtTVCBZQUtTVCBZQUtUIElSS1R8LTd4LlEgLTgwIC05MCAtYTAgLTkwIC1hMCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjU2fC0yMVE3eC5RIHBBbnguUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvQ2hvaWJhbHNhbnxMTVQgVUxBVCBVTEFUIENIT1NUIENIT1QgQ0hPVHwtN0MgLTcwIC04MCAtYTAgLTkwIC04MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDV8LTJBUEhDIDJVa29DIGNLbjAgMWRhMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAzRGIwIiwKCQkJIkFzaWEvQ2hvbmdxaW5nfENTVCBDRFR8LTgwIC05MHwwMTAxMDEwMTAxMDEwMTAxMHwtMWMxSTAgTFgwIDE2cDAgMWp6MCAxTXlwMCBSYjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCIsCgkJCSJBc2lhL0NvbG9tYm98TU1UIElTVCBJSFNUIElTVCBMS1QgTEtUfC01ai53IC01dSAtNjAgLTZ1IC02dSAtNjB8MDEyMzE0NTF8LTJ6T3RqLncgMXJGYk4udyAxenp1IDdBcHUgMjNkejAgMTF6dSBuM2N1IiwKCQkJIkFzaWEvRGFjY2F8SE1UIEJVUlQgSVNUIERBQ1QgQkRUIEJEU1R8LTVSLmsgLTZ1IC01dSAtNjAgLTYwIC03MHwwMTIxMzQ1NHwtMThMRlIuayAxdW5uLmsgSEIwIG02bjAgTHFNdSAxeDZuMCAxaTAwIiwKCQkJIkFzaWEvRGFtYXNjdXN8TE1UIEVFVCBFRVNUfC0ycC5jIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSmVwLmMgSGVwLmMgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxeFJCMCAxMVgwIDFvTjAgMTBMMCAxcEIwIDExYjAgMW9OMCAxMEwwIDFtcDAgMTNYMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCBOYjAgMUFOMCBOYjAgYmNwMCAxOVgwIDFncDAgMTlYMCAzbGQwIDF4WDAgVmQwIDFCejAgU3AwIDF2WDAgMTBwMCAxZHowIDFjTjAgMWNMMCAxZGIwIDFkYjAgMWcxMCAxYW4wIDFhcDAgMWRiMCAxZmQwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY3AwIDFkejAgMWMxMCAxZFgwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDE5ejAgMWZCMCAxcUwwIDExQjAgMW9uMCBXcDAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAiLAoJCQkiQXNpYS9EaWxpfExNVCBUTFQgSlNUIFRMVCBXSVRBfC04bS5rIC04MCAtOTAgLTkwIC04MHwwMTIzNDN8LTJsZThtLmsgMWRuWG0uayA4SEEwIDFldzAwIFhsZDAiLAoJCQkiQXNpYS9EdWJhaXxMTVQgR1NUfC0zRi5jIC00MHwwMXwtMjFKZkYuYyIsCgkJCSJBc2lhL0R1c2hhbmJlfExNVCBEVVNUIERVU1QgRFVTU1QgRFVTU1QgVEpUfC00ei5jIC01MCAtNjAgLTcwIC02MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0NXwtMVBjNHouYyBlVW56LmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDE0TjAiLAoJCQkiQXNpYS9HYXphfEVFVCBFRVQgRUVTVCBJU1QgSURUfC0yMCAtMzAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDMwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMXowIDFvMTAgMTRvMCAxbEExIFNLWCAxeGQxIE1LWCAxQU4wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIiwKCQkJIkFzaWEvSGVicm9ufEVFVCBFRVQgRUVTVCBJU1QgSURUfC0yMCAtMzAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDMwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjB8LTFjMnEwIDVSYjAgMTByMCAxcHgwIDEwTjAgMXB6MCAxNnAwIDFqQjAgMTZwMCAxangwIHBCZDAgVnowIDFvTjAgMTFiMCAxb08wIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxMWQwIDFvTDAgZFcwIGhmQjAgRGIwIDFmQjAgUmIwIG5wQjAgMTF6MCAxQzEwIElMMCAxczEwIDEwbjAgMW8xMCBXTDAgMXpkMCBPbjAgMWxkMCAxMXowIDFvMTAgMTRuMCAxbzEwIDE0bjAgMW5kMCAxMm4wIDFuZDAgWHowIDFxMTAgMTJuMCBNMTAgQzAwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbzAwIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMTdjMCAxaW8wIDE4TjAgMWJ6MCAxOXowIDFncDAgMTYxMCAxaUwwIDEyTDAgMW1OMCAxNG8wIDFsYzAgVGIwIDF4ZDEgTUtYIGJCMCBjbjAgMWNOMCAxYTAwIDFmQTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCIsCgkJCSJBc2lhL0hvX0NoaV9NaW5ofExNVCBQTE1UIElDVCBJRFQgSlNUfC03Ni5FIC03Ni51IC03MCAtODAgLTkwfDAxMjM0MjMyMzJ8LTJ5Qzc2LkUgYkswMC5hIDFoN2I2LnUgNWx6MCAxOG8wIDNPcTAgazViMCBhVzAwIEJBTTAiLAoJCQkiQXNpYS9Ib25nX0tvbmd8TE1UIEhLVCBIS1NUIEpTVHwtN0EuRyAtODAgLTkwIC05MHwwMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yQ0ZIQS5HIDFzRVA2LkcgMWNMMCB5bHUgOTNYMCAxcVF1IDF0WDAgUmQwIDFJbjAgTkIwIDFjTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxa0wwIDE0TjAgMW5YMCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCAxN2QwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDZmZDAgMTRuMCIsCgkJCSJBc2lhL0hvdmR8TE1UIEhPVlQgSE9WVCBIT1ZTVHwtNjYuQSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMkFQRzYuQSAyVWtvNi5BIGNLbjAgMWRiMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCIsCgkJCSJBc2lhL0lya3V0c2t8SU1UIElSS1QgSVJLVCBJUktTVCBJUktTVCBJUktUfC02Vi41IC03MCAtODAgLTkwIC04MCAtOTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjUyfC0yMXpHVi41IHBqWFYuNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvSXN0YW5idWx8SU1UIEVFVCBFRVNUIFRSU1QgVFJUfC0xVS5VIC0yMCAtMzAgLTQwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzQzNDM0MzQzNDIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJvZ05VLlUgZHp6VS5VIDExYjAgOHRCMCAxb24wIDE0MTAgMWRiMCAxOUIwIDFpbjAgM1JkMCBVbjAgMW9OMCAxMWIwIHpTcDAgQ0wwIG1OMCAxVnowIDFnTjAgMXB6MCA1UmQwIDFmejAgMXlwMCBNTDAgMWtwMCAxN2IwIDFpcDAgMTdiMCAxZkIwIDE5WDAgMWpCMCAxOEwwIDFpcDAgMTd6MCBxZGQwIHhYMCAzUzEwIFR6MCBkQTEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxemUwIDExQjAgV00wIDFxTzAgV0kwIDFuWDAgMXJCMCAxMEwwIDExQjAgMWluMCAxN2QwIDFpbjAgMnBYMCAxOUUwIDFmVTAgMTZRMCAxaUkwIDE2UTAgMWlJMCAxVmQwIHBiMCAzS3AwIDE0bzAgMWRmMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTzAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBYYzAgMXFvMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTIwMCAxbkEwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiQXNpYS9KYWthcnRhfEJNVCBKQVZUIFdJQiBKU1QgV0lCIFdJQnwtNzcuYyAtN2sgLTd1IC05MCAtODAgLTcwfDAxMjMyNDI1fC0xUTBUayBsdU0wIG1Qek8gOHZXdSA2a3B1IDRQWHUgeGhjdSIsCgkJCSJBc2lhL0pheWFwdXJhfExNVCBXSVQgQUNTVHwtOW0uTSAtOTAgLTl1fDAxMjF8LTF1dTltLk0gc01NbS5NIEw0bnUiLAoJCQkiQXNpYS9KZXJ1c2FsZW18Sk1UIElTVCBJRFQgSUREVHwtMmsuRSAtMjAgLTMwIC00MHwwMTIxMjEyMTIxMjEzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZWsuRSBTeU1rLkUgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgM0xCMCBFbTAgb3IwIDFjbjAgMWRCMCAxNm4wIDEwTzAgMWphMCAxdEMwIDE0bzAgMWNNMCAxYTAwIDExQTAgMU5hMCBBbjAgMU1QMCBBSjAgMUtwMCBMQzAgMW9vMCBXbDAgRVFOMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIDFoQjAgMWRYMCAxZXAwIDFhTDAgMWVOMCAxN1gwIDFuZjAgMTF6MCAxdEIwIDE5VzAgMWUxMCAxN2IwIDFlcDAgMWdMMCAxOE4wIDFmejAgMWVOMCAxN2IwIDFncTAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFoQjAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFrcDAgMWR6MCAxYzEwIDFhTDAgMWVOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIiwKCQkJIkFzaWEvS2FidWx8QUZUIEFGVHwtNDAgLTR1fDAxfC0xMFFzMCIsCgkJCSJBc2lhL0thbWNoYXRrYXxMTVQgUEVUVCBQRVRUIFBFVFNUIFBFVFNUfC1heS5BIC1iMCAtYzAgLWQwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjQxMnwtMVNMS3kuQSBpdlh5LkEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJVMCAxY0wwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFOMCBXTTAiLAoJCQkiQXNpYS9LYXJhY2hpfExNVCBJU1QgSVNUIEtBUlQgUEtUIFBLU1R8LTRzLmMgLTV1IC02dSAtNTAgLTUwIC02MHwwMTIxMzQ1NDU0NTR8LTJ4b3NzLmMgMXFPS1cuYyA3elgwIGV1cDAgTHFNdSAxZnkwMSAxY0wwIGRLMFggMTFiMCAxNjEwIDFqWDAiLAoJCQkiQXNpYS9LYXNoZ2FyfExNVCBYSlR8LTVPLmsgLTYwfDAxfC0xR2d0Ty5rIiwKCQkJIkFzaWEvS2F0aG1hbmR1fExNVCBJU1QgTlBUfC01Ri5nIC01dSAtNUp8MDEyfC0yMUpoRi5nIDJFR01iLmciLAoJCQkiQXNpYS9LaGFuZHlnYXxMTVQgWUFLVCBZQUtUIFlBS1NUIFlBS1NUIFZMQVQgVkxBU1QgVkxBVCBZQUtUfC05Mi5kIC04MCAtOTAgLWEwIC05MCAtYTAgLWIwIC1iMCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI1NjU2NTY1NjU2NTY1NjU3ODJ8LTIxUTkyLmQgcEFwMi5kIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIElNMCByVTAgMWNMMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCBxSzAgeU4wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDE3VjAgN3pEMCIsCgkJCSJBc2lhL0tyYXNub3lhcnNrfExNVCBLUkFUIEtSQVQgS1JBU1QgS1JBU1QgS1JBVHwtNmIucSAtNjAgLTcwIC04MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI1MnwtMjFIaWIucSBwckFiLnEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJVMCAxY0wwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCIsCgkJCSJBc2lhL0t1YWxhX0x1bXB1cnxTTVQgTUFMVCBNQUxTVCBNQUxUIE1BTFQgSlNUIE1ZVHwtNlQucCAtNzAgLTdrIC03ayAtN3UgLTkwIC04MHwwMTIzNDU0NnwtMkJnNlQucCAxN2FuVC5wIDdoWEUgZE0wMCAxN2JPIDhGeXUgMXNvMXUiLAoJCQkiQXNpYS9LdWNoaW5nfExNVCBCT1JUIEJPUlQgQk9SVFNUIEpTVCBNWVR8LTdsLmsgLTd1IC04MCAtOGsgLTkwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjQyNXwtMUtJVGwuayBnRGJQLmsgNnludSBBbkUgMU8wayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU8wayBBbkUgMU5BayBBbkUgcEFrIDhGejAgMXNvMTAiLAoJCQkiQXNpYS9LdXdhaXR8TE1UIEFTVHwtM2IuVSAtMzB8MDF8LU1HM2IuVSIsCgkJCSJBc2lhL01hY2FvfExNVCBNT1QgTU9TVCBDU1R8LTd5LmsgLTgwIC05MCAtODB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMmxlN3kuayAxWE8zNC5rIDF3bjAgUmQwIDF3bjAgUjl1IDF3cXUgVTEwIDF0ejAgVFZ1IDF0ejAgMTdndSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjT3UgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgS0VwMCIsCgkJCSJBc2lhL01hZ2FkYW58TE1UIE1BR1QgTUFHVCBNQUdTVCBNQUdTVCBNQUdUfC1hMy5jIC1hMCAtYjAgLWMwIC1iMCAtYzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjUxfC0xUGNhMy5jIGVVbzMuYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvTWFrYXNzYXJ8TE1UIE1NVCBXSVRBIEpTVHwtN1YuQSAtN1YuQSAtODAgLTkwfDAxMjMyfC0yMUpqVi5BIHZmYzAgbXlMVi5BIDhNTDAiLAoJCQkiQXNpYS9NYW5pbGF8UEhUIFBIU1QgSlNUfC04MCAtOTAgLTkwfDAxMDIwMTAxMHwtMWtKSTAgQUwwIGNLMTAgNjVYMCBtWEIwIHZYMCBWSzEwIDFkYjAiLAoJCQkiQXNpYS9NdXNjYXR8TE1UIEdTVHwtM1MubyAtNDB8MDF8LTIxSmZTLm8iLAoJCQkiQXNpYS9OaWNvc2lhfExNVCBFRVQgRUVTVHwtMmQucyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVmMyZC5zIDJhM2NkLnMgMWNMMCAxcXAwIFh6MCAxOUIwIDE5WDAgMWZCMCAxZGIwIDFjcDAgMWNMMCAxZkIwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFvMzAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBc2lhL05vdm9rdXpuZXRza3xMTVQgS1JBVCBLUkFUIEtSQVNUIEtSQVNUIE5PVlNUIE5PVlQgTk9WVHwtNU0uTSAtNjAgLTcwIC04MCAtNzAgLTcwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI1NjcyfC0xUGN0TS5NIGVVTE0uTSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU4wIFdNMCA4SHowIiwKCQkJIkFzaWEvTm92b3NpYmlyc2t8TE1UIE5PVlQgTk9WVCBOT1ZTVCBOT1ZTVHwtNXYuRSAtNjAgLTcwIC04MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjM0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDEyMXwtMjFRbnYuRSBwQUZ2LkUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJVMCAxY0wwIDFjUTAgbWwwIE9zMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCIsCgkJCSJBc2lhL09tc2t8TE1UIE9NU1QgT01TVCBPTVNTVCBPTVNTVCBPTVNUfC00Ui51IC01MCAtNjAgLTcwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjUyfC0yMjRzUi51IHBNTFIudSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvT3JhbHxMTVQgVVJBVCBVUkFUIFVSQVNUIFVSQVQgVVJBU1QgT1JBVCBPUkFTVCBPUkFUfC0zcC5vIC00MCAtNTAgLTYwIC02MCAtNTAgLTQwIC01MCAtNTB8MDEyMzQzMjMyMzIzMjMyMzIzMjUxNTE2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY4fC0xUGMzcC5vIGVVbnAubyAyM0NMMCAxZGIwIDFjTTAgMWRjMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDJVSzAgRnowIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFJXMCIsCgkJCSJBc2lhL1BvbnRpYW5ha3xMTVQgUE1UIFdJQiBKU1QgV0lCIFdJVEEgV0lCfC03aC5rIC03aC5rIC03dSAtOTAgLTgwIC04MCAtNzB8MDEyMzI0MjU2fC0ydWE3aC5rIFhFMDAgbXVuTC5rIDhSYXUgNmtwdSA0UFh1IHhoY3UgV3FudSIsCgkJCSJBc2lhL1B5b25neWFuZ3xMTVQgS1NUIEpDU1QgSlNUIEtTVHwtOG4gLTh1IC05MCAtOTAgLTkwfDAxMjM0fC0ydW04biA5N1hSIDEyRlh1IGpkQTAiLAoJCQkiQXNpYS9RYXRhcnxMTVQgR1NUIEFTVHwtM3EuOCAtNDAgLTMwfDAxMnwtMjFKZnEuOCAyN0JYcS44IiwKCQkJIkFzaWEvUXl6eWxvcmRhfExNVCBLSVpUIEtJWlQgS0laU1QgS0laVCBRWVpUIFFZWlQgUVlaU1R8LTRsLlEgLTQwIC01MCAtNjAgLTYwIC01MCAtNjAgLTcwfDAxMjM0MzIzMjMyMzIzMjMyMzIzMjMyNTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMVBjNGwuUSBlVW9sLlEgMjNDTDAgMWRiMCAxY00wIDFkYzAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAyVUswIGRDMCByVTAgMWNMMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAiLAoJCQkiQXNpYS9SYW5nb29ufFJNVCBCVVJUIEpTVCBNTVR8LTZvLkUgLTZ1IC05MCAtNnV8MDEyM3wtMjFKaW8uRSBTbW5TLkUgN2o5dSIsCgkJCSJBc2lhL1JpeWFkaHxMTVQgQVNUfC0zNi5RIC0zMHwwMXwtVHZENi5RIiwKCQkJIkFzaWEvU2FraGFsaW58TE1UIEpDU1QgSlNUIFNBS1QgU0FLU1QgU0FLU1QgU0FLVHwtOXUuTSAtOTAgLTkwIC1iMCAtYzAgLWIwIC1hMHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM1NjM0MzQzNDM0MzQzNTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjM2fC0yQUdWdS5NIDFpYU11Lk0gamUwMCAxcUZhMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8xMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvU2FtYXJrYW5kfExNVCBTQU1UIFNBTVQgU0FNU1QgVEFTVCBVWlNUIFVaVHwtNHIuUiAtNDAgLTUwIC02MCAtNjAgLTYwIC01MHwwMTIzNDMyMzIzMjMyMzIzMjMyMzIzMjM1NnwtMVBjNHIuUiBlVW9yLlIgMjNDTDAgMWRiMCAxY00wIDFkYzAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDExeDAgYmYwIiwKCQkJIkFzaWEvU2VvdWx8TE1UIEtTVCBKQ1NUIEpTVCBLU1QgS0RUIEtEVHwtOHIuUSAtOHUgLTkwIC05MCAtOTAgLTl1IC1hMHwwMTIzNDE1MTUxNTE1MTUxNTE0NjQ2NHwtMnVtOHIuUSA5N1hWLlEgMTJGWHUgampBMCBrS28wIDJJMHUgT0wwIDFGQjAgUmIwIDFxTjAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDJhcDAgMTJGQnUgMTFBMCAxbzAwIDExQTAiLAoJCQkiQXNpYS9TaW5nYXBvcmV8U01UIE1BTFQgTUFMU1QgTUFMVCBNQUxUIEpTVCBTR1QgU0dUfC02VC5wIC03MCAtN2sgLTdrIC03dSAtOTAgLTd1IC04MHwwMTIzNDU0Njd8LTJCZzZULnAgMTdhblQucCA3aFhFIGRNMDAgMTdiTyA4Rnl1IE1zcHUgRFRBMCIsCgkJCSJBc2lhL1NyZWRuZWtvbHltc2t8TE1UIE1BR1QgTUFHVCBNQUdTVCBNQUdTVCBNQUdUIFNSRVR8LWFlLlEgLWEwIC1iMCAtYzAgLWIwIC1jMCAtYjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzI0MTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjU2fC0xUGNhZS5RIGVVb2UuUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkFzaWEvVGFpcGVpfEpXU1QgSlNUIENTVCBDRFR8LTgwIC05MCAtODAgLTkwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xaXc4MCBqb00wIDF5bzAgVHowIDFpcDAgMWpYMCAxY04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMTBOMCAxQlgwIDEwcDAgMXB6MCAxMHAwIDFwejAgMTBwMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxQkIwIE1MMCAxQmQwIE1MMCB1cTEwIDFkYjAgMWNOMCAxZGIwIDk3QjAgQUwwIiwKCQkJIkFzaWEvVGFzaGtlbnR8TE1UIFRBU1QgVEFTVCBUQVNTVCBUQVNTVCBVWlNUIFVaVHwtNEIuYiAtNTAgLTYwIC03MCAtNjAgLTYwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQ1NnwtMVBjNEIuYiBlVW5CLmIgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDExeTAgYmYwIiwKCQkJIkFzaWEvVGJpbGlzaXxUQk1UIFRCSVQgVEJJVCBUQklTVCBUQklTVCBHRVNUIEdFVCBHRVQgR0VTVHwtMlguYiAtMzAgLTQwIC01MCAtNDAgLTQwIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDU2NTY1NjU3ODc4Nzg3ODc4Nzg3ODc4Nzg1Njd8LTFQYzJYLmIgMWpVblguYiBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAzeTAgMTlmMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY00wIDFjTDAgMWZCMCAzTnowIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIEFuMCBPczAgV00wIiwKCQkJIkFzaWEvVGVocmFufExNVCBUTVQgSVJTVCBJUlNUIElSRFQgSVJEVHwtM3AuSSAtM3AuSSAtM3UgLTQwIC01MCAtNHV8MDEyMzQzMjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTJidERwLkkgMWQzYzAgMWh1TFQuSSBUWHUgMXB6MCBzTjAgdkF1IDFjTDAgMWRCMCAxZW4wIHBOQjAgVUwwIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgNjRwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAiLAoJCQkiQXNpYS9UaGltYnV8TE1UIElTVCBCVFR8LTVXLkEgLTV1IC02MHwwMTJ8LVN1NVcuQSAxQkdNcy5BIiwKCQkJIkFzaWEvVG9reW98SkNTVCBKU1QgSkRUfC05MCAtOTAgLWEwfDAxMjEyMTIxMjF8LTFpdzkwIHBLcTAgUUwwIDFsQjAgMTNYMCAxekIwIE5YMCAxekIwIE5YMCIsCgkJCSJBc2lhL1VsYWFuYmFhdGFyfExNVCBVTEFUIFVMQVQgVUxBU1R8LTc3LncgLTcwIC04MCAtOTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJBUEg3LncgMlVrbzcudyBjS24wIDFkYjAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAiLAoJCQkiQXNpYS9Vc3QtTmVyYXxMTVQgWUFLVCBZQUtUIE1BR1NUIE1BR1QgTUFHU1QgTUFHVCBNQUdUIFZMQVQgVkxBVHwtOXcuUyAtODAgLTkwIC1jMCAtYjAgLWIwIC1hMCAtYzAgLWIwIC1hMHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0Nzg5fC0yMVE5dy5TIHBBcHcuUyAyM0NMMCAxZDkwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxN1YwIDd6RDAiLAoJCQkiQXNpYS9WbGFkaXZvc3Rva3xMTVQgVkxBVCBWTEFUIFZMQVNUIFZMQVNUIFZMQVR8LThMLnYgLTkwIC1hMCAtYjAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNTJ8LTFTSklMLnYgaXRYTC52IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIElNMCByVTAgMWNMMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAiLAoJCQkiQXNpYS9ZYWt1dHNrfExNVCBZQUtUIFlBS1QgWUFLU1QgWUFLU1QgWUFLVHwtOEMuVyAtODAgLTkwIC1hMCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzI1MnwtMjFROEMuVyBwQW9DLlcgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJVMCAxY0wwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCIsCgkJCSJBc2lhL1lla2F0ZXJpbmJ1cmd8TE1UIFBNVCBTVkVUIFNWRVQgU1ZFU1QgU1ZFU1QgWUVLVCBZRUtTVCBZRUtUfC00Mi54IC0zSi41IC00MCAtNTAgLTYwIC01MCAtNTAgLTYwIC02MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM1MjY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njg2fC0yYWc0Mi54IDdtUWgucyBxQnZKLjUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJVMCAxY0wwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCIsCgkJCSJBc2lhL1llcmV2YW58TE1UIFlFUlQgWUVSVCBZRVJTVCBZRVJTVCBBTVNUIEFNVCBBTVQgQU1TVHwtMlcgLTMwIC00MCAtNTAgLTQwIC00MCAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQ1NjU2NTY1NjU3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3ODc4Nzg3fC0xUGMyVyAxalVuVyBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxYW0wIDJyMCAxY0owIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0ZiMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAiLAoJCQkiQXRsYW50aWMvQXpvcmVzfEhNVCBBWk9UIEFaT1NUIEFaT01UIEFaT1QgQVpPU1QgV0VUfDFTLncgMjAgMTAgMCAxMCAwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTY1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJsZFc1LnMgYVBYNS5zIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiQXRsYW50aWMvQmVybXVkYXxMTVQgQVNUIEFEVHw0ai5pIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFCblJFLkcgMUxUYkUuRyAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQXRsYW50aWMvQ2FuYXJ5fExNVCBDQU5UIFdFVCBXRVNUfDExLkEgMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVdGFXLm8gWFBBVy5vIDFsQUswIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBdGxhbnRpYy9DYXBlX1ZlcmRlfExNVCBDVlQgQ1ZTVCBDVlR8MXkuNCAyMCAxMCAxMHwwMTIxM3wtMnhvbXAuVSAxcU9NcC5VIDd6WDAgMWRqZjAiLAoJCQkiQXRsYW50aWMvRmFlcm9lfExNVCBXRVQgV0VTVHxyLjQgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ1U253LlUgMldnb3cuVSAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJBdGxhbnRpYy9NYWRlaXJhfEZNVCBNQURUIE1BRFNUIE1BRE1UIFdFVCBXRVNUfDE3LkEgMTAgMCAtMTAgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJsZFdRLm8gYVBXUS5vIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiQXRsYW50aWMvUmV5a2phdmlrfFJNVCBJU1QgSVNTVCBHTVR8MXIuTSAxMCAwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJ1V213LmMgbWZhdy5jIDFCZDAgTUwwIDFMQjAgTkxYMCAxcGUwIHpkMCAxRUwwIExBMCAxQzAwIE9vMCAxd28wIFJjMCAxd28wIFJjMCAxd28wIFJjMCAxemMwIE9vMCAxemMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzAiLAoJCQkiQXRsYW50aWMvU291dGhfR2VvcmdpYXxHU1R8MjB8MHwiLAoJCQkiQXRsYW50aWMvU3RhbmxleXxTTVQgRktUIEZLU1QgRktUIEZLU1R8M1AubyA0MCAzMCAzMCAyMHwwMTIxMjEyMTIxMjEyMTM0MzQzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0ya0p3OC5BIDEyYkE4LkEgMTlYMCAxZkIwIDE5WDAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCBDbjAgMUNjMTAgV0wwIDFxTDAgVTEwIDF0ejAgVTEwIDFxTTAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDF0ejAgVTEwIDF0ejAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDF0ejAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTjAgVTEwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIiwKCQkJIkF1c3RyYWxpYS9BQ1R8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCIsCgkJCSJBdXN0cmFsaWEvQWRlbGFpZGV8QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIFdNMCAxcU0wIFJjMCAxemMwIFUwMCAxdEEwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAiLAoJCQkiQXVzdHJhbGlhL0JyaXNiYW5lfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIEgxQTAgT28wIDF6YzAgT28wIDF6YzAgT28wIiwKCQkJIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTRvMCAxbzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAiLAoJCQkiQXVzdHJhbGlhL0N1cnJpZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOUU4MCAxOVgwIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIiwKCQkJIkF1c3RyYWxpYS9EYXJ3aW58QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAiLAoJCQkiQXVzdHJhbGlhL0V1Y2xhfEFDV1NUIEFDV0RUfC04SiAtOUp8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkza0kgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTAiLAoJCQkiQXVzdHJhbGlhL0hvYmFydHxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgVmZCMCAxY00wIDFvMDAgUmMwIDF3bzAgUmMwIDF3bzAgVTAwIDF3bzAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAiLAoJCQkiQXVzdHJhbGlhL0xISXxBRVNUIExIU1QgTEhEVCBMSERUfC1hMCAtYXUgLWJ1IC1iMHwwMTIxMjEyMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzfHJhQzAgMXpkdSBSYjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBUWHUgMXFNdSBXTHUgMXRBdSBXTHUgMXRBdSBUWHUgMXRBdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDExQXUgMW5YdSAxcU11IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxcU11IDExenUgMW8wdSBXTHUgMXFNdSAxNG51IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWZ6dSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSIsCgkJCSJBdXN0cmFsaWEvTGluZGVtYW58QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIEgxQTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIiwKCQkJIkF1c3RyYWxpYS9NZWxib3VybmV8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxcU0wIDExQTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCIsCgkJCSJBdXN0cmFsaWEvUGVydGh8QVdTVCBBV0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzalggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTAiLAoJCQkiQ0VUfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiQ1NUNkNEVHxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiQ2hpbGUvRWFzdGVySXNsYW5kfEVNVCBFQVNTVCBFQVNUIEVBU1QgRUFTU1R8N2gucyA2MCA3MCA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzR8LTF1U2dHLncgbkhVRy53IG9wMCA5VUswIFJYQjAgV0wwIDF6ZDAgT24wIDFpcDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWxkMCAxNG4wIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFsZDAgMTRuMCAxcU4wIDExejAgMWNOMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxemIwIE9wMCAxemIwIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxemIwIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxemIwIE9wMCAxemIwIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxd24wIFJkMCAxemIwIE9wMCAxemIwIFJkMCAxd24wIFJkMCIsCgkJCSJFRVR8RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8aERCMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRVNUfEVTVHw1MHwwfCIsCgkJCSJFU1Q1RURUfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHg0MCBpdjAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCIsCgkJCSJFaXJlfERNVCBJU1QgR01UIEJTVCBJU1R8cC5sIC15LkQgMCAtMTAgLTEwfDAxMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yYXg5eS5EIFJjMCAxZnp5LkQgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgZzVYMCAxNHAwIDF3bjAgMTdkMCAxaW8wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFhMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgSU0wIDkwbzAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV0Yy9HTVQrMHxHTVR8MHwwfCIsCgkJCSJFdGMvR01UKzF8R01UKzF8MTB8MHwiLAoJCQkiRXRjL0dNVCsxMHxHTVQrMTB8YTB8MHwiLAoJCQkiRXRjL0dNVCsxMXxHTVQrMTF8YjB8MHwiLAoJCQkiRXRjL0dNVCsxMnxHTVQrMTJ8YzB8MHwiLAoJCQkiRXRjL0dNVCsyfEdNVCsyfDIwfDB8IiwKCQkJIkV0Yy9HTVQrM3xHTVQrM3wzMHwwfCIsCgkJCSJFdGMvR01UKzR8R01UKzR8NDB8MHwiLAoJCQkiRXRjL0dNVCs1fEdNVCs1fDUwfDB8IiwKCQkJIkV0Yy9HTVQrNnxHTVQrNnw2MHwwfCIsCgkJCSJFdGMvR01UKzd8R01UKzd8NzB8MHwiLAoJCQkiRXRjL0dNVCs4fEdNVCs4fDgwfDB8IiwKCQkJIkV0Yy9HTVQrOXxHTVQrOXw5MHwwfCIsCgkJCSJFdGMvR01ULTF8R01ULTF8LTEwfDB8IiwKCQkJIkV0Yy9HTVQtMTB8R01ULTEwfC1hMHwwfCIsCgkJCSJFdGMvR01ULTExfEdNVC0xMXwtYjB8MHwiLAoJCQkiRXRjL0dNVC0xMnxHTVQtMTJ8LWMwfDB8IiwKCQkJIkV0Yy9HTVQtMTN8R01ULTEzfC1kMHwwfCIsCgkJCSJFdGMvR01ULTE0fEdNVC0xNHwtZTB8MHwiLAoJCQkiRXRjL0dNVC0yfEdNVC0yfC0yMHwwfCIsCgkJCSJFdGMvR01ULTN8R01ULTN8LTMwfDB8IiwKCQkJIkV0Yy9HTVQtNHxHTVQtNHwtNDB8MHwiLAoJCQkiRXRjL0dNVC01fEdNVC01fC01MHwwfCIsCgkJCSJFdGMvR01ULTZ8R01ULTZ8LTYwfDB8IiwKCQkJIkV0Yy9HTVQtN3xHTVQtN3wtNzB8MHwiLAoJCQkiRXRjL0dNVC04fEdNVC04fC04MHwwfCIsCgkJCSJFdGMvR01ULTl8R01ULTl8LTkwfDB8IiwKCQkJIkV0Yy9VQ1R8VUNUfDB8MHwiLAoJCQkiRXRjL1VUQ3xVVEN8MHwwfCIsCgkJCSJFdXJvcGUvQW1zdGVyZGFtfEFNVCBOU1QgTkVTVCBORVQgQ0VTVCBDRVR8LWoudyAtMWoudyAtMWsgLWsgLTIwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDV8LTJhRmNqLncgMTFiMCAxaVAwIDExQTAgMWlvMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFjbzAgMWlvMCAxeW8wIFBjMCAxYTAwIDFmQTAgMUJjMCBNbzAgMXRjMCBVbzAgMXRBMCBVMDAgMXVvMCBXMDAgMXMwMCBWQTAgMXNvMCBWYzAgMXNNMCBVTTAgMXdvMCBSYzAgMXUwMCBXbzAgMXJBMCBXMDAgMXMwMCBWQTAgMXNNMCBVTTAgMXcwMCBmVjAgQkNYLncgMXRBMCBVMDAgMXUwMCBXbzAgMXNtMCA2MDFrIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9BbmRvcnJhfFdFVCBDRVQgQ0VTVHwwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC1VQkEwIDF4SU4wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0F0aGVuc3xBTVQgRUVUIEVFU1QgQ0VTVCBDRVR8LTF5LlEgLTIwIC0zMCAtMjAgLTEwfDAxMjEyMzQzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE2MXguUSBDTmJ4LlEgbW4wIGtVMTAgOWIwIDNFczAgWGEwIDFmYjAgMWRkMCBrM1gwIE56MCBTQ3AwIDF2YzAgU08wIDFjTTAgMWEwMCAxYW8wIDFmYzAgMWExMCAxZkcwIDFjZzAgMWRYMCAxYlgwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0JlbGZhc3R8R01UIEJTVCBCRFNUfDAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMjEyMTIxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXhhMCBSYzAgMWZBMCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCAyUnowIERjMCAxemMwIE9vMCAxemMwIFJjMCAxd28wIDE3YzAgMWlNMCBGQTAgeEIwIDFmQTAgMWEwMCAxNG8wIGJiMCBMQTAgeEIwIFJjMCAxd28wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFhMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgSU0wIDkwbzAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9CZWxncmFkZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOVJDMCAzSVAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxcmMwIFFvMCAxdm1vMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0JlcmxpbnxDRVQgQ0VTVCBDRU1UfC0xMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIGtMMCBOYzAgbTEwIFdNMCAxYW8wIDFjcDAgZFgwIGp6MCBEZDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxZWhBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0JyYXRpc2xhdmF8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxNk0wIDFsYzAgMXRBMCAxN0EwIDExYzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZmMwIDFhbzAgMWJOYzAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvQnJ1c3NlbHN8V0VUIENFVCBDRVNUIFdFU1R8MCAtMTAgLTIwIC0xMHwwMTIxMjEyMTAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZWhjMCAzelgwIDExYzAgMWlPMCAxMUEwIDFvMDAgMTFBMCBteTAgSWMwIDFxTTAgUmMwIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDFpbzAgMTdjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTMwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIHkwMCA1V24wIFdNMCAxZkEwIDFjTTAgMTZNMCAxaU0wIDE2TTAgMUMwMCBVbzAgMWVlbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9CdWNoYXJlc3R8Qk1UIEVFVCBFRVNUfC0xSS5vIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMXhBcEkubyAyMExJLm8gUkEwIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxQXhjMCBPbjAgMWZBMCAxYTEwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY0swIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUUwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0J1ZGFwZXN0fENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMWlwMCAxN2IwIDFvcDAgMXRiMCBRMm0wIDNOZTAgV00wIDFmQTAgMWNNMCAxY00wIDFvSjAgMWRjMCAxMDMwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWlNMCAxZkEwIDhIYTAgUmIwIDF3TjAgUmIwIDFCQjAgTHowIDFDMjAgTEIwIFNOWDAgMWExMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9CdXNpbmdlbnxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOUxjMCAxMUEwIDFvMDAgMTFBMCAxeEcxMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvQ2hpc2luYXV8Q01UIEJNVCBFRVQgRUVTVCBDRVNUIENFVCBNU0sgTVNEfC0xVCAtMUkubyAtMjAgLTMwIC0yMCAtMTAgLTMwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzQ1NDU0Njc2NzY3Njc2NzY3Njc2NzY3NjIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNmpkVCB3R01hLkEgMjBMSS5vIFJBMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMjdBMCAyZW4wIDM5ZzAgV00wIDFmQTAgMWNNMCBWOTAgMXQ3ejAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDF0eTAgMmJEMCAxY00wIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFFMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9Db3BlbmhhZ2VufENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVHowIFZ1TzAgNjBxMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCBTMDAgMUhBMCBOYzAgMUMwMCBEYzAgMU5jMCBBbzAgMWg1QTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9HaWJyYWx0YXJ8R01UIEJTVCBCRFNUIENFVCBDRVNUfDAgLTEwIC0yMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjEyMTIxMjEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMmF4YTAgUmMwIDFmQTAgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgMlJ6MCBEYzAgMXpjMCBPbzAgMXpjMCBSYzAgMXdvMCAxN2MwIDFpTTAgRkEwIHhCMCAxZkEwIDFhMDAgMTRvMCBiYjAgTEEwIHhCMCBSYzAgMXdvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMTBKejAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvSGVsc2lua2l8SE1UIEVFVCBFRVNUfC0xRC5OIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVd1TkQuTiBPVUxELk4gMWRBMCAxeEdxMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvS2FsaW5pbmdyYWR8Q0VUIENFU1QgQ0VUIENFU1QgTVNLIE1TRCBFRVNUIEVFVCBGRVR8LTEwIC0yMCAtMjAgLTMwIC0zMCAtNDAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDIzMjQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc4N3wtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgQW0wIExiMCAxZW4wIG9wMCAxcE56MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCAxY0owIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkV1cm9wZS9LaWV2fEtNVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0yMi40IC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwfDAxMjM0MzQyNTI1MjUyNTI1MjUyNTI1MjUyNTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjF8LTFQYzIyLjQgZVVvMi40IHJuejAgMkhnMCBXTTAgMWZBMCBkYTAgMXY0bTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgRGIwIDMyMjAgMWNLMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0xpc2JvbnxMTVQgV0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHxBLkogMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0NTQ1NDU0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGRYbi5mIGFQV24uZiBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHB2eTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL0x1eGVtYm91cmd8TE1UIENFVCBDRVNUIFdFVCBXRVNUIFdFU1QgV0VUfC1vLkEgLTEwIC0yMCAwIC0xMCAtMjAgLTEwfDAxMjEyMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1NjU2NTEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJERzBvLkEgdDZtby5BIFRCMCAxblgwIFVwMCAxbzIwIDExQTAgclcwIENNMCAxcVAwIFI5MCAxRU8wIFVLMCAxdTIwIDEwbTAgMWlwMCAxaW4wIDE3ZTAgMTlXMCAxZkIwIDFkYjAgMWNwMCAxaW4wIDE3ZDAgMWZ6MCAxYTEwIDFpbjAgMWExMCAxaW4wIDE3ZjAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCB2QTAgNjBMMCBXTTAgMWZBMCAxY00wIDE3YzAgMWlvMCAxNk0wIDFDMDAgVW8wIDFlZW8wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvTWFkcmlkfFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjEyMTIxMjEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTI4ZGQwIDExQTAgMWdvMCAxOUEwIDFjbzAgMWRBMCBiMUEwIDE4bzAgM0kwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIGl5bzAgUmMwIDE4bzAgMWhjMCAxaW8wIDFhMDAgMTRvMCA1YUwwIE1NMCAxdmMwIDE3QTAgMWkwMCAxYmMwIDFlbzAgMTdkMCAxaW4wIDE3QTAgNmhBMCAxME4wIFhJTDAgMWExMCAxaW4wIDE3ZDAgMTlYMCAxY04wIDFmejAgMWExMCAxZlgwIDFjcDAgMWNPMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9NYWx0YXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhczEwIE0wMCAxY00wIDFjTTAgMTRvMCAxbzAwIFdNMCAxcU0wIDE3YzAgMWNNMCBNM0EwIDVNMjAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZtMCAxZGUwIDFsYzAgMTRtMCAxbGMwIFdPMCAxcU0wIEdUVzAgT24wIDFDMTAgTHowIDFDMTAgTHowIDFFTjAgTHowIDFDMTAgTHowIDF6ZDAgT28wIDFDMDAgT24wIDFjcDAgMWNNMCAxbEEwIFhjMCAxcXEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFpTjAgMTl6MCAxZkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9NaW5za3xNTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCBGRVR8LTFPIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC0zMHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNzJ8LTFQYzFPIGVVbk8gcU5YMCAzZ1EwIFdNMCAxZkEwIDFjTTAgQWwwIDF0c24wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzRmMwIDFjTjAgMWNLMCAxY00wIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh5MCIsCgkJCSJFdXJvcGUvTW9uYWNvfFBNVCBXRVQgV0VTVCBXRU1UIENFVCBDRVNUfC05LmwgMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIDJSVjAgMTF6MCAxMUIwIDF6ZTAgV00wIDFmQTAgMWNNMCAxZmEwIDFhcTAgMTZNMCAxZWtuMCAxY0wwIDFmQzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9Nb3Njb3d8TU1UIE1NVCBNU1QgTURTVCBNU0QgTVNLIE1TTSBFRVQgRUVTVCBNU0t8LTJ1LmggLTJ2LmogLTN2LmogLTR2LmogLTQwIC0zMCAtNTAgLTIwIC0zMCAtNDB8MDEyMTMyMzQ1NDY0NTc1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU4NzU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTk1fC0yYWcydS5oIDJweVcuVyAxYkEwIDExWDAgR04wIDFIYjAgYzIwIGltdi5qIDNEQTAgZHowIDE1QTAgYzEwIDJxMTAgaU0xMCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNOMCBJTTAgclUwIDFjTDAgMWNRMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIiwKCQkJIkV1cm9wZS9QYXJpc3xQTVQgV0VUIFdFU1QgQ0VTVCBDRVQgV0VNVHwtOS5sIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNTI1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzR8LTJuY284LmwgY05iOC5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIElrMCA1TTMwIFdNMCAxZkEwIDFjTTAgVngwIGhCMCAxYXEwIDE2TTAgMWVrbjAgMWNMMCAxZkMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvUmlnYXxSTVQgTFNUIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTFBLnkgLTJBLnkgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEwMTAyMzQ1NDU0NTM2MzYzNjM2MzYzNjM2MzYzNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyfC0yNVR6QS55IDExQTAgMWlNMCBrbzAgZ1dtMCB5RFhBLnkgMmJYMCAzZkUwIFdNMCAxZkEwIDFjTTAgMWNNMCA0bTAgMXNMeTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAzb28wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIkV1cm9wZS9Sb21lfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFzMTAgTTAwIDFjTTAgMWNNMCAxNG8wIDFvMDAgV00wIDFxTTAgMTdjMCAxY00wIE0zQTAgNU0yMCBXTTAgMWZBMCAxY00wIDE2SzAgMWlPMCAxNm0wIDFkZTAgMWxjMCAxNG0wIDFsYzAgV08wIDFxTTAgR1RXMCBPbjAgMUMxMCBMejAgMUMxMCBMejAgMUVOMCBMejAgMUMxMCBMejAgMXpkMCBPbzAgMUMwMCBPbjAgMUMxMCBMejAgMXpkMCBPbjAgMUMxMCBMQTAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBPbzAgMXpjMCBPbzAgMWZDMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL1NhbWFyYXxMTVQgU0FNVCBTQU1UIEtVWVQgS1VZU1QgTVNEIE1TSyBFRVNUIEtVWVQgU0FNU1QgU0FNU1R8LTNrLmsgLTMwIC00MCAtNDAgLTUwIC00MCAtMzAgLTMwIC0zMCAtNTAgLTQwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNTY1Njc4MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MmExMnwtMjJXTmsuayBxSGFrLmsgYmNuMCAxUXFvMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNOMCA4bzAgMTRqMCAxY0wwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFOMCBXTTAiLAoJCQkiRXVyb3BlL1NpbWZlcm9wb2x8U01UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1QgTVNLfC0yZyAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMCAtNDB8MDEyMzQzNDMyNTI1MjUyNTI1MjUyNTI1MjUyMTYxNjE2NTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTcyfC0xUGMyZyBlVW9nIHJFbjAgMnFzMCBXTTAgMWZBMCAxY00wIDNWMCAxdTBMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMVEwMCA0ZUwwIDFjTDAgMWNOMCAxY0wwIDFjTjAgZFgwIFdMMCAxY04wIDFjTDAgMWZCMCAxbzMwIDExQjAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMXowIDFuVzAiLAoJCQkiRXVyb3BlL1NvZmlhfEVFVCBDRVQgQ0VTVCBFRVNUfC0yMCAtMTAgLTIwIC0zMHwwMTIxMjEwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMHwtMTY4TDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMW1LSDAgMWRkMCAxZmIwIDFhcDAgMWZiMCAxYTIwIDFmeTAgMWEzMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvU3RvY2tob2xtfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhekMwIFRCMCAyeURlMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL1RhbGxpbm58VE1UIENFVCBDRVNUIEVFVCBNU0sgTVNEIEVFU1R8LTFEIC0xMCAtMjAgLTIwIC0zMCAtNDAgLTMwfDAxMjEwMzQyMTIxMjQ1NDU0NTQ1NDU0NTQ1NDU0NjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2M3wtMjZvTkQgdGVEIDExQTAgMVRhMCA0clhsIEtTTEQgMkZYMCAySmcwIFdNMCAxZkEwIDFjTTAgMThKMCAxc1RYMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMTAgMTFBMCAxcU0wIDVRTTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvVGlyYW5lfExNVCBDRVQgQ0VTVHwtMWouayAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2xCai5rIDE0cGNqLmsgNUxDMCBXTTAgNE0wIDFmQ0swIDEwbjAgMW9wMCAxMXowIDFwZDAgMTF6MCAxcU4wIFdMMCAxcXAwIFhiMCAxcXAwIFhiMCAxcXAwIDExejAgMWxCMCAxMXowIDFxTjAgMTF6MCAxaU4wIDE2bjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvVXpoZ29yb2R8Q0VUIENFU1QgTVNLIE1TRCBFRVQgRUVTVHwtMTAgLTIwIC0zMCAtNDAgLTIwIC0zMHwwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTFjcUwwIDZpMDAgV00wIDFmQTAgMWNNMCAxbWwwIDFDcDAgMXIzVzAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFRMDAgMU5mMCAycHcwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvVmllbm5hfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDNLTTAgMTRvMCBMQTAwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgNDAwIDJxTTAgMWEwMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFnSGEwIDE5WDAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvVmlsbml1c3xXTVQgS01UIENFVCBFRVQgTVNLIENFU1QgTVNEIEVFU1R8LTFvIC0xei5BIC0xMCAtMjAgLTMwIC0yMCAtNDAgLTMwfDAxMjMyNDUyNTI1NDY0NjQ2NDY0NjQ2NDY0NjQ2NDY0NzM3MzczNzM3MzczNzM1MjUzNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3M3wtMjkzZG8gNklMTS5vIDFPb3ouQSB6ejAgTWZkMCAyOVcwIDNpczAgV00wIDFmQTAgMWNNMCBMVjAgMXRnTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFCMCAxbzAwIDExQTAgMXFNMCA4aW8wIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIsCgkJCSJFdXJvcGUvVm9sZ29ncmFkfExNVCBUU0FUIFNUQVQgU1RBVCBWT0xUIFZPTFNUIFZPTFNUIFZPTFQgTVNLIE1TS3wtMlYuRSAtMzAgLTMwIC00MCAtNDAgLTUwIC00MCAtMzAgLTQwIC0zMHwwMTIzNDU0NTQ1NDU0NTQ1NDU0NTQ2NzY3NDg5ODk4OTg5ODk4OTg5ODk4OTg5ODk4OTg5ODk4OTg5ODk4OTg5ODl8LTIxSXFWLkUgY0xYVi5FIGNFTTAgMWdxbjAgTGNvMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMnB6MCAxY0owIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCIsCgkJCSJFdXJvcGUvV2Fyc2F3fFdNVCBDRVQgQ0VTVCBFRVQgRUVTVHwtMW8gLTEwIC0yMCAtMjAgLTMwfDAxMjEyMTIzNDMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmN0ZG8gMUxYbyAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgMW9uMCAxMUEwIDZ6eTAgSFdQMCA1SU0wIFdNMCAxZkEwIDFjTTAgMWR6MCAxbUwwIDFlbjAgMTVCMCAxYXEwIDFuQTAgMTFBMCAxaW8wIDE3YzAgMWZBMCAxYTAwIGlEWDAgTEEwIDFjTTAgMWNNMCAxQzAwIE9vMCAxY00wIDFjTTAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMUMwMCBMQTAgdXNvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiRXVyb3BlL1phcG9yb3poeWV8Q1VUIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTJrIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwfDAxMjM0MzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxfC0xUGMyayBlVW9rIHJkYjAgMlJFMCBXTTAgMWZBMCA4bTAgMXY5YTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjSzAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAiLAoJCQkiSFNUfEhTVHxhMHwwfCIsCgkJCSJJbmRpYW4vQ2hhZ29zfExNVCBJT1QgSU9UfC00Ti5FIC01MCAtNjB8MDEyfC0yeG9zTi5FIDNBR0xOLkUiLAoJCQkiSW5kaWFuL0NocmlzdG1hc3xDWFR8LTcwfDB8IiwKCQkJIkluZGlhbi9Db2Nvc3xDQ1R8LTZ1fDB8IiwKCQkJIkluZGlhbi9LZXJndWVsZW58enp6IFRGVHwwIC01MHwwMXwtTUcwMCIsCgkJCSJJbmRpYW4vTWFoZXxMTVQgU0NUfC0zRi5NIC00MHwwMXwtMnlPM0YuTSIsCgkJCSJJbmRpYW4vTWFsZGl2ZXN8TU1UIE1WVHwtNFMgLTUwfDAxfC1vbGdTIiwKCQkJIkluZGlhbi9NYXVyaXRpdXN8TE1UIE1VVCBNVVNUfC0zTyAtNDAgLTUwfDAxMjEyMXwtMnhvck8gMzR1bk8gMTRMMCAxMmtyMCAxMXowIiwKCQkJIkluZGlhbi9SZXVuaW9ufExNVCBSRVR8LTNGLlEgLTQwfDAxfC0ybURERi5RIiwKCQkJIkt3YWphbGVpbnxNSFQgS1dBVCBNSFR8LWIwIGMwIC1jMHwwMTJ8LUFYMCBXOVgwIiwKCQkJIk1FVHxNRVQgTUVTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIiwKCQkJIk1TVHxNU1R8NzB8MHwiLAoJCQkiTVNUN01EVHxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiTlotQ0hBVHxDSEFTVCBDSEFTVCBDSEFEVHwtY2YgLWNKIC1kSnwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LVdxQWYgMWFkZWYgSU0wIDFDMDAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDFxTTAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAiLAoJCQkiUFNUOFBEVHxQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFxMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MTAgaXkwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAiLAoJCQkiUGFjaWZpYy9BcGlhfExNVCBXU1NUIFNTVCBTRFQgV1NEVCBXU1NUfGJxLlUgYnUgYjAgYTAgLWUwIC1kMHwwMTIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5ETXguNCAxeVcwMy40IDJyUmJ1IDFmZjAgMWEwMCBDSTAgQVEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIiwKCQkJIlBhY2lmaWMvQm91Z2FpbnZpbGxlfFBHVCBKU1QgQlNUfC1hMCAtOTAgLWIwfDAxMDJ8LTE2V3kwIDdDTjAgMk1RcDAiLAoJCQkiUGFjaWZpYy9DaHV1a3xDSFVUfC1hMHwwfCIsCgkJCSJQYWNpZmljL0VmYXRlfExNVCBWVVQgVlVTVHwtYmQuZyAtYjAgLWMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsOW5kLmcgMlN6Y2QuZyAxY0wwIDFvTjAgMTBMMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIEx6MCAxTmQwIEFuMCIsCgkJCSJQYWNpZmljL0VuZGVyYnVyeXxQSE9UIFBIT1QgUEhPVHxjMCBiMCAtZDB8MDEyfG5JYzAgQjhuMCIsCgkJCSJQYWNpZmljL0Zha2FvZm98VEtUIFRLVHxiMCAtZDB8MDF8MUdmbjAiLAoJCQkiUGFjaWZpYy9GaWppfExNVCBGSlQgRkpTVHwtYlQuSSAtYzAgLWQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmJVelQuSSAzbThOVC5JIExBMCAxRU0wIElNMCBuSmMwIExBMCAxbzAwIFJjMCAxd28wIEFvMCAxTmMwIEFvMCAxUTAwIHh6MCAxU04wIHVNMCAxU00wIHhBMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHhBMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHhBMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxU00wIiwKCQkJIlBhY2lmaWMvRnVuYWZ1dGl8VFZUfC1jMHwwfCIsCgkJCSJQYWNpZmljL0dhbGFwYWdvc3xMTVQgRUNUIEdBTFR8NVcubyA1MCA2MHwwMTJ8LTF5VlMxLkEgMmRUejEuQSIsCgkJCSJQYWNpZmljL0dhbWJpZXJ8TE1UIEdBTVR8OFguTSA5MHwwMXwtMmpvZjAuYyIsCgkJCSJQYWNpZmljL0d1YWRhbGNhbmFsfExNVCBTQlR8LWFELk0gLWIwfDAxfC0yam95RC5NIiwKCQkJIlBhY2lmaWMvR3VhbXxHU1QgQ2hTVHwtYTAgLWEwfDAxfDFmcHEwIiwKCQkJIlBhY2lmaWMvSG9ub2x1bHV8SFNUIEhEVCBIU1R8YXUgOXUgYTB8MDEwMTAyfC0xdGhMdSA4eDAgbGVmMCA4UHowIDQ2cDAiLAoJCQkiUGFjaWZpYy9LaXJpdGltYXRpfExJTlQgTElOVCBMSU5UfGFFIGEwIC1lMHwwMTJ8bklhRSBCOG5rIiwKCQkJIlBhY2lmaWMvS29zcmFlfEtPU1QgS09TVHwtYjAgLWMwfDAxMHwtQVgwIDFiZHowIiwKCQkJIlBhY2lmaWMvTWFqdXJvfE1IVCBNSFR8LWIwIC1jMHwwMXwtQVgwIiwKCQkJIlBhY2lmaWMvTWFycXVlc2FzfExNVCBNQVJUfDlpIDl1fDAxfC0yam9lRyIsCgkJCSJQYWNpZmljL01pZHdheXxOU1QgTkRUIEJTVCBTU1R8YjAgYTAgYjAgYjB8MDEwMjN8LXgzTjAgQW4wIHBKZDAgRXlNMCIsCgkJCSJQYWNpZmljL05hdXJ1fExNVCBOUlQgSlNUIE5SVHwtYjcuRSAtYnUgLTkwIC1jMHwwMTIxM3wtMVhkbjcuRSBQdnpCLkUgNVJDdSAxb3VKdSIsCgkJCSJQYWNpZmljL05pdWV8TlVUIE5VVCBOVVR8YmsgYnUgYjB8MDEyfC1LZk1FIDE3eTBhIiwKCQkJIlBhY2lmaWMvTm9yZm9sa3xOTVQgTkZUfC1iYyAtYnV8MDF8LUtnYmMiLAoJCQkiUGFjaWZpYy9Ob3VtZWF8TE1UIE5DVCBOQ1NUfC1iNS5NIC1iMCAtYzB8MDEyMTIxMjF8LTJsOW41Lk0gMkVxTTUuTSB4WDAgMVBCMCB5bjAgSGVQMCBBbzAiLAoJCQkiUGFjaWZpYy9QYWdvX1BhZ298TE1UIE5TVCBCU1QgU1NUfGJtLk0gYjAgYjAgYjB8MDEyM3wtMm5ETUIuYyAyZ1Z6Qi5jIEV5TTAiLAoJCQkiUGFjaWZpYy9QYWxhdXxQV1R8LTkwfDB8IiwKCQkJIlBhY2lmaWMvUGl0Y2Fpcm58UE5UIFBTVHw4dSA4MHwwMXwxOFZrdSIsCgkJCSJQYWNpZmljL1BvaG5wZWl8UE9OVHwtYjB8MHwiLAoJCQkiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UEdUfC1hMHwwfCIsCgkJCSJQYWNpZmljL1Jhcm90b25nYXxDS1QgQ0tIU1QgQ0tUfGF1IDl1IGEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnxseVd1IElMMCAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSIsCgkJCSJQYWNpZmljL1NhaXBhbnxNUFQgTVBUIENoU1R8LTkwIC1hMCAtYTB8MDEyfC1BVjAgMWcybjAiLAoJCQkiUGFjaWZpYy9UYWhpdGl8TE1UIFRBSFR8OVcuZyBhMHwwMXwtMmpvZTEuSSIsCgkJCSJQYWNpZmljL1RhcmF3YXxHSUxUfC1jMHwwfCIsCgkJCSJQYWNpZmljL1RvbmdhdGFwdXxUT1QgVE9UIFRPU1R8LWNrIC1kMCAtZTB8MDEyMTIxMjF8LTFhQjBrIDJuNWRrIDE1QTAgMXdvMCB4ejAgMVExMCB4ejAiLAoJCQkiUGFjaWZpYy9XYWtlfFdBS1R8LWMwfDB8IiwKCQkJIlBhY2lmaWMvV2FsbGlzfFdGVHwtYzB8MHwiLAoJCQkiV0VUfFdFVCBXRVNUfDAgLTEwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHxoREIwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCIKCQldLAoJCSJsaW5rcyI6IFsKCQkJIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW1ha28iLAoJCQkiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Jhbmp1bCIsCgkJCSJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQ29uYWtyeSIsCgkJCSJBZnJpY2EvQWJpZGphbnxBZnJpY2EvRGFrYXIiLAoJCQkiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0ZyZWV0b3duIiwKCQkJIkFmcmljYS9BYmlkamFufEFmcmljYS9Mb21lIiwKCQkJIkFmcmljYS9BYmlkamFufEFmcmljYS9Ob3Vha2Nob3R0IiwKCQkJIkFmcmljYS9BYmlkamFufEFmcmljYS9PdWFnYWRvdWdvdSIsCgkJCSJBZnJpY2EvQWJpZGphbnxBZnJpY2EvU2FvX1RvbWUiLAoJCQkiQWZyaWNhL0FiaWRqYW58QWZyaWNhL1RpbWJ1a3R1IiwKCQkJIkFmcmljYS9BYmlkamFufEF0bGFudGljL1N0X0hlbGVuYSIsCgkJCSJBZnJpY2EvQWRkaXNfQWJhYmF8QWZyaWNhL0FzbWFyYSIsCgkJCSJBZnJpY2EvQWRkaXNfQWJhYmF8QWZyaWNhL0FzbWVyYSIsCgkJCSJBZnJpY2EvQWRkaXNfQWJhYmF8QWZyaWNhL0Rhcl9lc19TYWxhYW0iLAoJCQkiQWZyaWNhL0FkZGlzX0FiYWJhfEFmcmljYS9Eamlib3V0aSIsCgkJCSJBZnJpY2EvQWRkaXNfQWJhYmF8QWZyaWNhL0thbXBhbGEiLAoJCQkiQWZyaWNhL0FkZGlzX0FiYWJhfEFmcmljYS9Nb2dhZGlzaHUiLAoJCQkiQWZyaWNhL0FkZGlzX0FiYWJhfEFmcmljYS9OYWlyb2JpIiwKCQkJIkFmcmljYS9BZGRpc19BYmFiYXxJbmRpYW4vQW50YW5hbmFyaXZvIiwKCQkJIkFmcmljYS9BZGRpc19BYmFiYXxJbmRpYW4vQ29tb3JvIiwKCQkJIkFmcmljYS9BZGRpc19BYmFiYXxJbmRpYW4vTWF5b3R0ZSIsCgkJCSJBZnJpY2EvQmFuZ3VpfEFmcmljYS9CcmF6emF2aWxsZSIsCgkJCSJBZnJpY2EvQmFuZ3VpfEFmcmljYS9Eb3VhbGEiLAoJCQkiQWZyaWNhL0Jhbmd1aXxBZnJpY2EvS2luc2hhc2EiLAoJCQkiQWZyaWNhL0Jhbmd1aXxBZnJpY2EvTGFnb3MiLAoJCQkiQWZyaWNhL0Jhbmd1aXxBZnJpY2EvTGlicmV2aWxsZSIsCgkJCSJBZnJpY2EvQmFuZ3VpfEFmcmljYS9MdWFuZGEiLAoJCQkiQWZyaWNhL0Jhbmd1aXxBZnJpY2EvTWFsYWJvIiwKCQkJIkFmcmljYS9CYW5ndWl8QWZyaWNhL05pYW1leSIsCgkJCSJBZnJpY2EvQmFuZ3VpfEFmcmljYS9Qb3J0by1Ob3ZvIiwKCQkJIkFmcmljYS9CbGFudHlyZXxBZnJpY2EvQnVqdW1idXJhIiwKCQkJIkFmcmljYS9CbGFudHlyZXxBZnJpY2EvR2Fib3JvbmUiLAoJCQkiQWZyaWNhL0JsYW50eXJlfEFmcmljYS9IYXJhcmUiLAoJCQkiQWZyaWNhL0JsYW50eXJlfEFmcmljYS9LaWdhbGkiLAoJCQkiQWZyaWNhL0JsYW50eXJlfEFmcmljYS9MdWJ1bWJhc2hpIiwKCQkJIkFmcmljYS9CbGFudHlyZXxBZnJpY2EvTHVzYWthIiwKCQkJIkFmcmljYS9CbGFudHlyZXxBZnJpY2EvTWFwdXRvIiwKCQkJIkFmcmljYS9DYWlyb3xFZ3lwdCIsCgkJCSJBZnJpY2EvSm9oYW5uZXNidXJnfEFmcmljYS9NYXNlcnUiLAoJCQkiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWJhYmFuZSIsCgkJCSJBZnJpY2EvSnViYXxBZnJpY2EvS2hhcnRvdW0iLAoJCQkiQWZyaWNhL1RyaXBvbGl8TGlieWEiLAoJCQkiQW1lcmljYS9BZGFrfEFtZXJpY2EvQXRrYSIsCgkJCSJBbWVyaWNhL0FkYWt8VVMvQWxldXRpYW4iLAoJCQkiQW1lcmljYS9BbmNob3JhZ2V8VVMvQWxhc2thIiwKCQkJIkFtZXJpY2EvQW5ndWlsbGF8QW1lcmljYS9Eb21pbmljYSIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvR3JlbmFkYSIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvR3VhZGVsb3VwZSIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvTWFyaWdvdCIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvTW9udHNlcnJhdCIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvUG9ydF9vZl9TcGFpbiIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvU3RfQmFydGhlbGVteSIsCgkJCSJBbWVyaWNhL0FuZ3VpbGxhfEFtZXJpY2EvU3RfS2l0dHMiLAoJCQkiQW1lcmljYS9Bbmd1aWxsYXxBbWVyaWNhL1N0X0x1Y2lhIiwKCQkJIkFtZXJpY2EvQW5ndWlsbGF8QW1lcmljYS9TdF9UaG9tYXMiLAoJCQkiQW1lcmljYS9Bbmd1aWxsYXxBbWVyaWNhL1N0X1ZpbmNlbnQiLAoJCQkiQW1lcmljYS9Bbmd1aWxsYXxBbWVyaWNhL1RvcnRvbGEiLAoJCQkiQW1lcmljYS9Bbmd1aWxsYXxBbWVyaWNhL1ZpcmdpbiIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9CdWVub3NfQWlyZXN8QW1lcmljYS9CdWVub3NfQWlyZXMiLAoJCQkiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfEFtZXJpY2EvQXJnZW50aW5hL0NvbW9kUml2YWRhdmlhIiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxBbWVyaWNhL0NhdGFtYXJjYSIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfEFtZXJpY2EvQ29yZG9iYSIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfEFtZXJpY2EvUm9zYXJpbyIsCgkJCSJBbWVyaWNhL0FyZ2VudGluYS9KdWp1eXxBbWVyaWNhL0p1anV5IiwKCQkJIkFtZXJpY2EvQXJnZW50aW5hL01lbmRvemF8QW1lcmljYS9NZW5kb3phIiwKCQkJIkFtZXJpY2EvQXJ1YmF8QW1lcmljYS9DdXJhY2FvIiwKCQkJIkFtZXJpY2EvQXJ1YmF8QW1lcmljYS9LcmFsZW5kaWprIiwKCQkJIkFtZXJpY2EvQXJ1YmF8QW1lcmljYS9Mb3dlcl9QcmluY2VzIiwKCQkJIkFtZXJpY2EvQXRpa29rYW58QW1lcmljYS9Db3JhbF9IYXJib3VyIiwKCQkJIkFtZXJpY2EvQ2hpY2Fnb3xVUy9DZW50cmFsIiwKCQkJIkFtZXJpY2EvRGVudmVyfEFtZXJpY2EvU2hpcHJvY2siLAoJCQkiQW1lcmljYS9EZW52ZXJ8TmF2YWpvIiwKCQkJIkFtZXJpY2EvRGVudmVyfFVTL01vdW50YWluIiwKCQkJIkFtZXJpY2EvRGV0cm9pdHxVUy9NaWNoaWdhbiIsCgkJCSJBbWVyaWNhL0VkbW9udG9ufENhbmFkYS9Nb3VudGFpbiIsCgkJCSJBbWVyaWNhL0Vuc2VuYWRhfEFtZXJpY2EvVGlqdWFuYSIsCgkJCSJBbWVyaWNhL0Vuc2VuYWRhfE1leGljby9CYWphTm9ydGUiLAoJCQkiQW1lcmljYS9Gb3J0X1dheW5lfEFtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMiLAoJCQkiQW1lcmljYS9Gb3J0X1dheW5lfEFtZXJpY2EvSW5kaWFuYXBvbGlzIiwKCQkJIkFtZXJpY2EvRm9ydF9XYXluZXxVUy9FYXN0LUluZGlhbmEiLAoJCQkiQW1lcmljYS9IYWxpZmF4fENhbmFkYS9BdGxhbnRpYyIsCgkJCSJBbWVyaWNhL0hhdmFuYXxDdWJhIiwKCQkJIkFtZXJpY2EvSW5kaWFuYS9Lbm94fEFtZXJpY2EvS25veF9JTiIsCgkJCSJBbWVyaWNhL0luZGlhbmEvS25veHxVUy9JbmRpYW5hLVN0YXJrZSIsCgkJCSJBbWVyaWNhL0phbWFpY2F8SmFtYWljYSIsCgkJCSJBbWVyaWNhL0tlbnR1Y2t5L0xvdWlzdmlsbGV8QW1lcmljYS9Mb3Vpc3ZpbGxlIiwKCQkJIkFtZXJpY2EvTG9zX0FuZ2VsZXN8VVMvUGFjaWZpYyIsCgkJCSJBbWVyaWNhL0xvc19BbmdlbGVzfFVTL1BhY2lmaWMtTmV3IiwKCQkJIkFtZXJpY2EvTWFuYXVzfEJyYXppbC9XZXN0IiwKCQkJIkFtZXJpY2EvTWF6YXRsYW58TWV4aWNvL0JhamFTdXIiLAoJCQkiQW1lcmljYS9NZXhpY29fQ2l0eXxNZXhpY28vR2VuZXJhbCIsCgkJCSJBbWVyaWNhL05ld19Zb3JrfFVTL0Vhc3Rlcm4iLAoJCQkiQW1lcmljYS9Ob3JvbmhhfEJyYXppbC9EZU5vcm9uaGEiLAoJCQkiQW1lcmljYS9QaG9lbml4fFVTL0FyaXpvbmEiLAoJCQkiQW1lcmljYS9Qb3J0b19BY3JlfEFtZXJpY2EvUmlvX0JyYW5jbyIsCgkJCSJBbWVyaWNhL1BvcnRvX0FjcmV8QnJhemlsL0FjcmUiLAoJCQkiQW1lcmljYS9SZWdpbmF8Q2FuYWRhL0Vhc3QtU2Fza2F0Y2hld2FuIiwKCQkJIkFtZXJpY2EvUmVnaW5hfENhbmFkYS9TYXNrYXRjaGV3YW4iLAoJCQkiQW1lcmljYS9TYW50aWFnb3xDaGlsZS9Db250aW5lbnRhbCIsCgkJCSJBbWVyaWNhL1Nhb19QYXVsb3xCcmF6aWwvRWFzdCIsCgkJCSJBbWVyaWNhL1N0X0pvaG5zfENhbmFkYS9OZXdmb3VuZGxhbmQiLAoJCQkiQW1lcmljYS9Ub3JvbnRvfENhbmFkYS9FYXN0ZXJuIiwKCQkJIkFtZXJpY2EvVmFuY291dmVyfENhbmFkYS9QYWNpZmljIiwKCQkJIkFtZXJpY2EvV2hpdGVob3JzZXxDYW5hZGEvWXVrb24iLAoJCQkiQW1lcmljYS9XaW5uaXBlZ3xDYW5hZGEvQ2VudHJhbCIsCgkJCSJBbnRhcmN0aWNhL01jTXVyZG98QW50YXJjdGljYS9Tb3V0aF9Qb2xlIiwKCQkJIkFudGFyY3RpY2EvTWNNdXJkb3xOWiIsCgkJCSJBbnRhcmN0aWNhL01jTXVyZG98UGFjaWZpYy9BdWNrbGFuZCIsCgkJCSJBcmN0aWMvTG9uZ3llYXJieWVufEF0bGFudGljL0phbl9NYXllbiIsCgkJCSJBcmN0aWMvTG9uZ3llYXJieWVufEV1cm9wZS9Pc2xvIiwKCQkJIkFzaWEvQXNoZ2FiYXR8QXNpYS9Bc2hraGFiYWQiLAoJCQkiQXNpYS9CYW5na29rfEFzaWEvUGhub21fUGVuaCIsCgkJCSJBc2lhL0Jhbmdrb2t8QXNpYS9WaWVudGlhbmUiLAoJCQkiQXNpYS9DYWxjdXR0YXxBc2lhL0tvbGthdGEiLAoJCQkiQXNpYS9DaG9uZ3Fpbmd8QXNpYS9DaHVuZ2tpbmciLAoJCQkiQXNpYS9DaG9uZ3Fpbmd8QXNpYS9IYXJiaW4iLAoJCQkiQXNpYS9DaG9uZ3Fpbmd8QXNpYS9TaGFuZ2hhaSIsCgkJCSJBc2lhL0Nob25ncWluZ3xQUkMiLAoJCQkiQXNpYS9EYWNjYXxBc2lhL0RoYWthIiwKCQkJIkFzaWEvSG9fQ2hpX01pbmh8QXNpYS9TYWlnb24iLAoJCQkiQXNpYS9Ib25nX0tvbmd8SG9uZ2tvbmciLAoJCQkiQXNpYS9Jc3RhbmJ1bHxFdXJvcGUvSXN0YW5idWwiLAoJCQkiQXNpYS9Jc3RhbmJ1bHxUdXJrZXkiLAoJCQkiQXNpYS9KZXJ1c2FsZW18QXNpYS9UZWxfQXZpdiIsCgkJCSJBc2lhL0plcnVzYWxlbXxJc3JhZWwiLAoJCQkiQXNpYS9LYXNoZ2FyfEFzaWEvVXJ1bXFpIiwKCQkJIkFzaWEvS2F0aG1hbmR1fEFzaWEvS2F0bWFuZHUiLAoJCQkiQXNpYS9NYWNhb3xBc2lhL01hY2F1IiwKCQkJIkFzaWEvTWFrYXNzYXJ8QXNpYS9VanVuZ19QYW5kYW5nIiwKCQkJIkFzaWEvTmljb3NpYXxFdXJvcGUvTmljb3NpYSIsCgkJCSJBc2lhL1Nlb3VsfFJPSyIsCgkJCSJBc2lhL1NpbmdhcG9yZXxTaW5nYXBvcmUiLAoJCQkiQXNpYS9UYWlwZWl8Uk9DIiwKCQkJIkFzaWEvVGVocmFufElyYW4iLAoJCQkiQXNpYS9UaGltYnV8QXNpYS9UaGltcGh1IiwKCQkJIkFzaWEvVG9reW98SmFwYW4iLAoJCQkiQXNpYS9VbGFhbmJhYXRhcnxBc2lhL1VsYW5fQmF0b3IiLAoJCQkiQXRsYW50aWMvRmFlcm9lfEF0bGFudGljL0Zhcm9lIiwKCQkJIkF0bGFudGljL1JleWtqYXZpa3xJY2VsYW5kIiwKCQkJIkF1c3RyYWxpYS9BQ1R8QXVzdHJhbGlhL0NhbmJlcnJhIiwKCQkJIkF1c3RyYWxpYS9BQ1R8QXVzdHJhbGlhL05TVyIsCgkJCSJBdXN0cmFsaWEvQUNUfEF1c3RyYWxpYS9TeWRuZXkiLAoJCQkiQXVzdHJhbGlhL0FkZWxhaWRlfEF1c3RyYWxpYS9Tb3V0aCIsCgkJCSJBdXN0cmFsaWEvQnJpc2JhbmV8QXVzdHJhbGlhL1F1ZWVuc2xhbmQiLAoJCQkiQXVzdHJhbGlhL0Jyb2tlbl9IaWxsfEF1c3RyYWxpYS9ZYW5jb3dpbm5hIiwKCQkJIkF1c3RyYWxpYS9EYXJ3aW58QXVzdHJhbGlhL05vcnRoIiwKCQkJIkF1c3RyYWxpYS9Ib2JhcnR8QXVzdHJhbGlhL1Rhc21hbmlhIiwKCQkJIkF1c3RyYWxpYS9MSEl8QXVzdHJhbGlhL0xvcmRfSG93ZSIsCgkJCSJBdXN0cmFsaWEvTWVsYm91cm5lfEF1c3RyYWxpYS9WaWN0b3JpYSIsCgkJCSJBdXN0cmFsaWEvUGVydGh8QXVzdHJhbGlhL1dlc3QiLAoJCQkiQ2hpbGUvRWFzdGVySXNsYW5kfFBhY2lmaWMvRWFzdGVyIiwKCQkJIkVpcmV8RXVyb3BlL0R1YmxpbiIsCgkJCSJFdGMvR01UKzB8RXRjL0dNVCIsCgkJCSJFdGMvR01UKzB8RXRjL0dNVC0wIiwKCQkJIkV0Yy9HTVQrMHxFdGMvR01UMCIsCgkJCSJFdGMvR01UKzB8RXRjL0dyZWVud2ljaCIsCgkJCSJFdGMvR01UKzB8R01UIiwKCQkJIkV0Yy9HTVQrMHxHTVQrMCIsCgkJCSJFdGMvR01UKzB8R01ULTAiLAoJCQkiRXRjL0dNVCswfEdNVDAiLAoJCQkiRXRjL0dNVCswfEdyZWVud2ljaCIsCgkJCSJFdGMvVUNUfFVDVCIsCgkJCSJFdGMvVVRDfEV0Yy9Vbml2ZXJzYWwiLAoJCQkiRXRjL1VUQ3xFdGMvWnVsdSIsCgkJCSJFdGMvVVRDfFVUQyIsCgkJCSJFdGMvVVRDfFVuaXZlcnNhbCIsCgkJCSJFdGMvVVRDfFp1bHUiLAoJCQkiRXVyb3BlL0JlbGZhc3R8RXVyb3BlL0d1ZXJuc2V5IiwKCQkJIkV1cm9wZS9CZWxmYXN0fEV1cm9wZS9Jc2xlX29mX01hbiIsCgkJCSJFdXJvcGUvQmVsZmFzdHxFdXJvcGUvSmVyc2V5IiwKCQkJIkV1cm9wZS9CZWxmYXN0fEV1cm9wZS9Mb25kb24iLAoJCQkiRXVyb3BlL0JlbGZhc3R8R0IiLAoJCQkiRXVyb3BlL0JlbGZhc3R8R0ItRWlyZSIsCgkJCSJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL0xqdWJsamFuYSIsCgkJCSJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1BvZGdvcmljYSIsCgkJCSJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1NhcmFqZXZvIiwKCQkJIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2tvcGplIiwKCQkJIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvWmFncmViIiwKCQkJIkV1cm9wZS9CcmF0aXNsYXZhfEV1cm9wZS9QcmFndWUiLAoJCQkiRXVyb3BlL0J1c2luZ2VufEV1cm9wZS9WYWR1eiIsCgkJCSJFdXJvcGUvQnVzaW5nZW58RXVyb3BlL1p1cmljaCIsCgkJCSJFdXJvcGUvQ2hpc2luYXV8RXVyb3BlL1RpcmFzcG9sIiwKCQkJIkV1cm9wZS9IZWxzaW5raXxFdXJvcGUvTWFyaWVoYW1uIiwKCQkJIkV1cm9wZS9MaXNib258UG9ydHVnYWwiLAoJCQkiRXVyb3BlL01vc2Nvd3xXLVNVIiwKCQkJIkV1cm9wZS9Sb21lfEV1cm9wZS9TYW5fTWFyaW5vIiwKCQkJIkV1cm9wZS9Sb21lfEV1cm9wZS9WYXRpY2FuIiwKCQkJIkV1cm9wZS9XYXJzYXd8UG9sYW5kIiwKCQkJIkt3YWphbGVpbnxQYWNpZmljL0t3YWphbGVpbiIsCgkJCSJOWi1DSEFUfFBhY2lmaWMvQ2hhdGhhbSIsCgkJCSJQYWNpZmljL0NodXVrfFBhY2lmaWMvVHJ1ayIsCgkJCSJQYWNpZmljL0NodXVrfFBhY2lmaWMvWWFwIiwKCQkJIlBhY2lmaWMvSG9ub2x1bHV8UGFjaWZpYy9Kb2huc3RvbiIsCgkJCSJQYWNpZmljL0hvbm9sdWx1fFVTL0hhd2FpaSIsCgkJCSJQYWNpZmljL1BhZ29fUGFnb3xQYWNpZmljL1NhbW9hIiwKCQkJIlBhY2lmaWMvUGFnb19QYWdvfFVTL1NhbW9hIiwKCQkJIlBhY2lmaWMvUG9obnBlaXxQYWNpZmljL1BvbmFwZSIKCQldCgl9KTsKCgoJcmV0dXJuIG1vbWVudDsKfSkpOwo="></script>
<script src="data:application/x-javascript;base64,Ci8vIHBvbHlmaWxsIGluZGV4T2YgZm9yIElFOAppZiAoIUFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7CiAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbihlbHQgLyosIGZyb20qLykgewogICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoID4+PiAwOwoKICAgIHZhciBmcm9tID0gTnVtYmVyKGFyZ3VtZW50c1sxXSkgfHwgMDsKICAgIGZyb20gPSAoZnJvbSA8IDApCiAgICAgICAgID8gTWF0aC5jZWlsKGZyb20pCiAgICAgICAgIDogTWF0aC5mbG9vcihmcm9tKTsKICAgIGlmIChmcm9tIDwgMCkKICAgICAgZnJvbSArPSBsZW47CgogICAgZm9yICg7IGZyb20gPCBsZW47IGZyb20rKykgewogICAgICBpZiAoZnJvbSBpbiB0aGlzICYmCiAgICAgICAgICB0aGlzW2Zyb21dID09PSBlbHQpCiAgICAgICAgcmV0dXJuIGZyb207CiAgICB9CiAgICByZXR1cm4gLTE7CiAgfTsKfQoKCi8vIGpxdWVyeSBwbHVnaW4gZm9yIGVsZW1lbnQgc2l6ZSBjaGFuZ2VkIGRldGVjdGlvbgooZnVuY3Rpb24gKCQpIHsKJC5mbi5zaXplQ2hhbmdlZCA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7CiAgdmFyIHByZXZpb3VzID0gewogICAgd2lkdGg6IHRoaXMud2lkdGgoKSwKICAgIGhlaWdodDogdGhpcy5oZWlnaHQoKQogIH07CiAgdmFyIHRoaXogPSB0aGlzOwogIHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKICAgIGlmIChwcmV2aW91cy53aWR0aCAhPT0gdGhpei53aWR0aCgpIHx8IHByZXZpb3VzLmhlaWdodCAhPT0gdGhpei5oZWlnaHQoKSkgewogICAgICBoYW5kbGVyKCk7CiAgICAgIHByZXZpb3VzLndpZHRoID0gdGhpei53aWR0aCgpOwogICAgICBwcmV2aW91cy5oZWlnaHQgPSB0aGl6LmhlaWdodCgpOwogICAgfQogIH0sIDEwMCk7CgogIHJldHVybiB0aGl6Owp9Owp9KGpRdWVyeSkpOwoKSFRNTFdpZGdldHMud2lkZ2V0KHsKCiAgbmFtZTogImR5Z3JhcGhzIiwKCiAgdHlwZTogIm91dHB1dCIsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7IAogICAgCiAgICAvLyBhZGQgcXQgc3R5bGUgaWYgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgUXQKICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCIgUXQvIikgPiAwKQogICAgICBlbC5jbGFzc05hbWUgKz0gIiBxdCI7CiAgICAKICAgIHJldHVybiB7fTsKICB9LAoKICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBpbnN0YW5jZSkgewogICAgaWYgKGluc3RhbmNlLmR5Z3JhcGgpCiAgICAgIGluc3RhbmNlLmR5Z3JhcGgucmVzaXplKCk7CiAgfSwKCiAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgCiAgICAvLyByZWZlcmVuY2UgdG8gdGhpcyBmb3IgY2xvc3VyZXMKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIAogICAgLy8gZ2V0IGR5Z3JhcGggYXR0cnMgYW5kIHBvcHVsYXRlIGZpbGUgZmllbGQKICAgIHZhciBhdHRycyA9IHguYXR0cnM7CiAgICBhdHRycy5maWxlID0geC5kYXRhOwogICAgCiAgICAvLyBjb252ZXJ0IG5vbi1hcnJheXMgdG8gYXJyYXlzCiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXR0cnMuZmlsZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgaWYgKCEkLmlzQXJyYXkoYXR0cnMuZmlsZVtpbmRleF0pKQogICAgICAgIGF0dHJzLmZpbGVbaW5kZXhdID0gW10uY29uY2F0KGF0dHJzLmZpbGVbaW5kZXhdKTsKICAgIH0KICAgICAgICAKICAgIC8vIHJlc29sdmUgImF1dG8iIGxlZ2VuZCBiZWhhdmlvcgogICAgaWYgKHguYXR0cnMubGVnZW5kID09ICJhdXRvIikgewogICAgICBpZiAoeC5kYXRhLmxlbmd0aCA8PSAyKQogICAgICAgIHguYXR0cnMubGVnZW5kID0gIm9ubW91c2VvdmVyIjsKICAgICAgZWxzZQogICAgICAgIHguYXR0cnMubGVnZW5kID0gImFsd2F5cyI7CiAgICB9CiAgICAKICAgIGlmICh4LmZvcm1hdCA9PSAiZGF0ZSIpIHsKICAgICAgCiAgICAgIC8vIHNldCBhcHByb3ByaWF0ZWQgZnVuY3Rpb24gaW4gY2FzZSBvZiBmaXhlZCB0egogICAgICBpZiAoKGF0dHJzLmF4ZXMueC5heGlzTGFiZWxGb3JtYXR0ZXIgPT09IHVuZGVmaW5lZCkgJiYgeC5maXhlZHR6KQogICAgICAgIGF0dHJzLmF4ZXMueC5heGlzTGFiZWxGb3JtYXR0ZXIgPSB0aGlzLnhBeGlzTGFiZWxGb3JtYXR0ZXJGaXhlZFRaKHgudHpvbmUpOwogICAgICAgIAogICAgICBpZiAoKGF0dHJzLmF4ZXMueC52YWx1ZUZvcm1hdHRlciA9PT0gdW5kZWZpbmVkKSAmJiB4LmZpeGVkdHopCiAgICAgICAgYXR0cnMuYXhlcy54LnZhbHVlRm9ybWF0dGVyID0gdGhpcy54VmFsdWVGb3JtYXR0ZXJGaXhlZFRaKHguc2NhbGUsIHgudHpvbmUpOwogIAogICAgICBpZiAoKGF0dHJzLmF4ZXMueC50aWNrZXIgPT09IHVuZGVmaW5lZCkgJiYgeC5maXhlZHR6KQogICAgICAgIGF0dHJzLmF4ZXMueC50aWNrZXIgPSB0aGlzLmN1c3RvbURhdGVUaWNrZXJGaXhlZFRaKHgudHpvbmUpOwogICAgCiAgICAgIC8vIHByb3ZpZGUgYW4gYXV0b21hdGljIHggdmFsdWUgZm9ybWF0dGVyIGlmIG5vbmUgaXMgYWxyZWFkeSBzcGVjaWZpZWQKICAgICAgaWYgKChhdHRycy5heGVzLngudmFsdWVGb3JtYXR0ZXIgPT09IHVuZGVmaW5lZCkgJiYgKHguZml4ZWR0eiAhPSB0cnVlKSkKICAgICAgICBhdHRycy5heGVzLngudmFsdWVGb3JtYXR0ZXIgPSB0aGlzLnhWYWx1ZUZvcm1hdHRlcih4LnNjYWxlKTsKICAgICAgCiAgICAgIC8vIGNvbnZlcnQgdGltZSB0byBqcyB0aW1lCiAgICAgIGF0dHJzLmZpbGVbMF0gPSBhdHRycy5maWxlWzBdLm1hcChmdW5jdGlvbih2YWx1ZSkgewogICAgICAgIHJldHVybiB0aGl6Lm5vcm1hbGl6ZURhdGVWYWx1ZSh4LnNjYWxlLCB2YWx1ZSwgeC5maXhlZHR6KTsKICAgICAgfSk7CiAgICAgIGlmIChhdHRycy5kYXRlV2luZG93ICE9IG51bGwpIHsKICAgICAgICBhdHRycy5kYXRlV2luZG93ID0gYXR0cnMuZGF0ZVdpbmRvdy5tYXAoZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgIHZhciBkYXRlID0gdGhpei5ub3JtYWxpemVEYXRlVmFsdWUoeC5zY2FsZSwgdmFsdWUsIHguZml4ZWR0eik7CiAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICAgIAogICAgCiAgICAvLyB0cmFuc3Bvc2UgYXJyYXkKICAgIGF0dHJzLmZpbGUgPSBIVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEKGF0dHJzLmZpbGUpOwogICAgCiAgICAvLyBhZGQgZHJhd0NhbGxiYWNrIGZvciBncm91cAogICAgaWYgKHguZ3JvdXAgIT0gbnVsbCkKICAgICAgdGhpcy5hZGRHcm91cERyYXdDYWxsYmFjayh4KTsgIAogICAgICAKICAgIC8vIGFkZCBzaGFkaW5nIGFuZCBldmVudCBjYWxsYmFjayBpZiBuZWNlc3NhcnkKICAgIHRoaXMuYWRkU2hhZGluZ0NhbGxiYWNrKHgpOwogICAgdGhpcy5hZGRFdmVudENhbGxiYWNrKHgpOwogICAgdGhpcy5hZGRab29tQ2FsbGJhY2soeCwgaW5zdGFuY2UpOwoKICAgIC8vIGlmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIGluc3RhbmNlIHBlcmZvcm0gb25lLXRpbWUgaW5pdGlhbGl6YXRpb24KICAgIGlmICghaW5zdGFuY2UuZHlncmFwaCkgewogICAgICAKICAgICAgLy8gc3Vic2NyaWJlIHRvIGN1c3RvbSBzaG93biBldmVudCAoZmlyZWQgYnkgaW9zbGlkZXMgdG8gdHJpZ2dlcgogICAgICAvLyBzaGlueSByZWFjdGl2aXR5IGJ1dCB3ZSBjYW4gdXNlIGl0IGFzIHdlbGwpLiB0aGlzIGlzIG5lY2Vzc2FyeQogICAgICAvLyBiZWNhdXNlIGlmIGEgZHlncmFwaCBzdGFydHMgb3V0IGFzIGRpc3BsYXk6bm9uZSBpdCBoYXMgaGVpZ2h0CiAgICAgIC8vIGFuZCB3aWR0aCA9PSAwIGFuZCB0aGlzIGRvZXNuJ3QgY2hhbmdlIHdoZW4gaXQgYmVjb21lcyB2aXNpYmxlCiAgICAgICQoZWwpLmNsb3Nlc3QoJ3NsaWRlJykub24oJ3Nob3duJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGluc3RhbmNlLmR5Z3JhcGgpCiAgICAgICAgICBpbnN0YW5jZS5keWdyYXBoLnJlc2l6ZSgpOyAgCiAgICAgIH0pOwogICAgICAKICAgICAgLy8gZG8gdGhlIHNhbWUgZm9yIHJldmVhbC5qcwogICAgICAkKGVsKS5jbG9zZXN0KCdzZWN0aW9uLnNsaWRlJykub24oJ3Nob3duJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGluc3RhbmNlLmR5Z3JhcGgpCiAgICAgICAgICBpbnN0YW5jZS5keWdyYXBoLnJlc2l6ZSgpOyAgCiAgICAgIH0pOwogICAgICAKICAgICAgLy8gcmVkcmF3IG9uIFIgTWFya2Rvd24gey50YWJzZXR9IHRhYiB2aXNpYmlsaXR5IGNoYW5nZWQKICAgICAgdmFyIHRhYiA9ICQoZWwpLmNsb3Nlc3QoJ2Rpdi50YWItcGFuZScpOwogICAgICBpZiAodGFiICE9PSBudWxsKSB7CiAgICAgICAgdmFyIHRhYklEID0gdGFiLmF0dHIoJ2lkJyk7CiAgICAgICAgdmFyIHRhYkFuY2hvciA9ICQoJ2FbZGF0YS10b2dnbGU9InRhYiJdW2hyZWY9IiMnICsgdGFiSUQgKyAnIl0nKTsKICAgICAgICBpZiAodGFiQW5jaG9yICE9PSBudWxsKSB7CiAgICAgICAgICB0YWJBbmNob3Iub24oJ3Nob3duLmJzLnRhYicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoaW5zdGFuY2UuZHlncmFwaCkKICAgICAgICAgICAgICBpbnN0YW5jZS5keWdyYXBoLnJlc2l6ZSgpOyAgCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHByb2FjdGl2ZWx5IGRldGVjdCBlbGVtZW50IHNpemUgY2hhbmdlZCBhbmQgcmVkcmF3IGZvciB0aGF0IGFzIHdlbGwKICAgICAgLy8gKHJlcXVpcmVkIGZvciBzb21lIGZsZXhib3ggbGF5b3V0cykKICAgICAgJChlbCkuc2l6ZUNoYW5nZWQoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGluc3RhbmNlLmR5Z3JhcGgpCiAgICAgICAgICBpbnN0YW5jZS5keWdyYXBoLnJlc2l6ZSgpOyAgCiAgICAgIH0pOwoKICAgICAgLy8gYWRkIGRlZmF1bHQgZm9udCBmb3Igdmlld2VyIG1vZGUKICAgICAgaWYgKHRoaXMucXVlcnlWYXIoInZpZXdlcl9wYW5lIikgPT09ICIxIikKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmZvbnRGYW1pbHkgPSAiQXJpYWwsIHNhbnMtc2VyaWYiOwoKICAgICAgLy8gaW5qZWN0IGNzcyBpZiBuZWNlc3NhcnkKICAgICAgaWYgKHguY3NzICE9IG51bGwpIHsKICAgICAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICAgIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnOwogICAgICAgIGlmIChzdHlsZS5zdHlsZVNoZWV0KSAKICAgICAgICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHguY3NzOwogICAgICAgIGVsc2UgCiAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh4LmNzcykpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoc3R5bGUpOwogICAgICB9CiAgICAgIAogICAgfSBlbHNlIHsKICAgICAgCiAgICAgICAgLy8gcmV0YWluIHRoZSB1c2VyRGF0ZVdpbmRvdyBpZiByZXF1ZXN0ZWQKICAgICAgICBpZiAoaW5zdGFuY2UuZHlncmFwaC51c2VyRGF0ZVdpbmRvdyAhPSBudWxsCiAgICAgICAgICAgICYmIGF0dHJzLnJldGFpbkRhdGVXaW5kb3cgPT0gdHJ1ZSkgewogICAgICAgICAgYXR0cnMuZGF0ZVdpbmRvdyA9IGluc3RhbmNlLmR5Z3JhcGgueEF4aXNSYW5nZSgpOwogICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgLy8gcmVtb3ZlIGl0IGZyb20gZ3JvdXBzIGlmIGl0J3MgdGhlcmUKICAgICAgICBpZiAoeC5ncm91cCAhPSBudWxsICYmIHRoaXMuZ3JvdXBzW3guZ3JvdXBdICE9IG51bGwpIHsKICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZ3JvdXBzW3guZ3JvdXBdLmluZGV4T2YoaW5zdGFuY2UuZHlncmFwaCk7CiAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCiAgICAgICAgICAgIHRoaXMuZ3JvdXBzW3guZ3JvdXBdLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIGRlc3Ryb3kgdGhlIGV4aXN0aW5nIGR5Z3JhcGggCiAgICAgICAgaW5zdGFuY2UuZHlncmFwaC5kZXN0cm95KCk7CiAgICAgICAgaW5zdGFuY2UuZHlncmFwaCA9IG51bGw7CiAgICB9CiAgICAKICAgIC8vIGFkZCBzaGlueSBpbnB1dCBmb3IgZGF0ZSB3aW5kb3cKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUpCiAgICAgIHRoaXMuYWRkRGF0ZVdpbmRvd1NoaW55SW5wdXQoZWwuaWQsIHgpOwogICAgCiAgICAvLyBjcmVhdGUgdGhlIGluc3RhbmNlIGFuZCBhZGQgaXQgdG8gaXQncyBncm91cCAoaWYgYW55KQogICAgaW5zdGFuY2UuZHlncmFwaCA9IG5ldyBEeWdyYXBoKGVsLCBhdHRycy5maWxlLCBhdHRycyk7CiAgICBpbnN0YW5jZS5keWdyYXBoLnVzZXJEYXRlV2luZG93ID0gYXR0cnMuZGF0ZVdpbmRvdzsKICAgIGlmICh4Lmdyb3VwICE9IG51bGwpCiAgICAgIHRoaXMuZ3JvdXBzW3guZ3JvdXBdLnB1c2goaW5zdGFuY2UuZHlncmFwaCk7CiAgICAKICAgIC8vIHNldCBhbm5vdGF0aW9ucwogICAgaWYgKHguYW5ub3RhdGlvbnMgIT0gbnVsbCkgewogICAgICBpbnN0YW5jZS5keWdyYXBoLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh4LmZvcm1hdCA9PSAiZGF0ZSIpIHsKICAgICAgICAgIHguYW5ub3RhdGlvbnMubWFwKGZ1bmN0aW9uKGFubm90YXRpb24pIHsKICAgICAgICAgICAgdmFyIGRhdGUgPSB0aGl6Lm5vcm1hbGl6ZURhdGVWYWx1ZSh4LnNjYWxlLCBhbm5vdGF0aW9uLngsIHguZml4ZWR0eik7CiAgICAgICAgICAgIGFubm90YXRpb24ueCA9IGRhdGUuZ2V0VGltZSgpOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGluc3RhbmNlLmR5Z3JhcGguc2V0QW5ub3RhdGlvbnMoeC5hbm5vdGF0aW9ucyk7CiAgICAgIH0pOyAKICAgIH0KICAgICAgCiAgfSwKICAKICBjdXN0b21EYXRlVGlja2VyRml4ZWRUWiA6IGZ1bmN0aW9uKHR6KXsKICAgIHJldHVybiBmdW5jdGlvbih0LGUsYSxpLHIpIHsgICAKICAgICAgdmFyIGE9RHlncmFwaC5waWNrRGF0ZVRpY2tHcmFudWxhcml0eSh0LGUsYSxpKTsKICAgICAgaWYoYSA+PSAwKXsKICAgICAgICAKICAgICAgICB2YXIgbj1pKCJheGlzTGFiZWxGb3JtYXR0ZXIiKSwKICAgICAgICBvPWkoImxhYmVsc1VUQyIpLAogICAgICAgIHM9bz9EeWdyYXBoLkRhdGVBY2Nlc3NvcnNVVEM6RHlncmFwaC5EYXRlQWNjZXNzb3JzTG9jYWw7CiAgICAgICAgbD1EeWdyYXBoLlRJQ0tfUExBQ0VNRU5UW2FdLmRhdGVmaWVsZDsKICAgICAgICBoPUR5Z3JhcGguVElDS19QTEFDRU1FTlRbYV0uc3RlcDsKICAgICAgICBwPUR5Z3JhcGguVElDS19QTEFDRU1FTlRbYV0uc3BhY2luZzsKICAgICAgICAKICAgICAgICB2YXIgeSA9IFtdOwogICAgICAgIHZhciBkID0gbW9tZW50KHQpOwogICAgICAgIGQudHoodHopOyAKICAgICAgICBkLm1pbGxpc2Vjb25kKDApOwogICAgICAKICAgICAgICBpZihsID4gRHlncmFwaC5EQVRFRklFTERfTSl7CiAgICAgICAgICB2YXIgeDsKICAgICAgICAgIGlmIChsID09PSBEeWdyYXBoLkRBVEVGSUVMRF9TUykgeyAgLy8gc2Vjb25kcyAKICAgICAgICAgICAgeCA9IGQuc2Vjb25kKCk7ICAgICAgICAgCiAgICAgICAgICAgIGQuc2Vjb25kKHggLSB4ICUgaCk7ICAgICAKICAgICAgICAgIH0gZWxzZSBpZihsID09PSBEeWdyYXBoLkRBVEVGSUVMRF9NTSl7CiAgICAgICAgICAgIGQuc2Vjb25kKDApCiAgICAgICAgICAgIHggPSBkLm1pbnV0ZSgpOwogICAgICAgICAgICBkLm1pbnV0ZSh4IC0geCAlIGgpOwogICAgICAgICAgfSBlbHNlIGlmKGwgPT09IER5Z3JhcGguREFURUZJRUxEX0hIKXsKICAgICAgICAgICAgZC5zZWNvbmQoMCk7CiAgICAgICAgICAgIGQubWludXRlKDApOwogICAgICAgICAgICB4ID0gZC5ob3VyKCk7CiAgICAgICAgICAgIGQuaG91cih4IC0geCAlIGgpOwogICAgICAgICAgfSBlbHNlIGlmKGwgPT09IER5Z3JhcGguREFURUZJRUxEX0QpewogICAgICAgICAgICBkLnNlY29uZCgwKTsKICAgICAgICAgICAgZC5taW51dGUoMCk7CiAgICAgICAgICAgIGQuaG91cigwKTsKICAgICAgICAgICAgaWYgKGggPT0gNykgeyAgLy8gb25lIHdlZWsKICAgICAgICAgICAgICAgIGQuc3RhcnRPZignd2VlaycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAKICAgICAgICAgIHYgPSBkLnZhbHVlT2YoKTsKICAgICAgICAgIF89bW9tZW50KHYpLnR6KHR6KTsKICAgICAgICAKICAgICAgICAgIC8vIEZvciBzcGFjaW5ncyBjb2Fyc2VyIHRoYW4gdHdvLWhvdXJseSwgd2Ugd2FudCB0byBpZ25vcmUgZGF5bGlnaHQKICAgICAgICAgIC8vIHNhdmluZ3MgdHJhbnNpdGlvbnMgdG8gZ2V0IGNvbnNpc3RlbnQgdGlja3MuIEZvciBmaW5lci1ncmFpbmVkIHRpY2tzLAogICAgICAgICAgLy8gaXQncyBlc3NlbnRpYWwgdG8gc2hvdyB0aGUgRFNUIHRyYW5zaXRpb24gaW4gYWxsIGl0cyBtZXNzaW5lc3MuCiAgICAgICAgICB2YXIgc3RhcnRfb2Zmc2V0X21pbiA9IG1vbWVudCh2KS50eih0eikuem9uZSgpOwogICAgICAgICAgdmFyIGNoZWNrX2RzdCA9IChwID49IER5Z3JhcGguVElDS19QTEFDRU1FTlRbRHlncmFwaC5UV09fSE9VUkxZXS5zcGFjaW5nKTsKICAgICAgICAgIAoJICAgICAgICBpZihhPD1EeWdyYXBoLkhPVVJMWSl7CgkJICAgICAgICBmb3IodD52JiYodis9cCxfPW1vbWVudCh2KS50eih0eikpO2U+PXY7KXsKCQkJICAgICAgICB5LnB1c2goe3Y6dixsYWJlbDpuKF8sYSxpLHIpfSk7CgkJCSAgICAgICAgdis9cDsKCQkJICAgICAgICBfPW1vbWVudCh2KS50eih0eik7CgkJICAgICAgICB9CgkgICAgICAgIH1lbHNlewogICAgICAgICAgICBmb3IodD52JiYodis9cCxfPW1vbWVudCh2KS50eih0eikpO2U+PXY7KXsgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBzdGF5IG9uIHRoZSBzYW1lIGhvdXJseSAicmh5dGhtIiBhY3Jvc3MKICAgICAgICAgICAgICAvLyBkYXlsaWdodCBzYXZpbmdzIHRyYW5zaXRpb25zLiBXaXRob3V0IHRoaXMsIHRoZSB0aWNrcyBjb3VsZCBnZXQgb2ZmCiAgICAgICAgICAgICAgLy8gYnkgYW4gaG91ci4gU2VlIHRlc3RzL2RheWxpZ2h0LXNhdmluZ3MuaHRtbCBvciBpc3N1ZSAxNDcuCiAgICAgICAgICAgICAgaWYgKGNoZWNrX2RzdCAmJiBfLnpvbmUoKSAhPSBzdGFydF9vZmZzZXRfbWluKSB7CiAgICAgICAgICAgICAgICB2YXIgZGVsdGFfbWluID0gXy56b25lKCkgLSBzdGFydF9vZmZzZXRfbWluOwogICAgICAgICAgICAgICAgdiArPSBkZWx0YV9taW4gKiA2MCAqIDEwMDA7CiAgICAgICAgICAgICAgICBfPSBtb21lbnQodikudHoodHopOwogICAgICAgICAgICAgICAgc3RhcnRfb2Zmc2V0X21pbiA9IF8uem9uZSgpOwoKICAgICAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgd2UndmUgYmFja2VkIGludG8gdGhlIHByZXZpb3VzIHRpbWV6b25lIGFnYWluLgogICAgICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGR1cmluZyBhICJzcHJpbmcgZm9yd2FyZCIgdHJhbnNpdGlvbi4gSW4gdGhpcyBjYXNlLAogICAgICAgICAgICAgICAgLy8gaXQncyBiZXN0IHRvIHNraXAgdGhpcyB0aWNrIGFsdG9nZXRoZXIgKHdlIG1heSBiZSBzaG9vdGluZyBmb3IgYQogICAgICAgICAgICAgICAgLy8gbm9uLWV4aXN0ZW50IHRpbWUgbGlrZSB0aGUgMkFNIHRoYXQncyBza2lwcGVkKSBhbmQgZ28gdG8gdGhlIG5leHQKICAgICAgICAgICAgICAgIC8vIG9uZS4KICAgICAgICAgICAgICAgIGlmIChtb21lbnQodiArIHApLnR6KHR6KS56b25lKCkgIT0gc3RhcnRfb2Zmc2V0X21pbikgewogICAgICAgICAgICAgICAgICB2ICs9IHA7CiAgICAgICAgICAgICAgICAgIF89IG1vbWVudCh2KS50eih0eik7CiAgICAgICAgICAgICAgICAgIHN0YXJ0X29mZnNldF9taW4gPSBfLnpvbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgIChhPj1EeWdyYXBoLkRBSUxZfHxfLmdldCgnaG91cicpJWg9PT0wKSYmeS5wdXNoKHt2OnYsbGFiZWw6bihfLGEsaSxyKX0pOwoJCQkgICAgICAgIHYrPXA7CgkJCSAgICAgICAgXz1tb21lbnQodikudHoodHopOwoJCSAgICAgICAgfQoJICAgICAgICB9CgkgICAgICB9ZWxzZXsKICAgICAgICAgIHZhciBzdGFydF95ZWFyID0gbW9tZW50KHQpLnR6KHR6KS55ZWFyKCk7CiAgICAgICAgICB2YXIgZW5kX3llYXIgICA9IG1vbWVudChlKS50eih0eikueWVhcigpOwogICAgICAgICAgdmFyIHN0YXJ0X21vbnRoID0gbW9tZW50KHQpLnR6KHR6KS5tb250aCgpOwogICAgICAgICAgCiAgICAgICAgICBpZihsID09PSBEeWdyYXBoLkRBVEVGSUVMRF9NKXsKICAgICAgICAgICAgdmFyIHN0ZXBfbW9udGggPSBoOwogICAgICAgICAgICBmb3IgKHZhciBpaSA9IHN0YXJ0X3llYXI7IGlpIDw9IGVuZF95ZWFyOyBpaSsrKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCAxMjspIHsKICAgICAgICAgICAgICAgIHZhciBkdCA9IG1vbWVudChuZXcgRGF0ZShpaSwgaiwgMSkpLnR6KHR6KTsgCiAgICAgICAgICAgICAgICAvLyBmaXggc29tZSB0eiBidWcKICAgICAgICAgICAgICAgIGR0LnllYXIoaWkpOwogICAgICAgICAgICAgICAgZHQubW9udGgoaik7CiAgICAgICAgICAgICAgICBkdC5kYXRlKDEpOwogICAgICAgICAgICAgICAgZHQuaG91cigwKTsKICAgICAgICAgICAgICAgIHYgPSBkdC52YWx1ZU9mKCk7CiAgICAgICAgICAgICAgICB5LnB1c2goe3Y6dixsYWJlbDpuKG1vbWVudCh2KS50eih0eiksYSxpLHIpfSk7CiAgICAgICAgICAgICAgICBqKz1zdGVwX21vbnRoOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIHZhciBzdGVwX3llYXIgPSBoOwogICAgICAgICAgICBmb3IgKHZhciBpaSA9IHN0YXJ0X3llYXI7IGlpIDw9IGVuZF95ZWFyOykgewogICAgICAgICAgICAgIHZhciBkdCA9IG1vbWVudChuZXcgRGF0ZShpaSwgMSwgMSkpLnR6KHR6KTsgCiAgICAgICAgICAgICAgLy8gZml4IHNvbWUgdHogYnVnCiAgICAgICAgICAgICAgZHQueWVhcihpaSk7CiAgICAgICAgICAgICAgZHQubW9udGgoaik7CiAgICAgICAgICAgICAgZHQuZGF0ZSgxKTsKICAgICAgICAgICAgICBkdC5ob3VyKDApOwogICAgICAgICAgICAgIHYgPSBkdC52YWx1ZU9mKCk7CiAgICAgICAgICAgICAgeS5wdXNoKHt2OnYsbGFiZWw6bihtb21lbnQodikudHoodHopLGEsaSxyKX0pOwogICAgICAgICAgICAgIGlpKz1zdGVwX3llYXI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCSAgICAgIH0KCSAgICAgIHJldHVybiB5OwoJICAgIH1lbHNlewogICAgICAgcmV0dXJuIFtdOyAKCSAgICB9CiAgICB9OwogIH0sCgogIHhBeGlzTGFiZWxGb3JtYXR0ZXJGaXhlZFRaIDogZnVuY3Rpb24odHopewogIAogICAgcmV0dXJuIGZ1bmN0aW9uIGRhdGVBeGlzRm9ybWF0dGVyKGRhdGUsIGdyYW51bGFyaXR5KXsKICAgICAgdmFyIG1tbnQgPSBtb21lbnQoZGF0ZSkudHoodHopOwogICAgICBpZiAoZ3JhbnVsYXJpdHkgPj0gRHlncmFwaC5ERUNBREFMKXsKICAgICAgICByZXR1cm4gbW1udC5mb3JtYXQoJ1lZWVknKTsKICAgICAgfWVsc2V7CiAgICAgICAgaWYoZ3JhbnVsYXJpdHkgPj0gRHlncmFwaC5NT05USExZKXsKICAgICAgICAgIHJldHVybiBtbW50LmZvcm1hdCgnTU1NIFlZWVknKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgIHZhciBmcmFjID0gbW1udC5ob3VyKCkgKiAzNjAwICsgbW1udC5taW51dGUoKSAqIDYwICsgbW1udC5zZWNvbmQoKSArIG1tbnQubWlsbGlzZWNvbmQoKTsKICAgICAgICAgICAgaWYgKGZyYWMgPT09IDAgfHwgZ3JhbnVsYXJpdHkgPj0gRHlncmFwaC5EQUlMWSkgewogICAgICAgICAgICAgIHJldHVybiBtbW50LmZvcm1hdCgnREQgTU1NJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobW1udC5zZWNvbmQoKSkgewogICAgICAgICAgICAgICByZXR1cm4gbW1udC5mb3JtYXQoJ0hIOm1tOnNzJyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICByZXR1cm4gbW1udC5mb3JtYXQoJ0hIOm1tJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICB9ICAgICAgICAgCiAgIH0KICB9LAogICAgICAgICAKICB4VmFsdWVGb3JtYXR0ZXJGaXhlZFRaOiBmdW5jdGlvbihzY2FsZSwgdHopIHsKICAgICAgICAgICAgICAgICAgIAogICAgcmV0dXJuIGZ1bmN0aW9uKG1pbGxpcykgewogICAgICB2YXIgbW1udCA9IG1vbWVudChtaWxsaXMpLnR6KHR6KTsKICAgICAgICBpZiAoc2NhbGUgPT0gInllYXJseSIpCiAgICAgICAgICByZXR1cm4gbW1udC5mb3JtYXQoJ1lZWVknKSArICcgKCcgKyBtbW50LnpvbmVBYmJyKCkgKyAnKSc7CiAgICAgICAgZWxzZSBpZiAoc2NhbGUgPT0gIm1vbnRobHkiIHx8IHNjYWxlID09ICJxdWFydGVybHkiKQogICAgICAgICAgcmV0dXJuIG1tbnQuZm9ybWF0KCdNTU0sIFlZWVknKSsgJyAoJyArIG1tbnQuem9uZUFiYnIoKSArICcpJzsKICAgICAgICBlbHNlIGlmIChzY2FsZSA9PSAiZGFpbHkiIHx8IHNjYWxlID09ICJ3ZWVrbHkiKQogICAgICAgICAgcmV0dXJuIG1tbnQuZm9ybWF0KCdNTU0sIERELCBZWVlZJykrICcgKCcgKyBtbW50LnpvbmVBYmJyKCkgKyAnKSc7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIG1tbnQuZm9ybWF0KCdkZGRkLCBNTU1NIERELCBZWVlZIEhIOm1tOnNzJykrICcgKCcgKyBtbW50LnpvbmVBYmJyKCkgKyAnKSc7CiAgICB9CiAgfSwKICAKICB4VmFsdWVGb3JtYXR0ZXI6IGZ1bmN0aW9uKHNjYWxlKSB7CiAgICAKICAgIHZhciBtb250aE5hbWVzID0gWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsIAogICAgICAgICAgICAgICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIl07CiAgICAgICAgICAgICAgICAgICAgICAKICAgIHJldHVybiBmdW5jdGlvbihtaWxsaXMpIHsKICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShtaWxsaXMpOwogICAgICAgIGlmIChzY2FsZSA9PSAieWVhcmx5IikKICAgICAgICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7CiAgICAgICAgZWxzZSBpZiAoc2NhbGUgPT0gIm1vbnRobHkiIHx8IHNjYWxlID09ICJxdWFydGVybHkiKQogICAgICAgICAgcmV0dXJuIG1vbnRoTmFtZXNbZGF0ZS5nZXRNb250aCgpXSArICcsICcgKyBkYXRlLmdldEZ1bGxZZWFyKCk7IAogICAgICAgIGVsc2UgaWYgKHNjYWxlID09ICJkYWlseSIgfHwgc2NhbGUgPT0gIndlZWtseSIpCiAgICAgICAgICByZXR1cm4gbW9udGhOYW1lc1tkYXRlLmdldE1vbnRoKCldICsgJywgJyArIAogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSArICcsICcgKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCk7CiAgICB9CiAgfSwKICAKICBhZGRab29tQ2FsbGJhY2s6IGZ1bmN0aW9uKHgsIGluc3RhbmNlKSB7CiAgICAKICAgIC8vIGFsaWFzIHRoaXMKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIAogICAgLy8gZ2V0IGF0dHJzCiAgICB2YXIgYXR0cnMgPSB4LmF0dHJzOwogICAgCiAgICAvLyBjaGVjayBmb3IgYW4gZXhpc3Rpbmcgem9vbUNhbGxiYWNrCiAgICB2YXIgcHJldlpvb21DYWxsYmFjayA9IGF0dHJzWyJ6b29tQ2FsbGJhY2siXTsKICAgIAogICAgYXR0cnMuem9vbUNhbGxiYWNrID0gZnVuY3Rpb24obWluRGF0ZSwgbWF4RGF0ZSwgeVJhbmdlcykgewogICAgICAKICAgICAgLy8gY2FsbCBleGlzdGluZwogICAgICBpZiAocHJldlpvb21DYWxsYmFjaykKICAgICAgICBwcmV2Wm9vbUNhbGxiYWNrKG1pbkRhdGUsIG1heERhdGUsIHlSYW5nZXMpOwogICAgICAgIAogICAgICAvLyByZWNvcmQgdXNlciBkYXRlIHdpbmRvdyAob3IgbGFjayB0aGVyZW9mKQogICAgICB2YXIgbWUgPSBpbnN0YW5jZS5keWdyYXBoOwogICAgICBpZiAobWUueEF4aXNFeHRyZW1lcygpWzBdICE9IG1pbkRhdGUgfHwKICAgICAgICAgIG1lLnhBeGlzRXh0cmVtZXMoKVsxXSAhPSBtYXhEYXRlKSB7CiAgICAgICAgIG1lLnVzZXJEYXRlV2luZG93ID0gW21pbkRhdGUsIG1heERhdGVdOwogICAgICB9IGVsc2UgewogICAgICAgICBtZS51c2VyRGF0ZVdpbmRvdyA9IG51bGw7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHJlY29yZCBpbiBncm91cCBpZiBuZWNlc3NhcnkKICAgICAgaWYgKHguZ3JvdXAgIT0gbnVsbCAmJiB0aGl6Lmdyb3Vwc1t4Lmdyb3VwXSAhPSBudWxsKSB7CiAgICAgICAgdmFyIGdyb3VwID0gdGhpei5ncm91cHNbeC5ncm91cF07CiAgICAgICAgZm9yKHZhciBpID0gMDsgaTxncm91cC5sZW5ndGg7IGkrKykKICAgICAgICAgIGdyb3VwW2ldLnVzZXJEYXRlV2luZG93ID0gbWUudXNlckRhdGVXaW5kb3c7CiAgICAgIH0KICAgIH07CiAgfSwKICAKICAKICBncm91cHM6IHt9LAogIAogIGFkZEdyb3VwRHJhd0NhbGxiYWNrOiBmdW5jdGlvbih4KSB7CiAgICAKICAgIC8vIGdldCBhdHRycwogICAgdmFyIGF0dHJzID0geC5hdHRyczsKICAgIAogICAgLy8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nIGRyYXdDYWxsYmFjawogICAgdmFyIHByZXZEcmF3Q2FsbGJhY2sgPSBhdHRyc1siZHJhd0NhbGxiYWNrIl07CiAgICAKICAgIHRoaXMuZ3JvdXBzW3guZ3JvdXBdID0gdGhpcy5ncm91cHNbeC5ncm91cF0gfHwgW107CiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdyb3Vwc1t4Lmdyb3VwXTsKICAgIHZhciBibG9ja1JlZHJhdyA9IGZhbHNlOwogICAgYXR0cnMuZHJhd0NhbGxiYWNrID0gZnVuY3Rpb24obWUsIGluaXRpYWwpIHsKICAgICAgCiAgICAgIC8vIGNhbGwgZXhpc3RpbmcKICAgICAgaWYgKHByZXZEcmF3Q2FsbGJhY2spCiAgICAgICAgcHJldkRyYXdDYWxsYmFjayhtZSwgaW5pdGlhbCk7CiAgICAgIAogICAgICAvLyBzeW5jIHBlZXJzIGluIGdyb3VwCiAgICAgIGlmIChibG9ja1JlZHJhdyB8fCBpbml0aWFsKSByZXR1cm47CiAgICAgIGJsb2NrUmVkcmF3ID0gdHJ1ZTsKICAgICAgdmFyIHJhbmdlID0gbWUueEF4aXNSYW5nZSgpOwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGdyb3VwLmxlbmd0aDsgaisrKSB7CiAgICAgICAgaWYgKGdyb3VwW2pdID09IG1lKSBjb250aW51ZTsKICAgICAgICAvLyB1cGRhdGUgZ3JvdXAgcmFuZ2Ugb25seSBpZiBpdCdzIGRpZmZlcmVudCAocHJldmVudHMKICAgICAgICAvLyBpbmZpbml0ZSByZWN1cnNpb24gaW4gdXBkYXRlT3B0aW9ucykKICAgICAgICB2YXIgcGVlclJhbmdlID0gZ3JvdXBbal0ueEF4aXNSYW5nZSgpOwogICAgICAgIGlmIChwZWVyUmFuZ2VbMF0gIT0gcmFuZ2VbMF0gfHwgcGVlclJhbmdlWzFdICE9IHJhbmdlWzFdKSB7CiAgICAgICAgICBncm91cFtqXS51cGRhdGVPcHRpb25zKHsKICAgICAgICAgICAgZGF0ZVdpbmRvdzogcmFuZ2UKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgICBibG9ja1JlZHJhdyA9IGZhbHNlOwogICAgfTsKICB9LAogIAogIGFkZFNoYWRpbmdDYWxsYmFjazogZnVuY3Rpb24oeCkgewogICAgCiAgICAvLyBiYWlsIGlmIG5vIHNoYWRpbmdzCiAgICBpZiAoeC5zaGFkaW5ncy5sZW5ndGggPT0gMCkKICAgICAgcmV0dXJuOwogICAgCiAgICAvLyBhbGlhcyB0aGlzCiAgICB2YXIgdGhpeiA9IHRoaXM7CiAgICAKICAgIC8vIGdldCBhdHRycwogICAgdmFyIGF0dHJzID0geC5hdHRyczsKICAgIAogICAgLy8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nIHVuZGVybGF5Q2FsbGJhY2sKICAgIHZhciBwcmV2VW5kZXJsYXlDYWxsYmFjayA9IGF0dHJzWyJ1bmRlcmxheUNhbGxiYWNrIl07CiAgICAKICAgIC8vIGluc3RhbGwgY2FsbGJhY2sKICAgIGF0dHJzLnVuZGVybGF5Q2FsbGJhY2sgPSBmdW5jdGlvbihjYW52YXMsIGFyZWEsIGcpIHsKICAgICAgCiAgICAgIC8vIGNhbGwgZXhpc3RpbmcKICAgICAgaWYgKHByZXZVbmRlcmxheUNhbGxiYWNrKQogICAgICAgIHByZXZVbmRlcmxheUNhbGxiYWNrKGNhbnZhcywgYXJlYSwgZyk7CiAgICAgICAgCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5zaGFkaW5ncy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBzaGFkaW5nID0geC5zaGFkaW5nc1tpXTsKICAgICAgICBjYW52YXMuc2F2ZSgpOwogICAgICAgIGNhbnZhcy5maWxsU3R5bGUgPSBzaGFkaW5nLmNvbG9yOwogICAgICAgIGlmIChzaGFkaW5nLmF4aXMgPT0gIngiKSB7CiAgICAgICAgICB2YXIgeDEgPSBzaGFkaW5nLmZyb207CiAgICAgICAgICB2YXIgeDIgPSBzaGFkaW5nLnRvOwogICAgICAgICAgaWYgKHguZm9ybWF0ID09ICJkYXRlIikgewogICAgICAgICAgICB4MSA9IHRoaXoubm9ybWFsaXplRGF0ZVZhbHVlKHguc2NhbGUsIHgxLCB4LmZpeGVkdHopLmdldFRpbWUoKTsKICAgICAgICAgICAgeDIgPSB0aGl6Lm5vcm1hbGl6ZURhdGVWYWx1ZSh4LnNjYWxlLCB4MiwgeC5maXhlZHR6KS5nZXRUaW1lKCk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbGVmdCA9IGcudG9Eb21YQ29vcmQoeDEpOwogICAgICAgICAgdmFyIHJpZ2h0ID0gZy50b0RvbVhDb29yZCh4Mik7CiAgICAgICAgICAKICAgICAgICAgIGNhbnZhcy5maWxsUmVjdChsZWZ0LCBhcmVhLnksIHJpZ2h0IC0gbGVmdCwgYXJlYS5oKTsKICAgICAgICB9IGVsc2UgaWYgKHNoYWRpbmcuYXhpcyA9PSAieSIpIHsKICAgICAgICAgIHZhciBib3R0b20gPSBnLnRvRG9tWUNvb3JkKHNoYWRpbmcuZnJvbSk7CiAgICAgICAgICB2YXIgdG9wID0gZy50b0RvbVlDb29yZChzaGFkaW5nLnRvKTsKCiAgICAgICAgICBjYW52YXMuZmlsbFJlY3QoYXJlYS54LCBib3R0b20sIGFyZWEudywgdG9wIC0gYm90dG9tKTsKICAgICAgICB9CiAgICAgICAgY2FudmFzLnJlc3RvcmUoKTsKICAgICAgfQogICAgfTsKICB9LAogIAogIGFkZEV2ZW50Q2FsbGJhY2s6IGZ1bmN0aW9uKHgpIHsKICAgIAogICAgLy8gYmFpbCBpZiBubyBldmV0cwogICAgaWYgKHguZXZlbnRzLmxlbmd0aCA9PSAwKQogICAgICByZXR1cm47CiAgICAKICAgIC8vIGFsaWFzIHRoaXMKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIAogICAgLy8gZ2V0IGF0dHJzCiAgICB2YXIgYXR0cnMgPSB4LmF0dHJzOwogICAgCiAgICAvLyBjaGVjayBmb3IgYW4gZXhpc3RpbmcgdW5kZXJsYXlDYWxsYmFjawogICAgdmFyIHByZXZVbmRlcmxheUNhbGxiYWNrID0gYXR0cnNbInVuZGVybGF5Q2FsbGJhY2siXTsKICAgIAogICAgLy8gaW5zdGFsbCBjYWxsYmFjawogICAgYXR0cnMudW5kZXJsYXlDYWxsYmFjayA9IGZ1bmN0aW9uKGNhbnZhcywgYXJlYSwgZykgewogICAgICAKICAgICAgLy8gY2FsbCBleGlzdGluZwogICAgICBpZiAocHJldlVuZGVybGF5Q2FsbGJhY2spCiAgICAgICAgcHJldlVuZGVybGF5Q2FsbGJhY2soY2FudmFzLCBhcmVhLCBnKTsKICAgICAgICAKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4LmV2ZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIAogICAgICAgIC8vIGdldCBldmVudCBhbmQgeC1jb29yZGluYXRlCiAgICAgICAgdmFyIGV2ZW50ID0geC5ldmVudHNbaV07CiAgICAgICAgCiAgICAgICAgLy8gZHJhdyBsaW5lCiAgICAgICAgY2FudmFzLnNhdmUoKTsKICAgICAgICBjYW52YXMuc3Ryb2tlU3R5bGUgPSBldmVudC5jb2xvcjsKICAgICAgICBpZiAoZXZlbnQuYXhpcyA9PSAieCIpIHsKICAgICAgICAgIHZhciB4UG9zOwogICAgICAgICAgaWYgKGpRdWVyeS5pc051bWVyaWMoZXZlbnQucG9zKSkgewogICAgICAgICAgICB4UG9zID0gZy50b0RvbVhDb29yZChldmVudC5wb3MpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeFBvcyA9IHRoaXoubm9ybWFsaXplRGF0ZVZhbHVlKHguc2NhbGUsIGV2ZW50LnBvcywgeC5maXhlZHR6KS5nZXRUaW1lKCk7CiAgICAgICAgICAgIHhQb3MgPSBnLnRvRG9tWENvb3JkKHhQb3MpOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAvLyBkcmF3IGxpbmUKICAgICAgICAgIHRoaXouZGFzaGVkTGluZShjYW52YXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHhQb3MsIAogICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEueSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgeFBvcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS55ICsgYXJlYS5oLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cm9rZVBhdHRlcm4pOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuYXhpcyA9PSAieSIpIHsKICAgICAgICAgIHlQb3MgPSBnLnRvRG9tWUNvb3JkKGV2ZW50LnBvcyk7CiAgICAgICAgICAKICAgICAgICAgIHRoaXouZGFzaGVkTGluZShjYW52YXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEueCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgeVBvcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS54ICsgYXJlYS53LCAKICAgICAgICAgICAgICAgICAgICAgICAgICB5UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cm9rZVBhdHRlcm4pOwogICAgICAgIH0KICAgICAgICBjYW52YXMucmVzdG9yZSgpOwogICAgICAgIAogICAgICAgIC8vIGRyYXcgbGFiZWwKICAgICAgICBpZiAoZXZlbnQubGFiZWwgIT0gbnVsbCkgewogICAgICAgICAgY2FudmFzLnNhdmUoKTsKICAgICAgICAgIHRoaXouc2V0Rm9udFNpemUoY2FudmFzLCAxMik7CiAgICAgICAgICB2YXIgc2l6ZSA9IGNhbnZhcy5tZWFzdXJlVGV4dChldmVudC5sYWJlbCk7CiAgICAgICAgICBpZiAoZXZlbnQuYXhpcyA9PSAieCIpIHsKICAgICAgICAgICAgdmFyIHR4ID0geFBvcyAtIDQ7CiAgICAgICAgICAgIHZhciB0eTsKICAgICAgICAgICAgaWYgKGV2ZW50LmxhYmVsTG9jID09ICJ0b3AiKQogICAgICAgICAgICAgIHR5ID0gYXJlYS55ICsgc2l6ZS53aWR0aCArIDEwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdHkgPSBhcmVhLnkgKyBhcmVhLmggLSAxMDsKICAgICAgICAgICAgY2FudmFzLnRyYW5zbGF0ZSh0eCwgdHkpOwogICAgICAgICAgICBjYW52YXMucm90YXRlKDMgKiBNYXRoLlBJIC8gMik7CiAgICAgICAgICAgIGNhbnZhcy50cmFuc2xhdGUoLXR4LC10eSk7CiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmF4aXMgPT0gInkiKSB7CiAgICAgICAgICAgIHZhciB0eSA9IHlQb3MgLSA0OwogICAgICAgICAgICB2YXIgdHg7CiAgICAgICAgICAgIGlmIChldmVudC5sYWJlbExvYyA9PSAicmlnaHQiKQogICAgICAgICAgICAgIHR4ID0gYXJlYS54ICsgYXJlYS53IC0gc2l6ZS53aWR0aCAtIDEwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdHggPSBhcmVhLnggKyAxMDsKICAgICAgICAgIH0KICAgICAgICAgIGNhbnZhcy5maWxsVGV4dChldmVudC5sYWJlbCwgdHgsIHR5KTsKICAgICAgICAgIGNhbnZhcy5yZXN0b3JlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH0sCiAgCiAgYWRkRGF0ZVdpbmRvd1NoaW55SW5wdXQ6IGZ1bmN0aW9uKGlkLCB4KSB7CiAgICAgIAogICAgLy8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nIGRyYXdDYWxsYmFjawogICAgdmFyIHByZXZEcmF3Q2FsbGJhY2sgPSB4LmF0dHJzWyJkcmF3Q2FsbGJhY2siXTsKICAgIAogICAgLy8gaW5zdGFsbCB0aGUgY2FsbGJhY2sKICAgIHguYXR0cnMuZHJhd0NhbGxiYWNrID0gZnVuY3Rpb24obWUsIGluaXRpYWwpIHsKICAgICAgCiAgICAgIC8vIGNhbGwgZXhpc3RpbmcKICAgICAgaWYgKHByZXZEcmF3Q2FsbGJhY2spCiAgICAgICAgcHJldkRyYXdDYWxsYmFjayhtZSwgaW5pdGlhbCk7CiAgICAgICAgCiAgICAgIC8vIGZpcmUgaW5wdXQgY2hhbmdlCiAgICAgIHZhciByYW5nZSA9IG1lLnhBeGlzUmFuZ2UoKTsKICAgICAgdmFyIGRhdGVXaW5kb3cgPSBbbmV3IERhdGUocmFuZ2VbMF0pLCBuZXcgRGF0ZShyYW5nZVsxXSldOwogICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgIl9kYXRlX3dpbmRvdyIsIGRhdGVXaW5kb3cpOyAKICAgIH07CiAgfSwKICAKICAvLyBBZGQgZGFzaGVkIGxpbmUgc3VwcG9ydCB0byBjYW52YXMgcmVuZGVyaW5nIGNvbnRleHQKICAvLyBTZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDU3NjcyNC9kb3R0ZWQtc3Ryb2tlLWluLWNhbnZhcwogIGRhc2hlZExpbmU6IGZ1bmN0aW9uKGNhbnZhcywgeCwgeSwgeDIsIHkyLCBkYXNoQXJyYXkpIHsKICAgIGNhbnZhcy5iZWdpblBhdGgoKTsKICAgIGlmICghZGFzaEFycmF5KSBkYXNoQXJyYXk9WzEwLDVdOwogICAgaWYgKGRhc2hMZW5ndGg9PTApIGRhc2hMZW5ndGggPSAwLjAwMTsgLy8gSGFjayBmb3IgU2FmYXJpCiAgICB2YXIgZGFzaENvdW50ID0gZGFzaEFycmF5Lmxlbmd0aDsKICAgIGNhbnZhcy5tb3ZlVG8oeCwgeSk7CiAgICB2YXIgZHggPSAoeDIteCksIGR5ID0gKHkyLXkpOwogICAgdmFyIHNsb3BlID0gZHggPyBkeS9keCA6IDFlMTU7CiAgICB2YXIgZGlzdFJlbWFpbmluZyA9IE1hdGguc3FydCggZHgqZHggKyBkeSpkeSApOwogICAgdmFyIGRhc2hJbmRleD0wLCBkcmF3PXRydWU7CiAgICB3aGlsZSAoZGlzdFJlbWFpbmluZz49MC4xKXsKICAgICAgdmFyIGRhc2hMZW5ndGggPSBkYXNoQXJyYXlbZGFzaEluZGV4KyslZGFzaENvdW50XTsKICAgICAgaWYgKGRhc2hMZW5ndGggPiBkaXN0UmVtYWluaW5nKSBkYXNoTGVuZ3RoID0gZGlzdFJlbWFpbmluZzsKICAgICAgdmFyIHhTdGVwID0gTWF0aC5zcXJ0KCBkYXNoTGVuZ3RoKmRhc2hMZW5ndGggLyAoMSArIHNsb3BlKnNsb3BlKSApOwogICAgICBpZiAoZHg8MCkgeFN0ZXAgPSAteFN0ZXA7CiAgICAgIHggKz0geFN0ZXAKICAgICAgeSArPSBzbG9wZSp4U3RlcDsKICAgICAgY2FudmFzW2RyYXcgPyAnbGluZVRvJyA6ICdtb3ZlVG8nXSh4LHkpOwogICAgICBkaXN0UmVtYWluaW5nIC09IGRhc2hMZW5ndGg7CiAgICAgIGRyYXcgPSAhZHJhdzsKICAgIH0KICAgIGNhbnZhcy5zdHJva2UoKTsKICB9LAogIAogIHNldEZvbnRTaXplOiBmdW5jdGlvbihjYW52YXMsIHNpemUpIHsKICAgIHZhciBjRm9udCA9IGNhbnZhcy5mb250OwogICAgdmFyIHBhcnRzID0gY0ZvbnQuc3BsaXQoJyAnKTsKICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpCiAgICAgIGNhbnZhcy5mb250ID0gc2l6ZSArICdweCAnICsgcGFydHNbMV07CiAgICBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpCiAgICAgIGNhbnZhcy5mb250ID0gcGFydHNbMF0gKyAnICcgKyBzaXplICsgJ3B4ICcgKyBwYXJ0c1syXTsKICB9LAogIAogIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIGEgR0VUIHZhcmlhYmxlCiAgcXVlcnlWYXI6IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHJldHVybiBkZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLnNlYXJjaC5yZXBsYWNlKAogICAgICBuZXcgUmVnRXhwKCJeKD86LipbJlxcP10iICsKICAgICAgICAgICAgICAgICBlbmNvZGVVUkkobmFtZSkucmVwbGFjZSgvW1wuXCtcKl0vZywgIlxcJCYiKSArCiAgICAgICAgICAgICAgICAgIig/OlxcPShbXiZdKikpPyk/LiokIiwgImkiKSwKICAgICAgIiQxIikpOwogIH0sCiAgCiAgLy8gV2UgZGVhbCBleGNsdXNpdmVseSBpbiBVVEMgZGF0ZXMgd2l0aGluIFIsIGhvd2V2ZXIgZHlncmFwaHMgZGVhbHMgCiAgLy8gZXhjbHVzaXZlbHkgaW4gdGhlIGxvY2FsIHRpbWUgem9uZS4gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBwbG90IGRhdGUKICAvLyBsYWJlbHMgdGhhdCBtYWtlIHNlbnNlIHRvIHRoZSB1c2VyIHdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBkYXlzLAogIC8vIG1vbnRocyBvciB5ZWFycyB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIFVUQyBkYXRlIHZhbHVlIHRvIGEgbG9jYWwgdGltZQogIC8vIHZhbHVlIHRoYXQgImxvb2tzIGxpa2UiIHRoZSBlcXVpdmlsYW50IFVUQyB2YWx1ZS4gVG8gZG8gdGhpcyB3ZSBhZGQgdGhlCiAgLy8gdGltZXpvbmUgb2Zmc2V0IHRvIHRoZSBVVEMgZGF0ZS4KICAvLyBEb24ndCB1c2UgaW4gY2FzZSBvZiBmaXhlZHR6CiAgbm9ybWFsaXplRGF0ZVZhbHVlOiBmdW5jdGlvbihzY2FsZSwgdmFsdWUsIGZpeGVkdHopIHsKICAgIHZhciBkYXRlID0gbmV3IERhdGUodmFsdWUpOyAKICAgIGlmIChzY2FsZSAhPSAibWludXRlIiAmJiBzY2FsZSAhPSAiaG91cmx5IiAmJiBzY2FsZSAhPSAic2Vjb25kcyIgJiYgIWZpeGVkdHopIHsKICAgICAgdmFyIGxvY2FsQXNVVEMgPSBkYXRlLmdldFRpbWUoKSArIChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCk7CiAgICAgIGRhdGUgPSBuZXcgRGF0ZShsb2NhbEFzVVRDKTsKICAgIH0KICAgIHJldHVybiBkYXRlOwogIH0KICAKfSk7Cgo="></script>
</head>
<body style="background-color:white;">
<div id="htmlwidget_container">
<div id="htmlwidget-4535" style="width:960px;height:500px;" class="dygraphs"></div>
</div>
<script type="application/json" data-for="htmlwidget-4535">{"x":{"attrs":{"title":"State Gun Purchases","labels":["month","month","AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL","GA","HI","IA","ID","IL","IN","KS","KY","LA","MA","MD","ME","MI","MN","MO","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY","NA"],"legend":"auto","retainDateWindow":false,"axes":{"x":{"pixelsPerLabel":60,"drawAxis":true},"y":{"drawAxis":true}},"stackedGraph":false,"fillGraph":false,"fillAlpha":0.15,"stepPlot":false,"drawPoints":false,"pointSize":1,"drawGapEdgePoints":false,"connectSeparatedPoints":false,"strokeWidth":1,"strokeBorderColor":"white","colors":["black"],"colorValue":0.5,"colorSaturation":1,"includeZero":false,"drawAxesAtZero":false,"logscale":false,"axisTickSize":3,"axisLineColor":"black","axisLineWidth":0.3,"axisLabelColor":"black","axisLabelFontSize":14,"axisLabelWidth":60,"drawGrid":true,"gridLineWidth":0.3,"rightGap":5,"digitsAfterDecimal":2,"labelsKMB":false,"labelsKMG2":false,"labelsUTC":false,"maxNumberWidth":6,"animatedZooms":false,"highlightCircleSize":0,"highlightSeriesBackgroundAlpha":0.2,"highlightSeriesOpts":{"strokeWidth":3,"highlightCircleSize":5},"hideOverlayOnMouseOut":false},"scale":"monthly","annotations":[],"shadings":[],"events":[],"format":"date","data":[["2013-01-01T00:00:00Z","2013-02-01T00:00:00Z","2013-03-01T00:00:00Z","2013-04-01T00:00:00Z","2013-05-01T00:00:00Z","2013-06-01T00:00:00Z","2013-07-01T00:00:00Z","2013-08-01T00:00:00Z","2013-09-01T00:00:00Z","2013-10-01T00:00:00Z","2013-11-01T00:00:00Z","2013-12-01T00:00:00Z","2014-01-01T00:00:00Z","2014-02-01T00:00:00Z","2014-03-01T00:00:00Z","2014-04-01T00:00:00Z","2014-05-01T00:00:00Z","2014-06-01T00:00:00Z","2014-07-01T00:00:00Z","2014-08-01T00:00:00Z","2014-09-01T00:00:00Z","2014-10-01T00:00:00Z","2014-11-01T00:00:00Z","2014-12-01T00:00:00Z","2015-01-01T00:00:00Z","2015-02-01T00:00:00Z","2015-03-01T00:00:00Z","2015-04-01T00:00:00Z","2015-05-01T00:00:00Z","2015-06-01T00:00:00Z","2015-07-01T00:00:00Z","2015-08-01T00:00:00Z","2015-09-01T00:00:00Z","2015-10-01T00:00:00Z","2015-11-01T00:00:00Z","2015-12-01T00:00:00Z","2016-01-01T00:00:00Z","2016-02-01T00:00:00Z"],["2013-01","2013-02","2013-03","2013-04","2013-05","2013-06","2013-07","2013-08","2013-09","2013-10","2013-11","2013-12","2014-01","2014-02","2014-03","2014-04","2014-05","2014-06","2014-07","2014-08","2014-09","2014-10","2014-11","2014-12","2015-01","2015-02","2015-03","2015-04","2015-05","2015-06","2015-07","2015-08","2015-09","2015-10","2015-11","2015-12","2016-01","2016-02"],[" 9975"," 9397"," 9047"," 8758"," 7529"," 6077"," 5889"," 7545"," 6047"," 8322"," 6868"," 7951"," 4951"," 6353"," 7271"," 8305"," 7166"," 6005"," 6035"," 7816"," 6625"," 9803"," 7851"," 9442"," 5348"," 6731"," 7223"," 7030"," 6168"," 5830"," 6029"," 6976"," 6195"," 9941"," 7095","11055"," 6085"," 6779"],[" 55210"," 52678"," 45144"," 33215"," 32005"," 27990"," 33290"," 49978"," 46263"," 51520"," 59213"," 77374"," 52138"," 63947"," 57656"," 46332"," 43111"," 41709"," 43600"," 45465"," 45081"," 50068"," 56324"," 75874"," 51119"," 62220"," 57152"," 46971"," 45128"," 45952"," 56762"," 62770"," 56228"," 61156"," 71137","120914"," 73218"," 77411"],["29607","33226","28004","22062","18509","17280","22815","22401","16195","19661","24393","25583","17158","24599","20173","16546","17070","14177","13484","15895","17053","23097","25577","29453","18184","24042","20397","17135","16258","15372","17694","21087","21834","23409","25048","36886","20437","27506"],["41443","38022","36946","32444","27145","25994","25712","29065","22904","24148","26839","32374","24458","29657","28307","25939","24566","22049","21193","26519","23538","25181","26203","33062","24620","30563","28402","24762","24503","22999","23779","25003","25464","26501","27087","47759","31910","35307"],["133187","108666","117106","110149","112464","109153","100114","111132","104067","114595","109140","138522","100054","111341","137660","134448","120661","102639","104309","119570","118856","128439","132469","164170","113292","113789","199833","114686","119574","112704","140365","125122","125441","163211","180116","252946","220912","214844"],["53121","55170","58007","43675","39181","40488","42207","35642","31620","34371","37908","43268","33328","36936","38547","34615","31697","26802","29247","32230","30504","35546","36523","47309","33007","37520","37740","34688","33062","31777","31280","36156","34229","37785","42271","64547","48214","47302"],["31886","24128","31213","29703","22706","22597","22598","23489","21666","20189","22530","21633","28542","29640","36553","20715","14437","13270","12620","16479","22160","24547","23451","27883","24791","24291","30302","26677","24571","24605","22195","21514","21775","23918","26438","36673","31712","32110"],["59","62","52","48","40","26","32","35","36","37","35","35","52","28","48","36","31","23","49","47","48","52","45","53","61","53","68","51","53","49","64","67","41","76","64","95","82","95"],["5055","4235","4250","3665","2992","2447","2282","2526","2515","2989","3354","3752","2486","3207","3534","2822","3896","2928","2960","3415","3289","3802","4764","5847","4133","4137","4610","3665","3683","3332","3275","3459","3360","4052","5040","7670","4886","5173"],["117696"," 99785"," 86541","102757"," 90077"," 76142"," 78121"," 81138"," 73216"," 79284"," 86342","102760"," 82342","100876","104835"," 94323"," 78127"," 70597"," 70230"," 75868"," 77573"," 83962"," 87931","107882"," 87895","103809"," 93683"," 81456"," 77601"," 79101"," 83877"," 87429"," 85246"," 94518","103532","168935","125935","132010"],["70862","67907","53457","39865","32984","28248","31011","34288","32309","38032","43059","55863","36627","50459","45841","36533","33247","30386","32987","35344","35423","43186","44325","60222","43248","57432","48200","35901","32956","34674","39608","40519","41685","45420","50795","96508","62707","66777"],["2260","1803","1564","1753","1322","1146","1260","1283","1196","1325","1103","1401","1337","1222","1333","1597","1155","1210","1291","1130","1153","1330","1078","1389","1188","1193","1344","1329","1145","1213","1157","1175","1270","1380","1252","1644","1383","1424"],["24157","20309","19176","15734"," 9708"," 8336"," 6772"," 8566","10873","11717","12076","12638","13003","13167","13686","10404"," 8165"," 8569"," 7575"," 7923"," 8494","10795","10906","14335","12562","16457","14948","11113"," 7597"," 7359"," 8356"," 8592"," 9865","10725","13794","25941","26714","23728"],["17708","17947","15954","13075","10133"," 8717"," 8460"," 9967","10165","10694","10703","13971"," 8532","11822","14322","10422"," 9289"," 9745"," 8251","10295","11211","11973","10932","14948"," 9858","12820","12234","10686"," 9975"," 9373"," 8675"," 9792","11078","11986","11925","18544","13197","15520"],["149608","127615","137812","132255","109338","105012"," 82699"," 85074"," 67839","101416"," 90868"," 91077","121288","115903","145597","105924"," 92638","112407"," 86596"," 91721","117143","103053","104606","147220"," 96712"," 86317"," 96770","118541"," 76538"," 80431"," 95297"," 94314"," 94476"," 95886","129861","182255","189400","169908"],[" 61855"," 57638"," 57961"," 51393"," 39560"," 39636"," 51081"," 49336"," 40129"," 43650"," 51526"," 53359"," 38520"," 51976"," 52880"," 42399"," 36151"," 30807"," 31816"," 37077"," 34547"," 80707","136175"," 74495"," 67533"," 84043"," 83305"," 67791"," 64608"," 62755"," 52154"," 66212"," 83928","100220","130333","214035","230892","221556"],["29270","24839","22741","21146","19099","13084","14721","14753","13318","15038","18670","21426","14248","17798","16410","13161","10895","10053","10381","11796","12558","14601","18147","22119","15166","18262","16337","14044","12249","10463","12248","13366","12731","14469","18433","28091","19443","19817"],["238510","247260","243253"," 39190"," 25271"," 29195"," 29719"," 27296"," 54426","204305","208696","231210","258471","259837","280948","274155","230610","214382","248979","232853"," 80383"," 31756"," 84113","295697","320778","198493","281518","253890","271614","242027","220018","286463","262693","276162","295891","308824","302383","266913"],["42313","35129","30893","24525","21920","18953","19777","25224","29508","28194","33765","42824","22584","28120","25477","19656","19085","18906","17996","24409","31703","29220","33557","44644","24516","33759","26788","21000","20941","21042","23822","30880","39053","33300","37752","59760","32192","32939"],["27785","21491","25220","22616","20226","18481","20775","21380","18583","19891","18506","16407","17908","16662","20176","16097","14087","13474","12638","13949","12394","14369","13258","14332","13112","11039","16296","14211","11907","11383","11898","12792","12092","13947","15885","22723","20208","17835"],["18392","16241","16873","15618","14340","12702","12248","14929","49644","20526","18413","21256","21715","18999","17071","10548"," 7913"," 7320"," 6878"," 8265"," 8480","10073","12483","12462"," 9311"," 9092","10656","10464"," 8105"," 8826"," 8595"," 8606"," 8912","11832","13463","17832","13321","14735"],["10538"," 9029","10320"," 8888"," 6442"," 5620"," 5492"," 6806"," 8102"," 9707"," 8004"," 7812"," 5673"," 7101"," 7591"," 6890"," 5674"," 4783"," 4923"," 6313"," 7667","10133"," 7347"," 8990"," 5423"," 6166"," 7438"," 6608"," 5860"," 6151"," 6549"," 7283"," 8648","11245"," 9297","14076"," 8844"," 9868"],["60852","54680","57686","49219","34050","29521","29608","34265","36135","40320","39996","37647","29623","35449","42636","36618","31109","28148","29119","32189","37179","40169","39561","42291","33596","38502","43233","36840","32961","30723","32153","33600","48331","43822","50278","76882","56723","61421"],["64272","55260","57031","52210","40424","29559","30700","35738","40431","43178","38292","38679","34528","40503","50582","46067","34462","35400","33483","37674","41988","45025","38258","43152","37824","40699","51987","44682","37779","33553","31732","39036","43688","50060","44023","64181","50842","50144"],["71515","65205","62321","47963","39002","32677","32926","38352","35901","42480","47444","51223","36903","48674","46051","38283","31691","30079","30494","40886","39077","50021","60330","64574","47271","55680","52566","42187","37565","37010","37539","40259","40511","49890","55031","89366","61257","67682"],["26380","26649","21207","15363","13418","11605","12768","16821","14804","18028","25301","29367","14902","21805","17334","13044","12506","11455","11995","15732","20332","19086","24074","32564","17119","23970","18635","14292","13803","13111","16575","18376","23398","20862","27504","44727","21330","28656"],["15217","14677","13783","11764"," 9873"," 8571"," 8719","10683","10194","12038","10548","11763"," 8273","10352","11045","10056"," 8930"," 8454"," 7798"," 9986","10880","12833","10052","13177"," 8234","11027","10863"," 9473"," 9364"," 8529"," 8713","10130","11302","12988","10415","16667","10722","12644"],[" 70301"," 72694"," 58353"," 46729"," 38695"," 32934"," 33798"," 36326"," 34609"," 40850"," 50272"," 59061"," 41804","224667","541978"," 59495"," 34589"," 32577"," 31117"," 35184"," 35405"," 43204"," 45758"," 56571"," 43199"," 48473"," 45196"," 37520"," 32357"," 33889"," 37651"," 39565"," 42348"," 46020"," 49217"," 76441"," 51646"," 58096"],["9686","8362","8143","7678","6284","5016","5143","5641","6707","8511","7692","6949","5594","6472","6329","6330","5216","4224","4382","5239","5914","7836","6217","6795","5512","5512","6517","5225","4683","4481","4593","5148","5619","7547","6288","8304","5877","5799"],["14751"," 9960","11052"," 8310"," 5806"," 4503"," 4323"," 5411"," 5387"," 6517"," 6868"," 8665"," 6115"," 6384"," 6437"," 5240"," 4074"," 3550"," 3704"," 4763"," 5577"," 6735"," 7072"," 8917"," 6241"," 6715"," 6796"," 5325"," 4500"," 4369"," 4596"," 5418"," 5433"," 6880"," 8299","14768","11116"," 8576"],["20513","14988","15881","14365","11780"," 8975"," 8707"," 9645","10164","11318","10397","10993"," 9884","10204","12519","11592","10119"," 8534"," 8374"," 9688"," 9668","11633","10215","12247"," 9834"," 9085","11780","10849","10564"," 9881"," 9404","10185","10094","11664","12850","20626","16887","14577"],["11110"," 8972"," 9843"," 8977","12656","12104"," 9963"," 9865"," 8091"," 9341","10031"," 9118"," 7954"," 7762"," 9726"," 8472"," 7908"," 6649"," 6792"," 6828"," 6470"," 7435"," 7612"," 8712"," 7144"," 7229"," 8529"," 7594"," 6704"," 7007"," 6588"," 6537"," 6056"," 7315"," 8313","11018"," 8683"," 9811"],["16998","17202","16606","12995","11936"," 9948","10135","10939","10018","12018","12642","14896","10183","13859","13550","10620","10235"," 9546"," 9168","10816","10973","12641","12308","15881","10614","13832","13587","11299","11021"," 9969","10404","11179","11570","12381","12721","19335","12577","16662"],["18361","17065","15623","14225","11297"," 9962"," 8915"," 9540"," 8704"," 9800","10503","12897"," 9387","11879","11769"," 9819"," 8950"," 9000"," 8108"," 8780"," 8630"," 8873"," 8950","12590"," 9482","11626","11192"," 9830"," 9959"," 9186"," 8829"," 8818"," 9821"," 9456","10632","18649","12291","14342"],["43752","32249","35013","30999","23167","21003","20065","23867","27247","30402","32643","32657","25551","27317","33819","43433","25889","23810","27126","27139","28575","34659","33260","34849","26506","25920","29889","26818","21977","22717","21821","23978","28204","33282","36421","48515","34071","34195"],[" 83996"," 79762"," 76031"," 57639"," 42751"," 39150"," 39440"," 41954"," 42579"," 48416"," 61911"," 67301"," 40864"," 59527"," 59244"," 48767"," 40586"," 35267"," 37889"," 42044"," 42944"," 53277"," 64249"," 71731"," 47676"," 59899"," 62389"," 59965"," 49428"," 49297"," 49952"," 51999"," 53928"," 62456"," 81616","119897"," 76218"," 90222"],["48246","43984","37224","30530","24269","21661","22622","26282","23496","27268","35876","39176","26608","33901","30087","26310","22251","21797","21917","25875","25886","30881","37671","45311","28606","34307","29926","26152","23210","21793","23594","26376","25154","28582","35457","56119","34889","37589"],["33335","30190","28021","23657","18777","17274","15846","18504","19746","19484","22895","26573","19504","23197","24346","19475","17875","16461","14896","16665","19544","20667","22003","28411","19429","24213","23895","20563","19292","17765","18003","19393","21650","25405","25453","41065","26378","28869"],["135603","113841","114209"," 90995"," 70882"," 61992"," 60876"," 70687"," 70015"," 79205"," 88985"," 87441"," 69963"," 76916"," 93402"," 74553"," 63261"," 56296"," 59582"," 67743"," 71450"," 83119"," 87572"," 95384"," 73321"," 81379"," 92329"," 74820"," 62676"," 64122"," 65250"," 69162"," 70156"," 82552","103836","153826","102170","104116"],["3792","2624","3088","2775","2109","1697","1561","1642","1622","1862","1925","1969","1646","1897","2208","1667","1471","1251","1374","1617","1570","1889","1822","1988","1722","1777","1953","1710","1543","1512","1461","1477","1566","1944","2101","3363","2617","2392"],["36801","42168","35234","27599","23713","21463","23572","25637","20573","21704","25922","31309","22356","28440","28436","21621","21331","19781","19093","22184","20378","24311","26987","34846","23923","31543","26546","22801","20254","20763","25017","25047","24395","26030","32064","48614","31396","39376"],["11242","10060"," 9506"," 7058"," 5772"," 4820"," 4719"," 5998"," 6812"," 8534"," 8416"," 9118"," 6101"," 7897"," 7538"," 6054"," 5167"," 4781"," 4984"," 6261"," 7166"," 9445"," 8620"," 9645"," 6709"," 9065"," 8923"," 6951"," 6436"," 5645"," 5914"," 7369"," 7949","10920"," 9727","14660","10220","10732"],[" 69456"," 70784"," 61462"," 45767"," 42521"," 36424"," 34531"," 39133"," 40207"," 42522"," 53278"," 64784"," 45597"," 55684"," 43344"," 36861"," 33567"," 32665"," 34494"," 39800"," 38227"," 44933"," 55288"," 72934"," 57536"," 53761"," 40064"," 44972"," 40597"," 42558"," 57873"," 49128"," 52313"," 51134"," 63670","100586"," 62789"," 68503"],["186890","189806","163594","131815","111668"," 97420","100819","115380","111067","124834","133911","166074","130524","147793","130310","101103"," 97814"," 91133"," 94876","115497","114900","122547","138837","180658","115315","140229","129368","106032","111012","106461","106013","122233","122503","126327","146982","241791","164088","192417"],["27938","28356","32240","30717","34615","27453","28963","30966","19074","17812","21492","24978","21908","21548","22924","29587","26525","23271","19385","19335","17531","16476","19211","26111","19394","20627","23422","20361","18544","20684","17259","19717","22343","19046","21772","31645","19968","22999"],["60837","57124","52284","39271","31108","29376","28960","33074","33507","36623","44918","51344","31647","42073","40700","31037","27385","26351","28031","30501","31726","36419","43955","49939","36685","40786","39427","31657","28447","27904","32419","32147","34030","38959","48010","72526","44181","47955"],["4195","4254","4099","3608","2228","1957","1915","2306","2742","2951","3007","2873","2138","3132","3305","3114","2100","1736","1868","2280","2743","3101","2833","3152","2373","3220","3115","3081","2172","2135","2219","2466","2681","3259","3136","4731","3451","4173"],["73547","66081","60588","49100","40430","35567","33115","37388","36213","41311","40784","46998","40612","44399","45491","46446","37636","32647","31164","32674","35256","41682","44282","49826","38018","43129","43542","38008","33943","32783","34177","36031","40441","45061","43989","73158","58050","56043"],["56977","50656","50492","42236","28975","20416","22108","27420","32039","35951","35704","31714","23568","31698","37199","32375","22493","19302","19541","24467","27754","33262","31027","31622","24587","32541","37433","31164","24362","22715","24350","28396","30630","36111","38541","52450","39561","42855"],["26793","29414","25848","18761","15908","13796","13839","16506","17038","19865","24919","26265","15350","23569","20942","16702","14682","12646","13298","15799","16952","20922","24050","26935","17624","24248","25804","18739","15288","14695","15607","16720","17801","21388","25063","36037","18985","27216"],["7861","7556","7534","6084","5581","4854","4299","4876","5018","4629","5494","6885","4359","5677","5699","5508","5187","4644","4205","4637","5296","5421","5399","7031","4413","5539","5459","4697","4612","4388","4371","4839","4968","5166","5017","8870","5676","5703"],["379.00","340.25","396.50","378.00","441.00","448.75","385.25","442.25","415.50","429.00","420.50","385.50","426.00","413.25","436.00","383.75","409.50","359.75","352.50","421.25","402.75","425.75","406.25","428.50","367.25","386.75","409.00","357.75","436.00","447.25","422.00","401.25","404.00","400.50","380.50","417.25","353.00","336.25"]],"fixedtz":false,"tzone":"UTC","css":".dygraph-legend > span {display:none;}.dygraph-legend > span.highlight { display: inline; }"},"evals":[]}</script>
<script type="application/htmlwidget-sizing" data-for="htmlwidget-4535">{"viewer":{"width":450,"height":350,"padding":5,"fill":false},"browser":{"width":960,"height":500,"padding":40,"fill":false}}</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment