1778692643
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A4a3d987222158eb4a2f0d314ea467598-73ab92198530ab43f302189e00cc13df
s:18248:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI1OiJBZGRDb25zb2xlQ29tbWFuZFBhc3MucGhwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MTp7czo0NjoiXFN5bWZvbnlcQ29tcG9uZW50XENvbnNvbGVcRGVwZW5kZW5jeUluamVjdGlvbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ2OiJcU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZVxEZXBlbmRlbmN5SW5qZWN0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6IkRlcGVuZGVuY3lJbmplY3Rpb24iO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo2ODoiXFN5bWZvbnlcQ29tcG9uZW50XENvbnNvbGVcRGVwZW5kZW5jeUluamVjdGlvblxBZGRDb25zb2xlQ29tbWFuZFBhc3MiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxNTp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MTp7czo2OToiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njk6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXENvbXBpbGVyUGFzc0ludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIxOiJDb21waWxlclBhc3NJbnRlcmZhY2UiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjE6e3M6Nzk6IlxTeW1mb255XENvbXBvbmVudFxDb25zb2xlXERlcGVuZGVuY3lJbmplY3Rpb25cQWRkQ29uc29sZUNvbW1hbmRQYXNzOjpwcm9jZXNzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU1OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb250YWluZXJCdWlsZGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTY6IkNvbnRhaW5lckJ1aWxkZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJjb250YWluZXIiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM1O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjExMjk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTMzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjUyMzU7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzk6IlxTeW1mb255XENvbXBvbmVudFxDb25zb2xlXERlcGVuZGVuY3lJbmplY3Rpb25cQWRkQ29uc29sZUNvbW1hbmRQYXNzOjpwcm9jZXNzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJwcm9jZXNzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MDoiIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ1OiJTeW1mb255XENvbXBvbmVudFxDb25zb2xlXERlcGVuZGVuY3lJbmplY3Rpb24iO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjEwOntzOjc6IkNvbW1hbmQiO3M6NDE6IlN5bWZvbnlcQ29tcG9uZW50XENvbnNvbGVcQ29tbWFuZFxDb21tYW5kIjtzOjExOiJMYXp5Q29tbWFuZCI7czo0NToiU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZVxDb21tYW5kXExhenlDb21tYW5kIjtzOjIyOiJDb250YWluZXJDb21tYW5kTG9hZGVyIjtzOjYyOiJTeW1mb255XENvbXBvbmVudFxDb25zb2xlXENvbW1hbmRMb2FkZXJcQ29udGFpbmVyQ29tbWFuZExvYWRlciI7czoyMjoiU2VydmljZUNsb3N1cmVBcmd1bWVudCI7czo2OToiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxBcmd1bWVudFxTZXJ2aWNlQ2xvc3VyZUFyZ3VtZW50IjtzOjIxOiJDb21waWxlclBhc3NJbnRlcmZhY2UiO3M6Njg6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlIjtzOjIxOiJTZXJ2aWNlTG9jYXRvclRhZ1Bhc3MiO3M6Njg6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcU2VydmljZUxvY2F0b3JUYWdQYXNzIjtzOjE2OiJDb250YWluZXJCdWlsZGVyIjtzOjU0OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbnRhaW5lckJ1aWxkZXIiO3M6MjQ6IkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiI7czo3MjoiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIjtzOjk6IlJlZmVyZW5jZSI7czo0NzoiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxSZWZlcmVuY2UiO3M6MTQ6IlR5cGVkUmVmZXJlbmNlIjtzOjUyOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXFR5cGVkUmVmZXJlbmNlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMzQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njg6IlxTeW1mb255XENvbXBvbmVudFxDb25zb2xlXERlcGVuZGVuY3lJbmplY3Rpb25cQWRkQ29uc29sZUNvbW1hbmRQYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjE6IkFkZENvbnNvbGVDb21tYW5kUGFzcyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6Mjc6IlJlZ2lzdGVycyBjb25zb2xlIGNvbW1hbmRzLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTY6Ikdyw6lnb2lyZSBQaW5lYXUiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MTg6Imx5cml4eEBseXJpeHguaW5mbyI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NTQ7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwByZWFkT25seSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiI3M2FiOTIxOTg1MzBhYjQzZjMwMjE4OWUwMGNjMTNkZiI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjY4OiJ2ZW5kb3Ivc3ltZm9ueS9jb25zb2xlL0RlcGVuZGVuY3lJbmplY3Rpb24vQWRkQ29uc29sZUNvbW1hbmRQYXNzLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NTIzOToiPD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxDb25zb2xlXERlcGVuZGVuY3lJbmplY3Rpb247Cgp1c2UgU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZVxDb21tYW5kXENvbW1hbmQ7CnVzZSBTeW1mb255XENvbXBvbmVudFxDb25zb2xlXENvbW1hbmRcTGF6eUNvbW1hbmQ7CnVzZSBTeW1mb255XENvbXBvbmVudFxDb25zb2xlXENvbW1hbmRMb2FkZXJcQ29udGFpbmVyQ29tbWFuZExvYWRlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQXJndW1lbnRcU2VydmljZUNsb3N1cmVBcmd1bWVudDsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcQ29tcGlsZXJQYXNzSW50ZXJmYWNlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxTZXJ2aWNlTG9jYXRvclRhZ1Bhc3M7CnVzZSBTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbnRhaW5lckJ1aWxkZXI7CnVzZSBTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXFJlZmVyZW5jZTsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cVHlwZWRSZWZlcmVuY2U7CgovKioKICogUmVnaXN0ZXJzIGNvbnNvbGUgY29tbWFuZHMuCiAqCiAqIEBhdXRob3IgR3LDqWdvaXJlIFBpbmVhdSA8bHlyaXh4QGx5cml4eC5pbmZvPgogKi8KY2xhc3MgQWRkQ29uc29sZUNvbW1hbmRQYXNzIGltcGxlbWVudHMgQ29tcGlsZXJQYXNzSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKENvbnRhaW5lckJ1aWxkZXIgJGNvbnRhaW5lcikKICAgIHsKICAgICAgICAkY29tbWFuZFNlcnZpY2VzID0gJGNvbnRhaW5lci0+ZmluZFRhZ2dlZFNlcnZpY2VJZHMoJ2NvbnNvbGUuY29tbWFuZCcsIHRydWUpOwogICAgICAgICRsYXp5Q29tbWFuZE1hcCA9IFtdOwogICAgICAgICRsYXp5Q29tbWFuZFJlZnMgPSBbXTsKICAgICAgICAkc2VydmljZUlkcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkY29tbWFuZFNlcnZpY2VzIGFzICRpZCA9PiAkdGFncykgewogICAgICAgICAgICAkZGVmaW5pdGlvbiA9ICRjb250YWluZXItPmdldERlZmluaXRpb24oJGlkKTsKICAgICAgICAgICAgJGRlZmluaXRpb24tPmFkZFRhZygnY29udGFpbmVyLm5vX3ByZWxvYWQnKTsKICAgICAgICAgICAgJGNsYXNzID0gJGNvbnRhaW5lci0+Z2V0UGFyYW1ldGVyQmFnKCktPnJlc29sdmVWYWx1ZSgkZGVmaW5pdGlvbi0+Z2V0Q2xhc3MoKSk7CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRhZ3NbMF1bJ2NvbW1hbmQnXSkpIHsKICAgICAgICAgICAgICAgICRhbGlhc2VzID0gJHRhZ3NbMF1bJ2NvbW1hbmQnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghJHIgPSAkY29udGFpbmVyLT5nZXRSZWZsZWN0aW9uQ2xhc3MoJGNsYXNzKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ0NsYXNzICIlcyIgdXNlZCBmb3Igc2VydmljZSAiJXMiIGNhbm5vdCBiZSBmb3VuZC4nLCAkY2xhc3MsICRpZCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkci0+aXNTdWJjbGFzc09mKENvbW1hbmQ6OmNsYXNzKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ1RoZSBzZXJ2aWNlICIlcyIgdGFnZ2VkICIlcyIgbXVzdCBiZSBhIHN1YmNsYXNzIG9mICIlcyIuJywgJGlkLCAnY29uc29sZS5jb21tYW5kJywgQ29tbWFuZDo6Y2xhc3MpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRhbGlhc2VzID0gc3RyX3JlcGxhY2UoJyUnLCAnJSUnLCAkY2xhc3M6OmdldERlZmF1bHROYW1lKCkgPz8gJycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYWxpYXNlcyA9IGV4cGxvZGUoJ3wnLCAkYWxpYXNlcyA/PyAnJyk7CiAgICAgICAgICAgICRjb21tYW5kTmFtZSA9IGFycmF5X3NoaWZ0KCRhbGlhc2VzKTsKCiAgICAgICAgICAgIGlmICgkaXNIaWRkZW4gPSAnJyA9PT0gJGNvbW1hbmROYW1lKSB7CiAgICAgICAgICAgICAgICAkY29tbWFuZE5hbWUgPSBhcnJheV9zaGlmdCgkYWxpYXNlcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChudWxsID09PSAkY29tbWFuZE5hbWUpIHsKICAgICAgICAgICAgICAgIGlmICghJGRlZmluaXRpb24tPmlzUHVibGljKCkgfHwgJGRlZmluaXRpb24tPmlzUHJpdmF0ZSgpIHx8ICRkZWZpbml0aW9uLT5oYXNUYWcoJ2NvbnRhaW5lci5wcml2YXRlJykpIHsKICAgICAgICAgICAgICAgICAgICAkY29tbWFuZElkID0gJ2NvbnNvbGUuY29tbWFuZC5wdWJsaWNfYWxpYXMuJy4kaWQ7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci0+c2V0QWxpYXMoJGNvbW1hbmRJZCwgJGlkKS0+c2V0UHVibGljKHRydWUpOwogICAgICAgICAgICAgICAgICAgICRpZCA9ICRjb21tYW5kSWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2VydmljZUlkc1tdID0gJGlkOwoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVzY3JpcHRpb24gPSAkdGFnc1swXVsnZGVzY3JpcHRpb24nXSA/PyBudWxsOwoKICAgICAgICAgICAgdW5zZXQoJHRhZ3NbMF0pOwogICAgICAgICAgICAkbGF6eUNvbW1hbmRNYXBbJGNvbW1hbmROYW1lXSA9ICRpZDsKICAgICAgICAgICAgJGxhenlDb21tYW5kUmVmc1skaWRdID0gbmV3IFR5cGVkUmVmZXJlbmNlKCRpZCwgJGNsYXNzKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRhbGlhc2VzIGFzICRhbGlhcykgewogICAgICAgICAgICAgICAgJGxhenlDb21tYW5kTWFwWyRhbGlhc10gPSAkaWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCR0YWdzIGFzICR0YWcpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGFnWydjb21tYW5kJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGFsaWFzZXNbXSA9ICR0YWdbJ2NvbW1hbmQnXTsKICAgICAgICAgICAgICAgICAgICAkbGF6eUNvbW1hbmRNYXBbJHRhZ1snY29tbWFuZCddXSA9ICRpZDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZGVzY3JpcHRpb24gPz89ICR0YWdbJ2Rlc2NyaXB0aW9uJ10gPz8gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRlZmluaXRpb24tPmFkZE1ldGhvZENhbGwoJ3NldE5hbWUnLCBbJGNvbW1hbmROYW1lXSk7CgogICAgICAgICAgICBpZiAoJGFsaWFzZXMpIHsKICAgICAgICAgICAgICAgICRkZWZpbml0aW9uLT5hZGRNZXRob2RDYWxsKCdzZXRBbGlhc2VzJywgWyRhbGlhc2VzXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaXNIaWRkZW4pIHsKICAgICAgICAgICAgICAgICRkZWZpbml0aW9uLT5hZGRNZXRob2RDYWxsKCdzZXRIaWRkZW4nLCBbdHJ1ZV0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISRkZXNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgaWYgKCEkciA9ICRjb250YWluZXItPmdldFJlZmxlY3Rpb25DbGFzcygkY2xhc3MpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignQ2xhc3MgIiVzIiB1c2VkIGZvciBzZXJ2aWNlICIlcyIgY2Fubm90IGJlIGZvdW5kLicsICRjbGFzcywgJGlkKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISRyLT5pc1N1YmNsYXNzT2YoQ29tbWFuZDo6Y2xhc3MpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIHNlcnZpY2UgIiVzIiB0YWdnZWQgIiVzIiBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgIiVzIi4nLCAkaWQsICdjb25zb2xlLmNvbW1hbmQnLCBDb21tYW5kOjpjbGFzcykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJyUnLCAnJSUnLCAkY2xhc3M6OmdldERlZmF1bHREZXNjcmlwdGlvbigpID8/ICcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRkZXNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgJGRlZmluaXRpb24tPmFkZE1ldGhvZENhbGwoJ3NldERlc2NyaXB0aW9uJywgWyRkZXNjcmlwdGlvbl0pOwoKICAgICAgICAgICAgICAgICRjb250YWluZXItPnJlZ2lzdGVyKCcuJy4kaWQuJy5sYXp5JywgTGF6eUNvbW1hbmQ6OmNsYXNzKQogICAgICAgICAgICAgICAgICAgIC0+c2V0QXJndW1lbnRzKFskY29tbWFuZE5hbWUsICRhbGlhc2VzLCAkZGVzY3JpcHRpb24sICRpc0hpZGRlbiwgbmV3IFNlcnZpY2VDbG9zdXJlQXJndW1lbnQoJGxhenlDb21tYW5kUmVmc1skaWRdKV0pOwoKICAgICAgICAgICAgICAgICRsYXp5Q29tbWFuZFJlZnNbJGlkXSA9IG5ldyBSZWZlcmVuY2UoJy4nLiRpZC4nLmxhenknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGNvbnRhaW5lcgogICAgICAgICAgICAtPnJlZ2lzdGVyKCdjb25zb2xlLmNvbW1hbmRfbG9hZGVyJywgQ29udGFpbmVyQ29tbWFuZExvYWRlcjo6Y2xhc3MpCiAgICAgICAgICAgIC0+c2V0UHVibGljKHRydWUpCiAgICAgICAgICAgIC0+YWRkVGFnKCdjb250YWluZXIubm9fcHJlbG9hZCcpCiAgICAgICAgICAgIC0+c2V0QXJndW1lbnRzKFtTZXJ2aWNlTG9jYXRvclRhZ1Bhc3M6OnJlZ2lzdGVyKCRjb250YWluZXIsICRsYXp5Q29tbWFuZFJlZnMpLCAkbGF6eUNvbW1hbmRNYXBdKTsKCiAgICAgICAgJGNvbnRhaW5lci0+c2V0UGFyYW1ldGVyKCdjb25zb2xlLmNvbW1hbmQuaWRzJywgJHNlcnZpY2VJZHMpOwogICAgfQp9CiI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";