1778692624
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Aaff8eef41e03f1950e7b8497ef0bb361-3037d1499ae88f661f1c4d7bedaab593
s:35164:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI0OiJOYW1lc3BhY2VUcmVlQnVpbGRlci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjQ1OiJccGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3MiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NToiXHBocERvY3VtZW50b3JcQ29tcGlsZXJcQXBpRG9jdW1lbnRhdGlvblxQYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiUGFzcyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjY2OiJccGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3NcTmFtZXNwYWNlVHJlZUJ1aWxkZXIiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxNTp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0aG9kcyI7YTozOntzOjc3OiJccGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3NcTmFtZXNwYWNlVHJlZUJ1aWxkZXI6OnByb2Nlc3MoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDI6IlxwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcQXBpU2V0RGVzY3JpcHRvciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJBcGlTZXREZXNjcmlwdG9yIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6Nzoic3ViamVjdCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTUwNzt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyODYxO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQyOiJccGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXEFwaVNldERlc2NyaXB0b3IiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNjoiQXBpU2V0RGVzY3JpcHRvciI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3NzoiXHBocERvY3VtZW50b3JcQ29tcGlsZXJcQXBpRG9jdW1lbnRhdGlvblxQYXNzXE5hbWVzcGFjZVRyZWVCdWlsZGVyOjpwcm9jZXNzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJwcm9jZXNzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjk6InByb3RlY3RlZCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6OTg6IlxwaHBEb2N1bWVudG9yXENvbXBpbGVyXEFwaURvY3VtZW50YXRpb25cUGFzc1xOYW1lc3BhY2VUcmVlQnVpbGRlcjo6YWRkRWxlbWVudHNPZlR5cGVUb05hbWVzcGFjZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mzp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MjoiXHBocERvY3VtZW50b3JcRGVzY3JpcHRvclxEb2N1bWVudGF0aW9uU2V0RGVzY3JpcHRvciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI2OiJEb2N1bWVudGF0aW9uU2V0RGVzY3JpcHRvciI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjE2OiJkb2N1bWVudGF0aW9uU2V0IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJlbGVtZW50cyI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo0OiJ0eXBlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo5MTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNjI1O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEzMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo1Mzc5O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTg6IlxwaHBEb2N1bWVudG9yXENvbXBpbGVyXEFwaURvY3VtZW50YXRpb25cUGFzc1xOYW1lc3BhY2VUcmVlQnVpbGRlcjo6YWRkRWxlbWVudHNPZlR5cGVUb05hbWVzcGFjZSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6Mjg6ImFkZEVsZW1lbnRzT2ZUeXBlVG9OYW1lc3BhY2UiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo4NToiQWRkcyB0aGUgZ2l2ZW4gZWxlbWVudHMgb2YgYSBzcGVjaWZpYyB0eXBlIHRvIHRoZWlyIHJlc3BlY3RpdmUgTmFtZXNwYWNlIERlc2NyaXB0b3JzLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoxODE6IlRoaXMgbWV0aG9kIHdpbGwgYXNzaWduIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgbmFtZXNwYWNlIGFzIHJlZ2lzdGVyZWQgaW4gdGhlIG5hbWVzcGFjZSBmaWVsZCBvZiB0aGF0CmVsZW1lbnQuIElmIGEgbmFtZXNwYWNlIGRvZXMgbm90IGV4aXN0IHlldCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToyOntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NTY6IlNlcmllcyBvZiBlbGVtZW50cyB0byBhZGQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBuYW1lc3BhY2UuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUzOiJccGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXEludGVyZmFjZXNcRWxlbWVudEludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJFbGVtZW50SW50ZXJmYWNlIjt9fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoiZWxlbWVudHMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyNTM6IkRlY2xhcmVzIHdoaWNoIGZpZWxkIG9mIHRoZSBuYW1lc3BhY2Ugd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgZ2l2ZW4gc2VyaWVzIG9mIGVsZW1lbnRzLgpUaGlzIG5hbWUgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byBhIGdldHRlciB3aGljaCBtdXN0IGV4aXN0LgpPdXQgb2YgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgd2lsbCBubyBlZmZvcnQKYmUgZG9uZSB0byB2ZXJpZnkgd2hldGhlciB0aGUgcHJvdmlkZWQgdHlwZSBpcyB2YWxpZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjQ6InR5cGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ0OiJwaHBEb2N1bWVudG9yXENvbXBpbGVyXEFwaURvY3VtZW50YXRpb25cUGFzcyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6MTE6e3M6MjQ6IkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiI7czoyNDoiSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIjtzOjIwOiJBcGlEb2N1bWVudGF0aW9uUGFzcyI7czo2MDoicGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXEFwaURvY3VtZW50YXRpb25QYXNzIjtzOjE2OiJBcGlTZXREZXNjcmlwdG9yIjtzOjQxOiJwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcQXBpU2V0RGVzY3JpcHRvciI7czoxMDoiQ29sbGVjdGlvbiI7czozNToicGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXENvbGxlY3Rpb24iO3M6MjY6IkRvY3VtZW50YXRpb25TZXREZXNjcmlwdG9yIjtzOjUxOiJwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcRG9jdW1lbnRhdGlvblNldERlc2NyaXB0b3IiO3M6MTY6IkVsZW1lbnRJbnRlcmZhY2UiO3M6NTI6InBocERvY3VtZW50b3JcRGVzY3JpcHRvclxJbnRlcmZhY2VzXEVsZW1lbnRJbnRlcmZhY2UiO3M6MTg6Ik5hbWVzcGFjZUludGVyZmFjZSI7czo1NDoicGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXEludGVyZmFjZXNcTmFtZXNwYWNlSW50ZXJmYWNlIjtzOjE5OiJOYW1lc3BhY2VEZXNjcmlwdG9yIjtzOjQ0OiJwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcTmFtZXNwYWNlRGVzY3JpcHRvciI7czo1OiJTdGFnZSI7czozODoicGhwRG9jdW1lbnRvclxQaXBlbGluZVxBdHRyaWJ1dGVcU3RhZ2UiO3M6NToiRnFzZW4iO3M6MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI7czo2OiJBc3NlcnQiO3M6MjM6IldlYm1vemFydFxBc3NlcnRcQXNzZXJ0Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjkwOiJccGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3NcTmFtZXNwYWNlVHJlZUJ1aWxkZXI6OmFkZFRvUGFyZW50TmFtZXNwYWNlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUyOiJccGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXERvY3VtZW50YXRpb25TZXREZXNjcmlwdG9yIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjY6IkRvY3VtZW50YXRpb25TZXREZXNjcmlwdG9yIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTY6ImRvY3VtZW50YXRpb25TZXQiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTU6IlxwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcSW50ZXJmYWNlc1xOYW1lc3BhY2VJbnRlcmZhY2UiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoiTmFtZXNwYWNlSW50ZXJmYWNlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToibmFtZXNwYWNlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMzI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NTM4Njt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNjY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NzAxNjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjkwOiJccGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3NcTmFtZXNwYWNlVHJlZUJ1aWxkZXI6OmFkZFRvUGFyZW50TmFtZXNwYWNlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMDoiYWRkVG9QYXJlbnROYW1lc3BhY2UiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE2NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXHBocERvY3VtZW50b3JcQ29tcGlsZXJcQXBpRG9jdW1lbnRhdGlvblxQYXNzXE5hbWVzcGFjZVRyZWVCdWlsZGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjA6Ik5hbWVzcGFjZVRyZWVCdWlsZGVyIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo2MToiUmVidWlsZHMgdGhlIG5hbWVzcGFjZSB0cmVlIGZyb20gdGhlIGVsZW1lbnRzIGZvdW5kIGluIGZpbGVzLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozMjY6Ik9uIGV2ZXJ5IGNvbXBpbGVyIHBhc3MgaXMgdGhlIG5hbWVzcGFjZSB0cmVlIHJlYnVpbGQgdG8gYWlkIGluIHRoZSBwcm9jZXNzCm9mIGluY3JlbWVudGFsIHVwZGF0ZXMuIFRoZSBGaWxlcyBDb2xsZWN0aW9uIGluIHRoZSBQcm9qZWN0IERlc2NyaXB0b3IgaXMgdGhlCm9ubHkgbG9jYXRpb24gd2hlcmUgYWxpYXNlcyB0byBlbGVtZW50cyBtYXkgYmUgc2VyaWFsaXplZC4KCklmIHRoZSBuYW1lc3BhY2UgdHJlZSB3ZXJlIHRvIGJlIHBlcnNpc3RlZCB0aGVuIGJvdGggbG9jYXRpb25zIG5lZWRlZCB0byBiZQppbnZhbGlkYXRlZCBpZiBhIGZpbGUgd2VyZSB0byBjaGFuZ2UuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjoxMjU7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NjE6IlxwaHBEb2N1bWVudG9yXENvbXBpbGVyXEFwaURvY3VtZW50YXRpb25cQXBpRG9jdW1lbnRhdGlvblBhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMDoiQXBpRG9jdW1lbnRhdGlvblBhc3MiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MTtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjE6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEF0dHJpYnV0ZSI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mzk6IlxwaHBEb2N1bWVudG9yXFBpcGVsaW5lXEF0dHJpYnV0ZVxTdGFnZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjU6IlN0YWdlIjt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXR0cmlidXRlAGFyZ3VtZW50cyI7YTozOntpOjA7Tzo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQiOjI6e3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudAB2YWx1ZSI7czo0MzoiJ3BocGRvYy5waXBlbGluZS5hcGlfZG9jdW1lbnRhdGlvbi5jb21waWxlJyI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AG5hbWUiO047fWk6MTtPOjQxOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudCI6Mjp7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2FsbEFyZ3VtZW50AHZhbHVlIjtzOjQ6IjkwMDAiO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudABuYW1lIjtOO31pOjI7Tzo0MToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDYWxsQXJndW1lbnQiOjI6e3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudAB2YWx1ZSI7czo1OToiJ0J1aWxkICJuYW1lc3BhY2VzIiBpbmRleCBhbmQgYWRkIG5hbWVzcGFjZXMgdG8gImVsZW1lbnRzIiciO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENhbGxBcmd1bWVudABuYW1lIjtOO319fX19fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiMzAzN2QxNDk5YWU4OGY2NjFmMWM0ZDdiZWRhYWI1OTMiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czoxMDg6InZlbmRvci9waHBkb2N1bWVudG9yL3BocGRvY3VtZW50b3Ivc3JjL3BocERvY3VtZW50b3IvQ29tcGlsZXIvQXBpRG9jdW1lbnRhdGlvbi9QYXNzL05hbWVzcGFjZVRyZWVCdWlsZGVyLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NzAyMDoiPD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoqCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHBocERvY3VtZW50b3IuCiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKgogKiBAbGluayBodHRwczovL3BocGRvYy5vcmcKICovCgpuYW1lc3BhY2UgcGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXFBhc3M7Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgcGhwRG9jdW1lbnRvclxDb21waWxlclxBcGlEb2N1bWVudGF0aW9uXEFwaURvY3VtZW50YXRpb25QYXNzOwp1c2UgcGhwRG9jdW1lbnRvclxEZXNjcmlwdG9yXEFwaVNldERlc2NyaXB0b3I7CnVzZSBwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcQ29sbGVjdGlvbjsKdXNlIHBocERvY3VtZW50b3JcRGVzY3JpcHRvclxEb2N1bWVudGF0aW9uU2V0RGVzY3JpcHRvcjsKdXNlIHBocERvY3VtZW50b3JcRGVzY3JpcHRvclxJbnRlcmZhY2VzXEVsZW1lbnRJbnRlcmZhY2U7CnVzZSBwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcSW50ZXJmYWNlc1xOYW1lc3BhY2VJbnRlcmZhY2U7CnVzZSBwaHBEb2N1bWVudG9yXERlc2NyaXB0b3JcTmFtZXNwYWNlRGVzY3JpcHRvcjsKdXNlIHBocERvY3VtZW50b3JcUGlwZWxpbmVcQXR0cmlidXRlXFN0YWdlOwp1c2UgcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuOwp1c2UgV2VibW96YXJ0XEFzc2VydFxBc3NlcnQ7Cgp1c2UgZnVuY3Rpb24gc3RybGVuOwp1c2UgZnVuY3Rpb24gc3Vic3RyOwp1c2UgZnVuY3Rpb24gdWNmaXJzdDsKCi8qKgogKiBSZWJ1aWxkcyB0aGUgbmFtZXNwYWNlIHRyZWUgZnJvbSB0aGUgZWxlbWVudHMgZm91bmQgaW4gZmlsZXMuCiAqCiAqIE9uIGV2ZXJ5IGNvbXBpbGVyIHBhc3MgaXMgdGhlIG5hbWVzcGFjZSB0cmVlIHJlYnVpbGQgdG8gYWlkIGluIHRoZSBwcm9jZXNzCiAqIG9mIGluY3JlbWVudGFsIHVwZGF0ZXMuIFRoZSBGaWxlcyBDb2xsZWN0aW9uIGluIHRoZSBQcm9qZWN0IERlc2NyaXB0b3IgaXMgdGhlCiAqIG9ubHkgbG9jYXRpb24gd2hlcmUgYWxpYXNlcyB0byBlbGVtZW50cyBtYXkgYmUgc2VyaWFsaXplZC4KICoKICogSWYgdGhlIG5hbWVzcGFjZSB0cmVlIHdlcmUgdG8gYmUgcGVyc2lzdGVkIHRoZW4gYm90aCBsb2NhdGlvbnMgbmVlZGVkIHRvIGJlCiAqIGludmFsaWRhdGVkIGlmIGEgZmlsZSB3ZXJlIHRvIGNoYW5nZS4KICovCiNbU3RhZ2UoCiAgICAncGhwZG9jLnBpcGVsaW5lLmFwaV9kb2N1bWVudGF0aW9uLmNvbXBpbGUnLAogICAgOTAwMCwKICAgICdCdWlsZCAibmFtZXNwYWNlcyIgaW5kZXggYW5kIGFkZCBuYW1lc3BhY2VzIHRvICJlbGVtZW50cyInLAopXQpmaW5hbCBjbGFzcyBOYW1lc3BhY2VUcmVlQnVpbGRlciBleHRlbmRzIEFwaURvY3VtZW50YXRpb25QYXNzCnsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzKEFwaVNldERlc2NyaXB0b3IgJHN1YmplY3QpOiBBcGlTZXREZXNjcmlwdG9yCiAgICB7CiAgICAgICAgJHN1YmplY3QtPmdldEluZGV4ZXMoKQogICAgICAgICAgICAtPmZldGNoKCdlbGVtZW50cycsIG5ldyBDb2xsZWN0aW9uKCkpCiAgICAgICAgICAgIC0+c2V0KCd+XFwnLCAkc3ViamVjdC0+Z2V0TmFtZXNwYWNlKCkpOwogICAgICAgICRzdWJqZWN0LT5nZXRJbmRleGVzKCkKICAgICAgICAgICAgLT5mZXRjaCgnbmFtZXNwYWNlcycsIG5ldyBDb2xsZWN0aW9uKCkpCiAgICAgICAgICAgIC0+c2V0KCdcXCcsICRzdWJqZWN0LT5nZXROYW1lc3BhY2UoKSk7CgogICAgICAgIGZvcmVhY2ggKCRzdWJqZWN0LT5nZXRGaWxlcygpIGFzICRmaWxlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50c09mVHlwZVRvTmFtZXNwYWNlKCRzdWJqZWN0LCAkZmlsZS0+Z2V0Q29uc3RhbnRzKCktPmdldEFsbCgpLCAnY29uc3RhbnRzJyk7CiAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50c09mVHlwZVRvTmFtZXNwYWNlKCRzdWJqZWN0LCAkZmlsZS0+Z2V0RnVuY3Rpb25zKCktPmdldEFsbCgpLCAnZnVuY3Rpb25zJyk7CiAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50c09mVHlwZVRvTmFtZXNwYWNlKCRzdWJqZWN0LCAkZmlsZS0+Z2V0Q2xhc3NlcygpLT5nZXRBbGwoKSwgJ2NsYXNzZXMnKTsKICAgICAgICAgICAgJHRoaXMtPmFkZEVsZW1lbnRzT2ZUeXBlVG9OYW1lc3BhY2UoJHN1YmplY3QsICRmaWxlLT5nZXRJbnRlcmZhY2VzKCktPmdldEFsbCgpLCAnaW50ZXJmYWNlcycpOwogICAgICAgICAgICAkdGhpcy0+YWRkRWxlbWVudHNPZlR5cGVUb05hbWVzcGFjZSgkc3ViamVjdCwgJGZpbGUtPmdldFRyYWl0cygpLT5nZXRBbGwoKSwgJ3RyYWl0cycpOwogICAgICAgICAgICAkdGhpcy0+YWRkRWxlbWVudHNPZlR5cGVUb05hbWVzcGFjZSgkc3ViamVjdCwgJGZpbGUtPmdldEVudW1zKCktPmdldEFsbCgpLCAnZW51bXMnKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIE5hbWVzcGFjZUludGVyZmFjZSAkbmFtZXNwYWNlICovCiAgICAgICAgZm9yZWFjaCAoJHN1YmplY3QtPmdldEluZGV4ZXMoKS0+Z2V0KCduYW1lc3BhY2VzJyktPmdldEFsbCgpIGFzICRuYW1lc3BhY2UpIHsKICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2UtPmdldE5hbWVzcGFjZSgpID09PSAnJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5hZGRUb1BhcmVudE5hbWVzcGFjZSgkc3ViamVjdCwgJG5hbWVzcGFjZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1YmplY3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIHRoZSBnaXZlbiBlbGVtZW50cyBvZiBhIHNwZWNpZmljIHR5cGUgdG8gdGhlaXIgcmVzcGVjdGl2ZSBOYW1lc3BhY2UgRGVzY3JpcHRvcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBhc3NpZ24gdGhlIGdpdmVuIGVsZW1lbnRzIHRvIHRoZSBuYW1lc3BhY2UgYXMgcmVnaXN0ZXJlZCBpbiB0aGUgbmFtZXNwYWNlIGZpZWxkIG9mIHRoYXQKICAgICAqIGVsZW1lbnQuIElmIGEgbmFtZXNwYWNlIGRvZXMgbm90IGV4aXN0IHlldCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gRWxlbWVudEludGVyZmFjZVtdICRlbGVtZW50cyBTZXJpZXMgb2YgZWxlbWVudHMgdG8gYWRkIHRvIHRoZWlyIHJlc3BlY3RpdmUgbmFtZXNwYWNlLgogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZSBEZWNsYXJlcyB3aGljaCBmaWVsZCBvZiB0aGUgbmFtZXNwYWNlIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggdGhlIGdpdmVuIHNlcmllcyBvZiBlbGVtZW50cy4KICAgICAqICAgICAgICAgICAgIFRoaXMgbmFtZSB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvIGEgZ2V0dGVyIHdoaWNoIG11c3QgZXhpc3QuCiAgICAgKiAgICAgICAgICAgICBPdXQgb2YgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgd2lsbCBubyBlZmZvcnQKICAgICAqICAgICAgICAgICAgIGJlIGRvbmUgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlIHByb3ZpZGVkIHR5cGUgaXMgdmFsaWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhZGRFbGVtZW50c09mVHlwZVRvTmFtZXNwYWNlKAogICAgICAgIERvY3VtZW50YXRpb25TZXREZXNjcmlwdG9yICRkb2N1bWVudGF0aW9uU2V0LAogICAgICAgIGFycmF5ICRlbGVtZW50cywKICAgICAgICBzdHJpbmcgJHR5cGUsCiAgICApOiB2b2lkIHsKICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpIHsKICAgICAgICAgICAgJG5hbWVzcGFjZU5hbWUgPSAoc3RyaW5nKSAkZWxlbWVudC0+Z2V0TmFtZXNwYWNlKCk7CiAgICAgICAgICAgIC8vVE9ETzogZmluZCBvdXQgd2h5IHRoaXMgY2FuIGhhcHBlbi4gU29tZSBidWcgaW4gdGhlIGFzc2VtYmxlcj8KICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2VOYW1lID09PSAnJykgewogICAgICAgICAgICAgICAgJG5hbWVzcGFjZU5hbWUgPSAnXFwnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbmFtZXNwYWNlID0gJGRvY3VtZW50YXRpb25TZXQtPmdldEluZGV4ZXMoKS0+ZmV0Y2goJ25hbWVzcGFjZXMnLCBuZXcgQ29sbGVjdGlvbigpKS0+ZmV0Y2goJG5hbWVzcGFjZU5hbWUpOwoKICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRuYW1lc3BhY2UgPSBuZXcgTmFtZXNwYWNlRGVzY3JpcHRvcigpOwogICAgICAgICAgICAgICAgJGZxc2VuICAgICA9IG5ldyBGcXNlbigkbmFtZXNwYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAkbmFtZXNwYWNlLT5zZXROYW1lKCRmcXNlbi0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICRuYW1lc3BhY2UtPnNldEZ1bGx5UXVhbGlmaWVkU3RydWN0dXJhbEVsZW1lbnROYW1lKCRmcXNlbik7CiAgICAgICAgICAgICAgICAkbmFtZXNwYWNlTmFtZSA9IHN1YnN0cigoc3RyaW5nKSAkZnFzZW4sIDAsIC1zdHJsZW4oJGZxc2VuLT5nZXROYW1lKCkpIC0gMSk7CiAgICAgICAgICAgICAgICAkbmFtZXNwYWNlLT5zZXROYW1lc3BhY2UoJG5hbWVzcGFjZU5hbWUpOwogICAgICAgICAgICAgICAgJGRvY3VtZW50YXRpb25TZXQtPmdldEluZGV4ZXMoKQogICAgICAgICAgICAgICAgICAgIC0+ZmV0Y2goJ25hbWVzcGFjZXMnLCBuZXcgQ29sbGVjdGlvbigpKQogICAgICAgICAgICAgICAgICAgIC0+c2V0KChzdHJpbmcpICRuYW1lc3BhY2UtPmdldEZ1bGx5UXVhbGlmaWVkU3RydWN0dXJhbEVsZW1lbnROYW1lKCksICRuYW1lc3BhY2UpOwogICAgICAgICAgICAgICAgJHRoaXMtPmFkZFRvUGFyZW50TmFtZXNwYWNlKCRkb2N1bWVudGF0aW9uU2V0LCAkbmFtZXNwYWNlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgQXNzZXJ0Ojppc0luc3RhbmNlT2YoJG5hbWVzcGFjZSwgTmFtZXNwYWNlSW50ZXJmYWNlOjpjbGFzcyk7CgogICAgICAgICAgICAvLyByZXBsYWNlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gd2l0aCBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgJGVsZW1lbnQtPnNldE5hbWVzcGFjZSgkbmFtZXNwYWNlKTsKCiAgICAgICAgICAgIC8vIGFkZCBlbGVtZW50IHRvIG5hbWVzcGFjZQogICAgICAgICAgICAkZ2V0dGVyID0gJ2dldCcgLiB1Y2ZpcnN0KCR0eXBlKTsKCiAgICAgICAgICAgIC8qKiBAdmFyIENvbGxlY3Rpb248RWxlbWVudEludGVyZmFjZT4gJGNvbGxlY3Rpb24gKi8KICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSAkbmFtZXNwYWNlLT57JGdldHRlcn0oKTsKICAgICAgICAgICAgJGNvbGxlY3Rpb24tPmFkZCgkZWxlbWVudCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkVG9QYXJlbnROYW1lc3BhY2UoCiAgICAgICAgRG9jdW1lbnRhdGlvblNldERlc2NyaXB0b3IgJGRvY3VtZW50YXRpb25TZXQsCiAgICAgICAgTmFtZXNwYWNlSW50ZXJmYWNlICRuYW1lc3BhY2UsCiAgICApOiB2b2lkIHsKICAgICAgICAvKiogQHZhciBOYW1lc3BhY2VJbnRlcmZhY2V8bnVsbCAkcGFyZW50ICovCiAgICAgICAgJHBhcmVudCA9ICRkb2N1bWVudGF0aW9uU2V0LT5nZXRJbmRleGVzKCktPmZldGNoKAogICAgICAgICAgICAnbmFtZXNwYWNlcycsCiAgICAgICAgICAgIG5ldyBDb2xsZWN0aW9uKCksCiAgICAgICAgKS0+ZmV0Y2goKHN0cmluZykgJG5hbWVzcGFjZS0+Z2V0TmFtZXNwYWNlKCkpOwogICAgICAgICRkb2N1bWVudGF0aW9uU2V0LT5nZXRJbmRleGVzKCktPmZldGNoKCdlbGVtZW50cycsIG5ldyBDb2xsZWN0aW9uKCkpLT5zZXQoCiAgICAgICAgICAgICd+JyAuIChzdHJpbmcpICRuYW1lc3BhY2UtPmdldEZ1bGx5UXVhbGlmaWVkU3RydWN0dXJhbEVsZW1lbnROYW1lKCksCiAgICAgICAgICAgICRuYW1lc3BhY2UsCiAgICAgICAgKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCRwYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRwYXJlbnQgPSBuZXcgTmFtZXNwYWNlRGVzY3JpcHRvcigpOwogICAgICAgICAgICAgICAgJGZxc2VuICA9IG5ldyBGcXNlbigkbmFtZXNwYWNlLT5nZXROYW1lc3BhY2UoKSk7CiAgICAgICAgICAgICAgICAkcGFyZW50LT5zZXRGdWxseVF1YWxpZmllZFN0cnVjdHVyYWxFbGVtZW50TmFtZSgkZnFzZW4pOwogICAgICAgICAgICAgICAgJHBhcmVudC0+c2V0TmFtZSgkZnFzZW4tPmdldE5hbWUoKSk7CiAgICAgICAgICAgICAgICAkbmFtZXNwYWNlTmFtZSA9IHN1YnN0cigoc3RyaW5nKSAkZnFzZW4sIDAsIC1zdHJsZW4oJHBhcmVudC0+Z2V0TmFtZSgpKSAtIDEpOwogICAgICAgICAgICAgICAgJHBhcmVudC0+c2V0TmFtZXNwYWNlKCRuYW1lc3BhY2VOYW1lID09PSAnJyA/ICdcXCcgOiAkbmFtZXNwYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAkZG9jdW1lbnRhdGlvblNldC0+Z2V0SW5kZXhlcygpCiAgICAgICAgICAgICAgICAgICAgLT5mZXRjaCgnbmFtZXNwYWNlcycsIG5ldyBDb2xsZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgLT5zZXQoKHN0cmluZykgJHBhcmVudC0+Z2V0RnVsbHlRdWFsaWZpZWRTdHJ1Y3R1cmFsRWxlbWVudE5hbWUoKSwgJHBhcmVudCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWRkVG9QYXJlbnROYW1lc3BhY2UoJGRvY3VtZW50YXRpb25TZXQsICRwYXJlbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbmFtZXNwYWNlLT5zZXRQYXJlbnQoJHBhcmVudCk7CiAgICAgICAgICAgICRwYXJlbnQtPmdldENoaWxkcmVuKCktPnNldCgkbmFtZXNwYWNlLT5nZXROYW1lKCksICRuYW1lc3BhY2UpOwogICAgICAgIH0gY2F0Y2ggKEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbikgewogICAgICAgICAgICAvL2JpdCBoYWNreSBidXQgaXQgd29ya3MgZm9yIG5vdy4KICAgICAgICAgICAgLy8kcHJvamVjdC0+Z2V0TmFtZXNwYWNlKCktPmdldENoaWxkcmVuKCktPmFkZCgkbmFtZXNwYWNlKTsKICAgICAgICB9CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czozNToiVGhpcyBmaWxlIGlzIHBhcnQgb2YgcGhwRG9jdW1lbnRvci4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MTIwOiJGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQpmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcTGluayI6Mzp7czo3OiIAKgBuYW1lIjtzOjQ6ImxpbmsiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xMaW5rAGxpbmsiO3M6MTg6Imh0dHBzOi8vcGhwZG9jLm9yZyI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjA6IiI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6MDp7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";