1778692648
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Abc57eb14a139580cd2dcebc5a1183b76-3ffe4e50dc176f2320ba03897958ced9
s:34692:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjMxOiJSZXNvbHZlQ2hpbGREZWZpbml0aW9uc1Bhc3MucGhwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MTp7czo0NzoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXIiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NzoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJDb21waWxlciI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjc1OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxSZXNvbHZlQ2hpbGREZWZpbml0aW9uc1Bhc3MiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxNTp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjI6e3M6ODk6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6JHNraXBTY2FsYXJzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxNDp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjk6InByb3RlY3RlZCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4OToiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcUmVzb2x2ZUNoaWxkRGVmaW5pdGlvbnNQYXNzOjokc2tpcFNjYWxhcnMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToic2tpcFNjYWxhcnMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czo0OiJ0cnVlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjA6e319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGhvb2tzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXJ0dWFsIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fXM6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjg5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxSZXNvbHZlQ2hpbGREZWZpbml0aW9uc1Bhc3M6OiRjdXJyZW50UGF0aCI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTQ6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjg5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxSZXNvbHZlQ2hpbGREZWZpbml0aW9uc1Bhc3M6OiRjdXJyZW50UGF0aCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjExOiJjdXJyZW50UGF0aCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtOO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBob29rcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlydHVhbCI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjM6e3M6OTE6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6cHJvY2Vzc1ZhbHVlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToidmFsdWUiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQm9vbGVhbiI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoiaXNSb290IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czo0NDoie3sgUEhQRE9DNjg5MzRhM2U5NDU1ZmE3MjQyMDIzN2ViMDU5MDIzMjcgfX0iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MTp7czo0NDoie3sgUEhQRE9DNjg5MzRhM2U5NDU1ZmE3MjQyMDIzN2ViMDU5MDIzMjcgfX0iO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQc2V1ZG9UeXBlc1xGYWxzZV8iOjA6e319fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxMDU5O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE4Mjc7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTE6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6cHJvY2Vzc1ZhbHVlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMjoicHJvY2Vzc1ZhbHVlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjk6InByb3RlY3RlZCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6OTY6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6cmVzb2x2ZURlZmluaXRpb24oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTQ6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENoaWxkRGVmaW5pdGlvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJDaGlsZERlZmluaXRpb24iO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czoxMDoiZGVmaW5pdGlvbiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTk1Mjt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyNDE5O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTA6IkRlZmluaXRpb24iO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTY6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6cmVzb2x2ZURlZmluaXRpb24oKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJyZXNvbHZlRGVmaW5pdGlvbiI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoyNDoiUmVzb2x2ZXMgdGhlIGRlZmluaXRpb24uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xUaHJvd3MiOjM6e3M6NzoiACoAbmFtZSI7czo2OiJ0aHJvd3MiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjMwOiJXaGVuIHRoZSBkZWZpbml0aW9uIGlzIGludmFsaWQiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY1OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cUnVudGltZUV4Y2VwdGlvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJSdW50aW1lRXhjZXB0aW9uIjt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czo0NjoiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6Njp7czoxNToiQ2hpbGREZWZpbml0aW9uIjtzOjUzOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENoaWxkRGVmaW5pdGlvbiI7czoxODoiQ29udGFpbmVySW50ZXJmYWNlIjtzOjU2OiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbnRhaW5lckludGVyZmFjZSI7czoxMDoiRGVmaW5pdGlvbiI7czo0ODoiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uIjtzOjE4OiJFeGNlcHRpb25JbnRlcmZhY2UiO3M6NjY6IlN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cRXhjZXB0aW9uXEV4Y2VwdGlvbkludGVyZmFjZSI7czoxNjoiUnVudGltZUV4Y2VwdGlvbiI7czo2NDoiU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cUnVudGltZUV4Y2VwdGlvbiI7czozMzoiU2VydmljZUNpcmN1bGFyUmVmZXJlbmNlRXhjZXB0aW9uIjtzOjgxOiJTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXEV4Y2VwdGlvblxTZXJ2aWNlQ2lyY3VsYXJSZWZlcmVuY2VFeGNlcHRpb24iO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6OTg6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6ZG9SZXNvbHZlRGVmaW5pdGlvbigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NDoiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ2hpbGREZWZpbml0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTU6IkNoaWxkRGVmaW5pdGlvbiI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjEwOiJkZWZpbml0aW9uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyNDI2O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIwMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo3NjIxO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTA6IkRlZmluaXRpb24iO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTg6IlxTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENvbXBpbGVyXFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzczo6ZG9SZXNvbHZlRGVmaW5pdGlvbigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6ImRvUmVzb2x2ZURlZmluaXRpb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIwMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3NToiXFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29tcGlsZXJcUmVzb2x2ZUNoaWxkRGVmaW5pdGlvbnNQYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6Mjc6IlJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzcyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6OTk6IlRoaXMgcmVwbGFjZXMgYWxsIENoaWxkRGVmaW5pdGlvbiBpbnN0YW5jZXMgd2l0aCB0aGVpciBlcXVpdmFsZW50IGZ1bGx5Cm1lcmdlZCBEZWZpbml0aW9uIGluc3RhbmNlLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToyOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTk6IkpvaGFubmVzIE0uIFNjaG1pdHQiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MjA6InNjaG1pdHRqb2hAZ21haWwuY29tIjt9aToxO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czoxNDoiACoAZGVzY3JpcHRpb24iO047czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjE0OiJOaWNvbGFzIEdyZWthcyI7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JFbWFpbCI7czoxMzoicEB0Y2h3b3JrLmNvbSI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6MTQ2O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY5OiJcU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlclxBYnN0cmFjdFJlY3Vyc2l2ZVBhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMToiQWJzdHJhY3RSZWN1cnNpdmVQYXNzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHJlYWRPbmx5IjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjNmZmU0ZTUwZGMxNzZmMjMyMGJhMDM4OTc5NThjZWQ5IjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NzY6InZlbmRvci9zeW1mb255L2RlcGVuZGVuY3ktaW5qZWN0aW9uL0NvbXBpbGVyL1Jlc29sdmVDaGlsZERlZmluaXRpb25zUGFzcy5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjc2MjU6Ijw/cGhwCgovKgogKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgU3ltZm9ueSBwYWNrYWdlLgogKgogKiAoYykgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxDb21waWxlcjsKCnVzZSBTeW1mb255XENvbXBvbmVudFxEZXBlbmRlbmN5SW5qZWN0aW9uXENoaWxkRGVmaW5pdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cQ29udGFpbmVySW50ZXJmYWNlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxEZWZpbml0aW9uOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cRXhjZXB0aW9uSW50ZXJmYWNlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcRGVwZW5kZW5jeUluamVjdGlvblxFeGNlcHRpb25cUnVudGltZUV4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XERlcGVuZGVuY3lJbmplY3Rpb25cRXhjZXB0aW9uXFNlcnZpY2VDaXJjdWxhclJlZmVyZW5jZUV4Y2VwdGlvbjsKCi8qKgogKiBUaGlzIHJlcGxhY2VzIGFsbCBDaGlsZERlZmluaXRpb24gaW5zdGFuY2VzIHdpdGggdGhlaXIgZXF1aXZhbGVudCBmdWxseQogKiBtZXJnZWQgRGVmaW5pdGlvbiBpbnN0YW5jZS4KICoKICogQGF1dGhvciBKb2hhbm5lcyBNLiBTY2htaXR0IDxzY2htaXR0am9oQGdtYWlsLmNvbT4KICogQGF1dGhvciBOaWNvbGFzIEdyZWthcyA8cEB0Y2h3b3JrLmNvbT4KICovCmNsYXNzIFJlc29sdmVDaGlsZERlZmluaXRpb25zUGFzcyBleHRlbmRzIEFic3RyYWN0UmVjdXJzaXZlUGFzcwp7CiAgICBwcm90ZWN0ZWQgYm9vbCAkc2tpcFNjYWxhcnMgPSB0cnVlOwoKICAgIHByaXZhdGUgYXJyYXkgJGN1cnJlbnRQYXRoOwoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzVmFsdWUobWl4ZWQgJHZhbHVlLCBib29sICRpc1Jvb3QgPSBmYWxzZSk6IG1peGVkCiAgICB7CiAgICAgICAgaWYgKCEkdmFsdWUgaW5zdGFuY2VvZiBEZWZpbml0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OnByb2Nlc3NWYWx1ZSgkdmFsdWUsICRpc1Jvb3QpOwogICAgICAgIH0KICAgICAgICBpZiAoJGlzUm9vdCkgewogICAgICAgICAgICAvLyB5ZXMsIHdlIGFyZSBzcGVjaWZpY2FsbHkgZmV0Y2hpbmcgdGhlIGRlZmluaXRpb24gZnJvbSB0aGUKICAgICAgICAgICAgLy8gY29udGFpbmVyIHRvIGVuc3VyZSB3ZSBhcmUgbm90IG9wZXJhdGluZyBvbiBzdGFsZSBkYXRhCiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb250YWluZXItPmdldERlZmluaXRpb24oJHRoaXMtPmN1cnJlbnRJZCk7CiAgICAgICAgfQogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBDaGlsZERlZmluaXRpb24pIHsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRQYXRoID0gW107CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5yZXNvbHZlRGVmaW5pdGlvbigkdmFsdWUpOwogICAgICAgICAgICBpZiAoJGlzUm9vdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvbnRhaW5lci0+c2V0RGVmaW5pdGlvbigkdGhpcy0+Y3VycmVudElkLCAkdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50Ojpwcm9jZXNzVmFsdWUoJHZhbHVlLCAkaXNSb290KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc29sdmVzIHRoZSBkZWZpbml0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBXaGVuIHRoZSBkZWZpbml0aW9uIGlzIGludmFsaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlRGVmaW5pdGlvbihDaGlsZERlZmluaXRpb24gJGRlZmluaXRpb24pOiBEZWZpbml0aW9uCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kb1Jlc29sdmVEZWZpbml0aW9uKCRkZWZpbml0aW9uKTsKICAgICAgICB9IGNhdGNoIChTZXJ2aWNlQ2lyY3VsYXJSZWZlcmVuY2VFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uSW50ZXJmYWNlICRlKSB7CiAgICAgICAgICAgICRyID0gbmV3IFxSZWZsZWN0aW9uUHJvcGVydHkoJGUsICdtZXNzYWdlJyk7CiAgICAgICAgICAgICRyLT5zZXRWYWx1ZSgkZSwgXHNwcmludGYoJ1NlcnZpY2UgIiVzIjogJXMnLCAkdGhpcy0+Y3VycmVudElkLCAkZS0+Z2V0TWVzc2FnZSgpKSk7CgogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb1Jlc29sdmVEZWZpbml0aW9uKENoaWxkRGVmaW5pdGlvbiAkZGVmaW5pdGlvbik6IERlZmluaXRpb24KICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb250YWluZXItPmhhcygkcGFyZW50ID0gJGRlZmluaXRpb24tPmdldFBhcmVudCgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihcc3ByaW50ZignUGFyZW50IGRlZmluaXRpb24gIiVzIiBkb2VzIG5vdCBleGlzdC4nLCAkcGFyZW50KSk7CiAgICAgICAgfQoKICAgICAgICAkc2VhcmNoS2V5ID0gYXJyYXlfc2VhcmNoKCRwYXJlbnQsICR0aGlzLT5jdXJyZW50UGF0aCk7CiAgICAgICAgJHRoaXMtPmN1cnJlbnRQYXRoW10gPSAkcGFyZW50OwoKICAgICAgICBpZiAoZmFsc2UgIT09ICRzZWFyY2hLZXkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNlcnZpY2VDaXJjdWxhclJlZmVyZW5jZUV4Y2VwdGlvbigkcGFyZW50LCBcYXJyYXlfc2xpY2UoJHRoaXMtPmN1cnJlbnRQYXRoLCAkc2VhcmNoS2V5KSk7CiAgICAgICAgfQoKICAgICAgICAkcGFyZW50RGVmID0gJHRoaXMtPmNvbnRhaW5lci0+ZmluZERlZmluaXRpb24oJHBhcmVudCk7CiAgICAgICAgaWYgKCRwYXJlbnREZWYgaW5zdGFuY2VvZiBDaGlsZERlZmluaXRpb24pIHsKICAgICAgICAgICAgJGlkID0gJHRoaXMtPmN1cnJlbnRJZDsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRJZCA9ICRwYXJlbnQ7CiAgICAgICAgICAgICRwYXJlbnREZWYgPSAkdGhpcy0+cmVzb2x2ZURlZmluaXRpb24oJHBhcmVudERlZik7CiAgICAgICAgICAgICR0aGlzLT5jb250YWluZXItPnNldERlZmluaXRpb24oJHBhcmVudCwgJHBhcmVudERlZik7CiAgICAgICAgICAgICR0aGlzLT5jdXJyZW50SWQgPSAkaWQ7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y29udGFpbmVyLT5sb2coJHRoaXMsIFxzcHJpbnRmKCdSZXNvbHZpbmcgaW5oZXJpdGFuY2UgZm9yICIlcyIgKHBhcmVudDogJXMpLicsICR0aGlzLT5jdXJyZW50SWQsICRwYXJlbnQpKTsKICAgICAgICAkZGVmID0gbmV3IERlZmluaXRpb24oKTsKCiAgICAgICAgLy8gbWVyZ2UgaW4gcGFyZW50IGRlZmluaXRpb24KICAgICAgICAvLyBwdXJwb3NlbHkgaWdub3JlZCBhdHRyaWJ1dGVzOiBhYnN0cmFjdCwgc2hhcmVkLCB0YWdzLCBhdXRvY29uZmlndXJlZAogICAgICAgICRkZWYtPnNldENsYXNzKCRwYXJlbnREZWYtPmdldENsYXNzKCkpOwogICAgICAgICRkZWYtPnNldEFyZ3VtZW50cygkcGFyZW50RGVmLT5nZXRBcmd1bWVudHMoKSk7CiAgICAgICAgJGRlZi0+c2V0TWV0aG9kQ2FsbHMoJHBhcmVudERlZi0+Z2V0TWV0aG9kQ2FsbHMoKSk7CiAgICAgICAgJGRlZi0+c2V0UHJvcGVydGllcygkcGFyZW50RGVmLT5nZXRQcm9wZXJ0aWVzKCkpOwogICAgICAgIGlmICgkcGFyZW50RGVmLT5pc0RlcHJlY2F0ZWQoKSkgewogICAgICAgICAgICAkZGVwcmVjYXRpb24gPSAkcGFyZW50RGVmLT5nZXREZXByZWNhdGlvbignJXNlcnZpY2VfaWQlJyk7CiAgICAgICAgICAgICRkZWYtPnNldERlcHJlY2F0ZWQoJGRlcHJlY2F0aW9uWydwYWNrYWdlJ10sICRkZXByZWNhdGlvblsndmVyc2lvbiddLCAkZGVwcmVjYXRpb25bJ21lc3NhZ2UnXSk7CiAgICAgICAgfQogICAgICAgICRkZWYtPnNldEZhY3RvcnkoJHBhcmVudERlZi0+Z2V0RmFjdG9yeSgpKTsKICAgICAgICAkZGVmLT5zZXRDb25maWd1cmF0b3IoJHBhcmVudERlZi0+Z2V0Q29uZmlndXJhdG9yKCkpOwogICAgICAgICRkZWYtPnNldEZpbGUoJHBhcmVudERlZi0+Z2V0RmlsZSgpKTsKICAgICAgICAkZGVmLT5zZXRQdWJsaWMoJHBhcmVudERlZi0+aXNQdWJsaWMoKSk7CiAgICAgICAgJGRlZi0+c2V0TGF6eSgkcGFyZW50RGVmLT5pc0xhenkoKSk7CiAgICAgICAgJGRlZi0+c2V0QXV0b3dpcmVkKCRwYXJlbnREZWYtPmlzQXV0b3dpcmVkKCkpOwogICAgICAgICRkZWYtPnNldENoYW5nZXMoJHBhcmVudERlZi0+Z2V0Q2hhbmdlcygpKTsKCiAgICAgICAgJGRlZi0+c2V0QmluZGluZ3MoJGRlZmluaXRpb24tPmdldEJpbmRpbmdzKCkgKyAkcGFyZW50RGVmLT5nZXRCaW5kaW5ncygpKTsKCiAgICAgICAgJGRlZi0+c2V0U3ludGhldGljKCRkZWZpbml0aW9uLT5pc1N5bnRoZXRpYygpKTsKCiAgICAgICAgLy8gb3ZlcndyaXRlIHdpdGggdmFsdWVzIHNwZWNpZmllZCBpbiB0aGUgZGVjb3JhdG9yCiAgICAgICAgJGNoYW5nZXMgPSAkZGVmaW5pdGlvbi0+Z2V0Q2hhbmdlcygpOwogICAgICAgIGlmIChpc3NldCgkY2hhbmdlc1snY2xhc3MnXSkpIHsKICAgICAgICAgICAgJGRlZi0+c2V0Q2xhc3MoJGRlZmluaXRpb24tPmdldENsYXNzKCkpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ2ZhY3RvcnknXSkpIHsKICAgICAgICAgICAgJGRlZi0+c2V0RmFjdG9yeSgkZGVmaW5pdGlvbi0+Z2V0RmFjdG9yeSgpKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRjaGFuZ2VzWydjb25maWd1cmF0b3InXSkpIHsKICAgICAgICAgICAgJGRlZi0+c2V0Q29uZmlndXJhdG9yKCRkZWZpbml0aW9uLT5nZXRDb25maWd1cmF0b3IoKSk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkY2hhbmdlc1snZmlsZSddKSkgewogICAgICAgICAgICAkZGVmLT5zZXRGaWxlKCRkZWZpbml0aW9uLT5nZXRGaWxlKCkpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ3B1YmxpYyddKSkgewogICAgICAgICAgICAkZGVmLT5zZXRQdWJsaWMoJGRlZmluaXRpb24tPmlzUHVibGljKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkZWYtPnNldFB1YmxpYygkcGFyZW50RGVmLT5pc1B1YmxpYygpKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRjaGFuZ2VzWydsYXp5J10pKSB7CiAgICAgICAgICAgICRkZWYtPnNldExhenkoJGRlZmluaXRpb24tPmlzTGF6eSgpKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRjaGFuZ2VzWydkZXByZWNhdGVkJ10pICYmICRkZWZpbml0aW9uLT5pc0RlcHJlY2F0ZWQoKSkgewogICAgICAgICAgICAkZGVwcmVjYXRpb24gPSAkZGVmaW5pdGlvbi0+Z2V0RGVwcmVjYXRpb24oJyVzZXJ2aWNlX2lkJScpOwogICAgICAgICAgICAkZGVmLT5zZXREZXByZWNhdGVkKCRkZXByZWNhdGlvblsncGFja2FnZSddLCAkZGVwcmVjYXRpb25bJ3ZlcnNpb24nXSwgJGRlcHJlY2F0aW9uWydtZXNzYWdlJ10pOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ2F1dG93aXJlZCddKSkgewogICAgICAgICAgICAkZGVmLT5zZXRBdXRvd2lyZWQoJGRlZmluaXRpb24tPmlzQXV0b3dpcmVkKCkpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ3NoYXJlZCddKSkgewogICAgICAgICAgICAkZGVmLT5zZXRTaGFyZWQoJGRlZmluaXRpb24tPmlzU2hhcmVkKCkpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ2RlY29yYXRlZF9zZXJ2aWNlJ10pKSB7CiAgICAgICAgICAgICRkZWNvcmF0ZWRTZXJ2aWNlID0gJGRlZmluaXRpb24tPmdldERlY29yYXRlZFNlcnZpY2UoKTsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRkZWNvcmF0ZWRTZXJ2aWNlKSB7CiAgICAgICAgICAgICAgICAkZGVmLT5zZXREZWNvcmF0ZWRTZXJ2aWNlKCRkZWNvcmF0ZWRTZXJ2aWNlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRkZWYtPnNldERlY29yYXRlZFNlcnZpY2UoJGRlY29yYXRlZFNlcnZpY2VbMF0sICRkZWNvcmF0ZWRTZXJ2aWNlWzFdLCAkZGVjb3JhdGVkU2VydmljZVsyXSwgJGRlY29yYXRlZFNlcnZpY2VbM10gPz8gQ29udGFpbmVySW50ZXJmYWNlOjpFWENFUFRJT05fT05fSU5WQUxJRF9SRUZFUkVOQ0UpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBtZXJnZSBhcmd1bWVudHMKICAgICAgICBmb3JlYWNoICgkZGVmaW5pdGlvbi0+Z2V0QXJndW1lbnRzKCkgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoJGspKSB7CiAgICAgICAgICAgICAgICAkZGVmLT5hZGRBcmd1bWVudCgkdik7CiAgICAgICAgICAgIH0gZWxzZWlmIChzdHJfc3RhcnRzX3dpdGgoJGssICdpbmRleF8nKSkgewogICAgICAgICAgICAgICAgJGRlZi0+cmVwbGFjZUFyZ3VtZW50KChpbnQpIHN1YnN0cigkaywgXHN0cmxlbignaW5kZXhfJykpLCAkdik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZGVmLT5zZXRBcmd1bWVudCgkaywgJHYpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBtZXJnZSBwcm9wZXJ0aWVzCiAgICAgICAgZm9yZWFjaCAoJGRlZmluaXRpb24tPmdldFByb3BlcnRpZXMoKSBhcyAkayA9PiAkdikgewogICAgICAgICAgICAkZGVmLT5zZXRQcm9wZXJ0eSgkaywgJHYpOwogICAgICAgIH0KCiAgICAgICAgLy8gYXBwZW5kIG1ldGhvZCBjYWxscwogICAgICAgIGlmICgkY2FsbHMgPSAkZGVmaW5pdGlvbi0+Z2V0TWV0aG9kQ2FsbHMoKSkgewogICAgICAgICAgICAkZGVmLT5zZXRNZXRob2RDYWxscyhhcnJheV9tZXJnZSgkZGVmLT5nZXRNZXRob2RDYWxscygpLCAkY2FsbHMpKTsKICAgICAgICB9CgogICAgICAgICRkZWYtPmFkZEVycm9yKCRwYXJlbnREZWYpOwogICAgICAgICRkZWYtPmFkZEVycm9yKCRkZWZpbml0aW9uKTsKCiAgICAgICAgLy8gdGhlc2UgYXR0cmlidXRlcyBhcmUgYWx3YXlzIHRha2VuIGZyb20gdGhlIGNoaWxkCiAgICAgICAgJGRlZi0+c2V0QWJzdHJhY3QoJGRlZmluaXRpb24tPmlzQWJzdHJhY3QoKSk7CiAgICAgICAgJGRlZi0+c2V0VGFncygkZGVmaW5pdGlvbi0+Z2V0VGFncygpKTsKICAgICAgICAvLyBhdXRvY29uZmlndXJlIGlzIG5ldmVyIHRha2VuIGZyb20gcGFyZW50IChvbiBwdXJwb3NlKQogICAgICAgIC8vIGFuZCBpdCdzIG5vdCBsZWdhbCBvbiBhbiBpbnN0YW5jZW9mCiAgICAgICAgJGRlZi0+c2V0QXV0b2NvbmZpZ3VyZWQoJGRlZmluaXRpb24tPmlzQXV0b2NvbmZpZ3VyZWQoKSk7CgogICAgICAgIGlmICghJGRlZi0+aGFzVGFnKCdwcm94eScpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJlbnREZWYtPmdldFRhZygncHJveHknKSBhcyAkdikgewogICAgICAgICAgICAgICAgJGRlZi0+YWRkVGFnKCdwcm94eScsICR2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkZWY7CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";