1778692588
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A58c30b53d94338add297b7f62a86a9c6-ffebb3cc114bfced205c5891d5bda22a
s:14172:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI4OiJUYWJsZU9mQ29udGVudHNFeHRlbnNpb24ucGhwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MTp7czo0NDoiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxUYWJsZU9mQ29udGVudHMiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NDoiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxUYWJsZU9mQ29udGVudHMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToiVGFibGVPZkNvbnRlbnRzIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6Njk6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cVGFibGVPZkNvbnRlbnRzXFRhYmxlT2ZDb250ZW50c0V4dGVuc2lvbiI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YToxOntzOjU5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXENvbmZpZ3VyYWJsZUV4dGVuc2lvbkludGVyZmFjZSI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU5OiJcTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXENvbmZpZ3VyYWJsZUV4dGVuc2lvbkludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjMwOiJDb25maWd1cmFibGVFeHRlbnNpb25JbnRlcmZhY2UiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjI6e3M6ODg6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cVGFibGVPZkNvbnRlbnRzXFRhYmxlT2ZDb250ZW50c0V4dGVuc2lvbjo6Y29uZmlndXJlU2NoZW1hKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ0OiJcTGVhZ3VlXENvbmZpZ1xDb25maWd1cmF0aW9uQnVpbGRlckludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI5OiJDb25maWd1cmF0aW9uQnVpbGRlckludGVyZmFjZSI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjc6ImJ1aWxkZXIiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjk1Nzt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyMDI1O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODg6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cVGFibGVPZkNvbnRlbnRzXFRhYmxlT2ZDb250ZW50c0V4dGVuc2lvbjo6Y29uZmlndXJlU2NoZW1hKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToiY29uZmlndXJlU2NoZW1hIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6ODE6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cVGFibGVPZkNvbnRlbnRzXFRhYmxlT2ZDb250ZW50c0V4dGVuc2lvbjo6cmVnaXN0ZXIoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTg6IlxMZWFndWVcQ29tbW9uTWFya1xFbnZpcm9ubWVudFxFbnZpcm9ubWVudEJ1aWxkZXJJbnRlcmZhY2UiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyNzoiRW52aXJvbm1lbnRCdWlsZGVySW50ZXJmYWNlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTE6ImVudmlyb25tZW50IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0MTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyMDMyO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI5MzQ7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4MToiXExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxUYWJsZU9mQ29udGVudHNcVGFibGVPZkNvbnRlbnRzRXh0ZW5zaW9uOjpyZWdpc3RlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoicmVnaXN0ZXIiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Njk6IlxMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cVGFibGVPZkNvbnRlbnRzXFRhYmxlT2ZDb250ZW50c0V4dGVuc2lvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI0OiJUYWJsZU9mQ29udGVudHNFeHRlbnNpb24iO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MTtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiZmZlYmIzY2MxMTRiZmNlZDIwNWM1ODkxZDViZGEyMmEiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo4MzoidmVuZG9yL2xlYWd1ZS9jb21tb25tYXJrL3NyYy9FeHRlbnNpb24vVGFibGVPZkNvbnRlbnRzL1RhYmxlT2ZDb250ZW50c0V4dGVuc2lvbi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjI5Mzg6Ijw/cGhwCgpkZWNsYXJlKHN0cmljdF90eXBlcz0xKTsKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBsZWFndWUvY29tbW9ubWFyayBwYWNrYWdlLgogKgogKiAoYykgQ29saW4gTydEZWxsIDxjb2xpbm9kZWxsQGdtYWlsLmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxUYWJsZU9mQ29udGVudHM7Cgp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRW52aXJvbm1lbnRcRW52aXJvbm1lbnRCdWlsZGVySW50ZXJmYWNlOwp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRXZlbnRcRG9jdW1lbnRQYXJzZWRFdmVudDsKdXNlIExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxDb21tb25NYXJrXE5vZGVcQmxvY2tcTGlzdEJsb2NrOwp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXENvbW1vbk1hcmtcUmVuZGVyZXJcQmxvY2tcTGlzdEJsb2NrUmVuZGVyZXI7CnVzZSBMZWFndWVcQ29tbW9uTWFya1xFeHRlbnNpb25cQ29uZmlndXJhYmxlRXh0ZW5zaW9uSW50ZXJmYWNlOwp1c2UgTGVhZ3VlXENvbW1vbk1hcmtcRXh0ZW5zaW9uXFRhYmxlT2ZDb250ZW50c1xOb2RlXFRhYmxlT2ZDb250ZW50czsKdXNlIExlYWd1ZVxDb21tb25NYXJrXEV4dGVuc2lvblxUYWJsZU9mQ29udGVudHNcTm9kZVxUYWJsZU9mQ29udGVudHNQbGFjZWhvbGRlcjsKdXNlIExlYWd1ZVxDb25maWdcQ29uZmlndXJhdGlvbkJ1aWxkZXJJbnRlcmZhY2U7CnVzZSBOZXR0ZVxTY2hlbWFcRXhwZWN0OwoKZmluYWwgY2xhc3MgVGFibGVPZkNvbnRlbnRzRXh0ZW5zaW9uIGltcGxlbWVudHMgQ29uZmlndXJhYmxlRXh0ZW5zaW9uSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjb25maWd1cmVTY2hlbWEoQ29uZmlndXJhdGlvbkJ1aWxkZXJJbnRlcmZhY2UgJGJ1aWxkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJGJ1aWxkZXItPmFkZFNjaGVtYSgndGFibGVfb2ZfY29udGVudHMnLCBFeHBlY3Q6OnN0cnVjdHVyZShbCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gRXhwZWN0OjphbnlPZihUYWJsZU9mQ29udGVudHNCdWlsZGVyOjpQT1NJVElPTl9CRUZPUkVfSEVBRElOR1MsIFRhYmxlT2ZDb250ZW50c0J1aWxkZXI6OlBPU0lUSU9OX1BMQUNFSE9MREVSLCBUYWJsZU9mQ29udGVudHNCdWlsZGVyOjpQT1NJVElPTl9UT1ApLT5kZWZhdWx0KFRhYmxlT2ZDb250ZW50c0J1aWxkZXI6OlBPU0lUSU9OX1RPUCksCiAgICAgICAgICAgICdzdHlsZScgPT4gRXhwZWN0OjphbnlPZihMaXN0QmxvY2s6OlRZUEVfQlVMTEVULCBMaXN0QmxvY2s6OlRZUEVfT1JERVJFRCktPmRlZmF1bHQoTGlzdEJsb2NrOjpUWVBFX0JVTExFVCksCiAgICAgICAgICAgICdub3JtYWxpemUnID0+IEV4cGVjdDo6YW55T2YoVGFibGVPZkNvbnRlbnRzR2VuZXJhdG9yOjpOT1JNQUxJWkVfUkVMQVRJVkUsIFRhYmxlT2ZDb250ZW50c0dlbmVyYXRvcjo6Tk9STUFMSVpFX0ZMQVQsIFRhYmxlT2ZDb250ZW50c0dlbmVyYXRvcjo6Tk9STUFMSVpFX0RJU0FCTEVEKS0+ZGVmYXVsdChUYWJsZU9mQ29udGVudHNHZW5lcmF0b3I6Ok5PUk1BTElaRV9SRUxBVElWRSksCiAgICAgICAgICAgICdtaW5faGVhZGluZ19sZXZlbCcgPT4gRXhwZWN0OjppbnQoKS0+bWluKDEpLT5tYXgoNiktPmRlZmF1bHQoMSksCiAgICAgICAgICAgICdtYXhfaGVhZGluZ19sZXZlbCcgPT4gRXhwZWN0OjppbnQoKS0+bWluKDEpLT5tYXgoNiktPmRlZmF1bHQoNiksCiAgICAgICAgICAgICdodG1sX2NsYXNzJyA9PiBFeHBlY3Q6OnN0cmluZygpLT5kZWZhdWx0KCd0YWJsZS1vZi1jb250ZW50cycpLAogICAgICAgICAgICAncGxhY2Vob2xkZXInID0+IEV4cGVjdDo6YW55T2YoRXhwZWN0OjpzdHJpbmcoKSwgRXhwZWN0OjpudWxsKCkpLT5kZWZhdWx0KG51bGwpLAogICAgICAgIF0pKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoRW52aXJvbm1lbnRCdWlsZGVySW50ZXJmYWNlICRlbnZpcm9ubWVudCk6IHZvaWQKICAgIHsKICAgICAgICAkZW52aXJvbm1lbnQtPmFkZFJlbmRlcmVyKFRhYmxlT2ZDb250ZW50czo6Y2xhc3MsIG5ldyBUYWJsZU9mQ29udGVudHNSZW5kZXJlcihuZXcgTGlzdEJsb2NrUmVuZGVyZXIoKSkpOwogICAgICAgICRlbnZpcm9ubWVudC0+YWRkRXZlbnRMaXN0ZW5lcihEb2N1bWVudFBhcnNlZEV2ZW50OjpjbGFzcywgW25ldyBUYWJsZU9mQ29udGVudHNCdWlsZGVyKCksICdvbkRvY3VtZW50UGFyc2VkJ10sIC0xNTApOwoKICAgICAgICAvLyBwaHBjczppZ25vcmUgU2xldm9tYXRDb2RpbmdTdGFuZGFyZC5Db250cm9sU3RydWN0dXJlcy5FYXJseUV4aXQuRWFybHlFeGl0Tm90VXNlZAogICAgICAgIGlmICgkZW52aXJvbm1lbnQtPmdldENvbmZpZ3VyYXRpb24oKS0+Z2V0KCd0YWJsZV9vZl9jb250ZW50cy9wb3NpdGlvbicpID09PSBUYWJsZU9mQ29udGVudHNCdWlsZGVyOjpQT1NJVElPTl9QTEFDRUhPTERFUikgewogICAgICAgICAgICAkZW52aXJvbm1lbnQtPmFkZEJsb2NrU3RhcnRQYXJzZXIoVGFibGVPZkNvbnRlbnRzUGxhY2Vob2xkZXJQYXJzZXI6OmJsb2NrU3RhcnRQYXJzZXIoKSwgMjAwKTsKICAgICAgICAgICAgLy8gSWYgYSBwbGFjZWhvbGRlciBjYW5ub3QgYmUgcmVwbGFjZWQgd2l0aCBhIFRPQyBlbGVtZW50IHRoaXMgcmVuZGVyZXIgd2lsbCBlbnN1cmUgdGhlIHBhcnNlciB3b24ndCBlcnJvciBvdXQKICAgICAgICAgICAgJGVudmlyb25tZW50LT5hZGRSZW5kZXJlcihUYWJsZU9mQ29udGVudHNQbGFjZWhvbGRlcjo6Y2xhc3MsIG5ldyBUYWJsZU9mQ29udGVudHNQbGFjZWhvbGRlclJlbmRlcmVyKCkpOwogICAgICAgIH0KICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";