A/MNCk1crFFjAAAAAAAAAAAJAAAAQAAAAHNgAgAAZAAAWgAAZAEAZAIAbAEAWgEAZQEAagIAZAMAawIAWgMAZAEAZAIAbAQAWgQAZAEAZAIAbAUAWgUAZAEAZAIAbAYAWgYAZAEAZAIAbAcAWgcAZAEAZAIAbAgAWggAZAEAZAIAbAkAWgkAZAQAZQoAZgEAZAUAhAAAgwAAWVoLAGUDAHLSAGQBAGQCAGwMAFoMAGQBAGQCAGwNAFoNAGQBAGQCAGwOAFoOAGQGAGYAAGQHAIQAAIMAAFlaDwBkCABmAABkCQCEAACDAABZWhAAbkUAZAEAZAIAbBEAWhEAZRIAZREAZAoAgwIAWhMAZAEAZAIAbBQAWhQAZAEAZAIAbBUAWhUAZRYAZREAZAsAZAwAgwMAWhcAZA0AZA4AZA8AZBAAZBEAZBIAZAQAZwcAWhgAZQMAcpoBZAEAZBMAbA4AbRkAWhkAbRoAWhoAbRsAWhsAbRwAWhwAbR0AWh0AbR4AWh4AbR8AWh8AbSAAWiAAAWUYAGohAGQUAGQVAGQWAGQXAGQYAGQZAGQaAGQbAGcIAIMBAAFuAAB5EwBlBABqIgBkHACDAQBaIwBXbg0AAQEBZB0AWiMAbgEAWGcAAFokAGQeAIQAAFolAGQBAFomAGQfAFonAGQgAIQAAFooAGQhAIQAAFopAGQiAIQAAFoqAGQjAIQAAForAGQkAIQAAFosAGQlAIQAAFotAGQNAGUuAGYBAGQmAIQAAIMAAFlaLwBkJwCEAABaMABkKACEAABaMQBlMgBkKQBrAgByXAJlAwByUgJlMQCDAAABbgcAZTAAgwAAAW4AAGQCAFMoKgAAAHOaMAAAc3VicHJvY2VzcyAtIFN1YnByb2Nlc3NlcyB3aXRoIGFjY2Vzc2libGUgSS9PIHN0cmVhbXMKClRoaXMgbW9kdWxlIGFsbG93cyB5b3UgdG8gc3Bhd24gcHJvY2Vzc2VzLCBjb25uZWN0IHRvIHRoZWlyCmlucHV0L291dHB1dC9lcnJvciBwaXBlcywgYW5kIG9idGFpbiB0aGVpciByZXR1cm4gY29kZXMuICBUaGlzIG1vZHVsZQppbnRlbmRzIHRvIHJlcGxhY2Ugc2V2ZXJhbCBvdGhlciwgb2xkZXIgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLCBsaWtlOgoKb3Muc3lzdGVtCm9zLnNwYXduKgpvcy5wb3BlbioKcG9wZW4yLioKY29tbWFuZHMuKgoKSW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZXNlCm1vZHVsZXMgYW5kIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuCgoKClVzaW5nIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhpcyBtb2R1bGUgZGVmaW5lcyBvbmUgY2xhc3MgY2FsbGVkIFBvcGVuOgoKY2xhc3MgUG9wZW4oYXJncywgYnVmc2l6ZT0wLCBleGVjdXRhYmxlPU5vbmUsCiAgICAgICAgICAgIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwKICAgICAgICAgICAgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9RmFsc2UsIHNoZWxsPUZhbHNlLAogICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwKICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wKToKCgpBcmd1bWVudHMgYXJlOgoKYXJncyBzaG91bGQgYmUgYSBzdHJpbmcsIG9yIGEgc2VxdWVuY2Ugb2YgcHJvZ3JhbSBhcmd1bWVudHMuICBUaGUKcHJvZ3JhbSB0byBleGVjdXRlIGlzIG5vcm1hbGx5IHRoZSBmaXJzdCBpdGVtIGluIHRoZSBhcmdzIHNlcXVlbmNlIG9yCnN0cmluZywgYnV0IGNhbiBiZSBleHBsaWNpdGx5IHNldCBieSB1c2luZyB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudC4KCk9uIFVOSVgsIHdpdGggc2hlbGw9RmFsc2UgKGRlZmF1bHQpOiBJbiB0aGlzIGNhc2UsIHRoZSBQb3BlbiBjbGFzcwp1c2VzIG9zLmV4ZWN2cCgpIHRvIGV4ZWN1dGUgdGhlIGNoaWxkIHByb2dyYW0uICBhcmdzIHNob3VsZCBub3JtYWxseQpiZSBhIHNlcXVlbmNlLiAgQSBzdHJpbmcgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc3RyaW5nCmFzIHRoZSBvbmx5IGl0ZW0gKHRoZSBwcm9ncmFtIHRvIGV4ZWN1dGUpLgoKT24gVU5JWCwgd2l0aCBzaGVsbD1UcnVlOiBJZiBhcmdzIGlzIGEgc3RyaW5nLCBpdCBzcGVjaWZpZXMgdGhlCmNvbW1hbmQgc3RyaW5nIHRvIGV4ZWN1dGUgdGhyb3VnaCB0aGUgc2hlbGwuICBJZiBhcmdzIGlzIGEgc2VxdWVuY2UsCnRoZSBmaXJzdCBpdGVtIHNwZWNpZmllcyB0aGUgY29tbWFuZCBzdHJpbmcsIGFuZCBhbnkgYWRkaXRpb25hbCBpdGVtcwp3aWxsIGJlIHRyZWF0ZWQgYXMgYWRkaXRpb25hbCBzaGVsbCBhcmd1bWVudHMuCgpPbiBXaW5kb3dzOiB0aGUgUG9wZW4gY2xhc3MgdXNlcyBDcmVhdGVQcm9jZXNzKCkgdG8gZXhlY3V0ZSB0aGUgY2hpbGQKcHJvZ3JhbSwgd2hpY2ggb3BlcmF0ZXMgb24gc3RyaW5ncy4gIElmIGFyZ3MgaXMgYSBzZXF1ZW5jZSwgaXQgd2lsbCBiZQpjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIGxpc3QyY21kbGluZSBtZXRob2QuICBQbGVhc2Ugbm90ZSB0aGF0Cm5vdCBhbGwgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgaW50ZXJwcmV0IHRoZSBjb21tYW5kIGxpbmUgdGhlIHNhbWUKd2F5OiBUaGUgbGlzdDJjbWRsaW5lIGlzIGRlc2lnbmVkIGZvciBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIHNhbWUKcnVsZXMgYXMgdGhlIE1TIEMgcnVudGltZS4KCmJ1ZnNpemUsIGlmIGdpdmVuLCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudAp0byB0aGUgYnVpbHQtaW4gb3BlbigpIGZ1bmN0aW9uOiAwIG1lYW5zIHVuYnVmZmVyZWQsIDEgbWVhbnMgbGluZQpidWZmZXJlZCwgYW55IG90aGVyIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHVzZSBhIGJ1ZmZlciBvZgooYXBwcm94aW1hdGVseSkgdGhhdCBzaXplLiAgQSBuZWdhdGl2ZSBidWZzaXplIG1lYW5zIHRvIHVzZSB0aGUgc3lzdGVtCmRlZmF1bHQsIHdoaWNoIHVzdWFsbHkgbWVhbnMgZnVsbHkgYnVmZmVyZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKYnVmc2l6ZSBpcyAwICh1bmJ1ZmZlcmVkKS4KCnN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtcycgc3RhbmRhcmQKaW5wdXQsIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZmlsZSBoYW5kbGVzLCByZXNwZWN0aXZlbHkuClZhbGlkIHZhbHVlcyBhcmUgUElQRSwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCmludGVnZXIpLCBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIE5vbmUuICBQSVBFIGluZGljYXRlcyB0aGF0IGEKbmV3IHBpcGUgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgV2l0aCBOb25lLCBubyByZWRpcmVjdGlvbgp3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUKcGFyZW50LiAgQWRkaXRpb25hbGx5LCBzdGRlcnIgY2FuIGJlIFNURE9VVCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlCnN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZQpmaWxlIGhhbmRsZSBhcyBmb3Igc3Rkb3V0LgoKSWYgcHJlZXhlY19mbiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkCmluIHRoZSBjaGlsZCBwcm9jZXNzIGp1c3QgYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCklmIGNsb3NlX2ZkcyBpcyB0cnVlLCBhbGwgZmlsZSBkZXNjcmlwdG9ycyBleGNlcHQgMCwgMSBhbmQgMiB3aWxsIGJlCmNsb3NlZCBiZWZvcmUgdGhlIGNoaWxkIHByb2Nlc3MgaXMgZXhlY3V0ZWQuCgppZiBzaGVsbCBpcyB0cnVlLCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCB0aHJvdWdoIHRoZQpzaGVsbC4KCklmIGN3ZCBpcyBub3QgTm9uZSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgY2hhbmdlZCB0byBjd2QKYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCklmIGVudiBpcyBub3QgTm9uZSwgaXQgZGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3CnByb2Nlc3MuCgpJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgdHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKb3BlbmVkIGFzIGEgdGV4dCBmaWxlcywgYnV0IGxpbmVzIG1heSBiZSB0ZXJtaW5hdGVkIGJ5IGFueSBvZiAnXG4nLAp0aGUgVW5peCBlbmQtb2YtbGluZSBjb252ZW50aW9uLCAnXHInLCB0aGUgTWFjaW50b3NoIGNvbnZlbnRpb24gb3IKJ1xyXG4nLCB0aGUgV2luZG93cyBjb252ZW50aW9uLiAgQWxsIG9mIHRoZXNlIGV4dGVybmFsIHJlcHJlc2VudGF0aW9ucwphcmUgc2VlbiBhcyAnXG4nIGJ5IHRoZSBQeXRob24gcHJvZ3JhbS4gIE5vdGU6IFRoaXMgZmVhdHVyZSBpcyBvbmx5CmF2YWlsYWJsZSBpZiBQeXRob24gaXMgYnVpbHQgd2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0ICh0aGUKZGVmYXVsdCkuICBBbHNvLCB0aGUgbmV3bGluZXMgYXR0cmlidXRlIG9mIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0LApzdGRpbiBhbmQgc3RkZXJyIGFyZSBub3QgdXBkYXRlZCBieSB0aGUgY29tbXVuaWNhdGUoKSBtZXRob2QuCgpUaGUgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MsIGlmIGdpdmVuLCB3aWxsIGJlIHBhc3NlZCB0byB0aGUKdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCmFwcGVhcmFuY2Ugb2YgdGhlIG1haW4gd2luZG93IGFuZCBwcmlvcml0eSBmb3IgdGhlIG5ldyBwcm9jZXNzLgooV2luZG93cyBvbmx5KQoKClRoaXMgbW9kdWxlIGFsc28gZGVmaW5lcyBzb21lIHNob3J0Y3V0IGZ1bmN0aW9uczoKCmNhbGwoKnBvcGVuYXJncywgKiprd2FyZ3MpOgogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgoKICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgoKICAgIHJldGNvZGUgPSBjYWxsKFsibHMiLCAiLWwiXSkKCmNoZWNrX2NhbGwoKnBvcGVuYXJncywgKiprd2FyZ3MpOgogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLiAgSWYgdGhlCiAgICBleGl0IGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZQogICAgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlIENhbGxlZFByb2Nlc3NFcnJvciBvYmplY3Qgd2lsbCBoYXZlIHRoZQogICAgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgoKICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgoKICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQoKY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgoKICAgIElmIHRoZSBleGl0IGNvZGUgd2FzIG5vbi16ZXJvIGl0IHJhaXNlcyBhIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZQogICAgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZSByZXR1cm5jb2RlCiAgICBhdHRyaWJ1dGUgYW5kIG91dHB1dCBpbiB0aGUgb3V0cHV0IGF0dHJpYnV0ZS4KCiAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKCiAgICBvdXRwdXQgPSBjaGVja19vdXRwdXQoWyJscyIsICItbCIsICIvZGV2L251bGwiXSkKCgpFeGNlcHRpb25zCi0tLS0tLS0tLS0KRXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGJlZm9yZSB0aGUgbmV3IHByb2dyYW0gaGFzCnN0YXJ0ZWQgdG8gZXhlY3V0ZSwgd2lsbCBiZSByZS1yYWlzZWQgaW4gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwKdGhlIGV4Y2VwdGlvbiBvYmplY3Qgd2lsbCBoYXZlIG9uZSBleHRyYSBhdHRyaWJ1dGUgY2FsbGVkCidjaGlsZF90cmFjZWJhY2snLCB3aGljaCBpcyBhIHN0cmluZyBjb250YWluaW5nIHRyYWNlYmFjayBpbmZvcm1hdGlvbgpmcm9tIHRoZSBjaGlsZHMgcG9pbnQgb2Ygdmlldy4KClRoZSBtb3N0IGNvbW1vbiBleGNlcHRpb24gcmFpc2VkIGlzIE9TRXJyb3IuICBUaGlzIG9jY3VycywgZm9yCmV4YW1wbGUsIHdoZW4gdHJ5aW5nIHRvIGV4ZWN1dGUgYSBub24tZXhpc3RlbnQgZmlsZS4gIEFwcGxpY2F0aW9ucwpzaG91bGQgcHJlcGFyZSBmb3IgT1NFcnJvcnMuCgpBIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgUG9wZW4gaXMgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHMuCgpjaGVja19jYWxsKCkgYW5kIGNoZWNrX291dHB1dCgpIHdpbGwgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yLCBpZiB0aGUKY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLgoKClNlY3VyaXR5Ci0tLS0tLS0tClVubGlrZSBzb21lIG90aGVyIHBvcGVuIGZ1bmN0aW9ucywgdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIG5ldmVyIGNhbGwKL2Jpbi9zaCBpbXBsaWNpdGx5LiAgVGhpcyBtZWFucyB0aGF0IGFsbCBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgc2hlbGwKbWV0YWNoYXJhY3RlcnMsIGNhbiBzYWZlbHkgYmUgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy4KCgpQb3BlbiBvYmplY3RzCj09PT09PT09PT09PT0KSW5zdGFuY2VzIG9mIHRoZSBQb3BlbiBjbGFzcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCnBvbGwoKQogICAgQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgYXR0cmlidXRlLgoKd2FpdCgpCiAgICBXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCgpjb21tdW5pY2F0ZShpbnB1dD1Ob25lKQogICAgSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbSBzdGRvdXQKICAgIGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvCiAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCiAgICBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvCiAgICB0aGUgY2hpbGQuCgogICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4KCiAgICBOb3RlOiBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzCiAgICBtZXRob2QgaWYgdGhlIGRhdGEgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCgpUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIGFsc28gYXZhaWxhYmxlOgoKc3RkaW4KICAgIElmIHRoZSBzdGRpbiBhcmd1bWVudCBpcyBQSVBFLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIGZpbGUgb2JqZWN0CiAgICB0aGF0IHByb3ZpZGVzIGlucHV0IHRvIHRoZSBjaGlsZCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBpdCBpcyBOb25lLgoKc3Rkb3V0CiAgICBJZiB0aGUgc3Rkb3V0IGFyZ3VtZW50IGlzIFBJUEUsIHRoaXMgYXR0cmlidXRlIGlzIGEgZmlsZSBvYmplY3QKICAgIHRoYXQgcHJvdmlkZXMgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuICBPdGhlcndpc2UsIGl0IGlzCiAgICBOb25lLgoKc3RkZXJyCiAgICBJZiB0aGUgc3RkZXJyIGFyZ3VtZW50IGlzIFBJUEUsIHRoaXMgYXR0cmlidXRlIGlzIGZpbGUgb2JqZWN0IHRoYXQKICAgIHByb3ZpZGVzIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBpdCBpcwogICAgTm9uZS4KCnBpZAogICAgVGhlIHByb2Nlc3MgSUQgb2YgdGhlIGNoaWxkIHByb2Nlc3MuCgpyZXR1cm5jb2RlCiAgICBUaGUgY2hpbGQgcmV0dXJuIGNvZGUuICBBIE5vbmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MKICAgIGhhc24ndCB0ZXJtaW5hdGVkIHlldC4gIEEgbmVnYXRpdmUgdmFsdWUgLU4gaW5kaWNhdGVzIHRoYXQgdGhlCiAgICBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwgTiAoVU5JWCBvbmx5KS4KCgpSZXBsYWNpbmcgb2xkZXIgZnVuY3Rpb25zIHdpdGggdGhlIHN1YnByb2Nlc3MgbW9kdWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW4gdGhpcyBzZWN0aW9uLCAiYSA9PT4gYiIgbWVhbnMgdGhhdCBiIGNhbiBiZSB1c2VkIGFzIGEgcmVwbGFjZW1lbnQKZm9yIGEuCgpOb3RlOiBBbGwgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBmYWlsIChtb3JlIG9yIGxlc3MpIHNpbGVudGx5IGlmCnRoZSBleGVjdXRlZCBwcm9ncmFtIGNhbm5vdCBiZSBmb3VuZDsgdGhpcyBtb2R1bGUgcmFpc2VzIGFuIE9TRXJyb3IKZXhjZXB0aW9uLgoKSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlcywgd2UgYXNzdW1lIHRoYXQgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIGlzCmltcG9ydGVkIHdpdGggImZyb20gc3VicHJvY2VzcyBpbXBvcnQgKiIuCgoKUmVwbGFjaW5nIC9iaW4vc2ggc2hlbGwgYmFja3F1b3RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvdXRwdXQ9YG15Y21kIG15YXJnYAo9PT4Kb3V0cHV0ID0gUG9wZW4oWyJteWNtZCIsICJteWFyZyJdLCBzdGRvdXQ9UElQRSkuY29tbXVuaWNhdGUoKVswXQoKClJlcGxhY2luZyBzaGVsbCBwaXBlIGxpbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvdXRwdXQ9YGRtZXNnIHwgZ3JlcCBoZGFgCj09PgpwMSA9IFBvcGVuKFsiZG1lc2ciXSwgc3Rkb3V0PVBJUEUpCnAyID0gUG9wZW4oWyJncmVwIiwgImhkYSJdLCBzdGRpbj1wMS5zdGRvdXQsIHN0ZG91dD1QSVBFKQpvdXRwdXQgPSBwMi5jb21tdW5pY2F0ZSgpWzBdCgoKUmVwbGFjaW5nIG9zLnN5c3RlbSgpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdHMgPSBvcy5zeXN0ZW0oIm15Y21kIiArICIgbXlhcmciKQo9PT4KcCA9IFBvcGVuKCJteWNtZCIgKyAiIG15YXJnIiwgc2hlbGw9VHJ1ZSkKcGlkLCBzdHMgPSBvcy53YWl0cGlkKHAucGlkLCAwKQoKTm90ZToKCiogQ2FsbGluZyB0aGUgcHJvZ3JhbSB0aHJvdWdoIHRoZSBzaGVsbCBpcyB1c3VhbGx5IG5vdCByZXF1aXJlZC4KCiogSXQncyBlYXNpZXIgdG8gbG9vayBhdCB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUgdGhhbiB0aGUKICBleGl0c3RhdHVzLgoKQSBtb3JlIHJlYWwtd29ybGQgZXhhbXBsZSB3b3VsZCBsb29rIGxpa2UgdGhpczoKCnRyeToKICAgIHJldGNvZGUgPSBjYWxsKCJteWNtZCIgKyAiIG15YXJnIiwgc2hlbGw9VHJ1ZSkKICAgIGlmIHJldGNvZGUgPCAwOgogICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkNoaWxkIHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCIsIC1yZXRjb2RlCiAgICBlbHNlOgogICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkNoaWxkIHJldHVybmVkIiwgcmV0Y29kZQpleGNlcHQgT1NFcnJvciwgZToKICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkV4ZWN1dGlvbiBmYWlsZWQ6IiwgZQoKClJlcGxhY2luZyBvcy5zcGF3bioKLS0tLS0tLS0tLS0tLS0tLS0tLQpQX05PV0FJVCBleGFtcGxlOgoKcGlkID0gb3Muc3Bhd25scChvcy5QX05PV0FJVCwgIi9iaW4vbXljbWQiLCAibXljbWQiLCAibXlhcmciKQo9PT4KcGlkID0gUG9wZW4oWyIvYmluL215Y21kIiwgIm15YXJnIl0pLnBpZAoKClBfV0FJVCBleGFtcGxlOgoKcmV0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCAiL2Jpbi9teWNtZCIsICJteWNtZCIsICJteWFyZyIpCj09PgpyZXRjb2RlID0gY2FsbChbIi9iaW4vbXljbWQiLCAibXlhcmciXSkKCgpWZWN0b3IgZXhhbXBsZToKCm9zLnNwYXdudnAob3MuUF9OT1dBSVQsIHBhdGgsIGFyZ3MpCj09PgpQb3BlbihbcGF0aF0gKyBhcmdzWzE6XSkKCgpFbnZpcm9ubWVudCBleGFtcGxlOgoKb3Muc3Bhd25scGUob3MuUF9OT1dBSVQsICIvYmluL215Y21kIiwgIm15Y21kIiwgIm15YXJnIiwgZW52KQo9PT4KUG9wZW4oWyIvYmluL215Y21kIiwgIm15YXJnIl0sIGVudj17IlBBVEgiOiAiL3Vzci9iaW4ifSkKCgpSZXBsYWNpbmcgb3MucG9wZW4qCi0tLS0tLS0tLS0tLS0tLS0tLS0KcGlwZSA9IG9zLnBvcGVuKCJjbWQiLCBtb2RlPSdyJywgYnVmc2l6ZSkKPT0+CnBpcGUgPSBQb3BlbigiY21kIiwgc2hlbGw9VHJ1ZSwgYnVmc2l6ZT1idWZzaXplLCBzdGRvdXQ9UElQRSkuc3Rkb3V0CgpwaXBlID0gb3MucG9wZW4oImNtZCIsIG1vZGU9J3cnLCBidWZzaXplKQo9PT4KcGlwZSA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsIHN0ZGluPVBJUEUpLnN0ZGluCgoKKGNoaWxkX3N0ZGluLCBjaGlsZF9zdGRvdXQpID0gb3MucG9wZW4yKCJjbWQiLCBtb2RlLCBidWZzaXplKQo9PT4KcCA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsCiAgICAgICAgICBzdGRpbj1QSVBFLCBzdGRvdXQ9UElQRSwgY2xvc2VfZmRzPVRydWUpCihjaGlsZF9zdGRpbiwgY2hpbGRfc3Rkb3V0KSA9IChwLnN0ZGluLCBwLnN0ZG91dCkKCgooY2hpbGRfc3RkaW4sCiBjaGlsZF9zdGRvdXQsCiBjaGlsZF9zdGRlcnIpID0gb3MucG9wZW4zKCJjbWQiLCBtb2RlLCBidWZzaXplKQo9PT4KcCA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsCiAgICAgICAgICBzdGRpbj1QSVBFLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3RkaW4sCiBjaGlsZF9zdGRvdXQsCiBjaGlsZF9zdGRlcnIpID0gKHAuc3RkaW4sIHAuc3Rkb3V0LCBwLnN0ZGVycikKCgooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dF9hbmRfc3RkZXJyKSA9IG9zLnBvcGVuNCgiY21kIiwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSkKPT0+CnAgPSBQb3BlbigiY21kIiwgc2hlbGw9VHJ1ZSwgYnVmc2l6ZT1idWZzaXplLAogICAgICAgICAgc3RkaW49UElQRSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1TVERPVVQsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dF9hbmRfc3RkZXJyKSA9IChwLnN0ZGluLCBwLnN0ZG91dCkKCk9uIFVuaXgsIG9zLnBvcGVuMiwgb3MucG9wZW4zIGFuZCBvcy5wb3BlbjQgYWxzbyBhY2NlcHQgYSBzZXF1ZW5jZSBhcwp0aGUgY29tbWFuZCB0byBleGVjdXRlLCBpbiB3aGljaCBjYXNlIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZApkaXJlY3RseSB0byB0aGUgcHJvZ3JhbSB3aXRob3V0IHNoZWxsIGludGVydmVudGlvbi4gIFRoaXMgdXNhZ2UgY2FuIGJlCnJlcGxhY2VkIGFzIGZvbGxvd3M6CgooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dCkgPSBvcy5wb3BlbjIoWyIvYmluL2xzIiwgIi1sIl0sIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplKQo9PT4KcCA9IFBvcGVuKFsiL2Jpbi9scyIsICItbCJdLCBidWZzaXplPWJ1ZnNpemUsIHN0ZGluPVBJUEUsIHN0ZG91dD1QSVBFKQooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dCkgPSAocC5zdGRpbiwgcC5zdGRvdXQpCgpSZXR1cm4gY29kZSBoYW5kbGluZyB0cmFuc2xhdGVzIGFzIGZvbGxvd3M6CgpwaXBlID0gb3MucG9wZW4oImNtZCIsICd3JykKLi4uCnJjID0gcGlwZS5jbG9zZSgpCmlmIHJjIGlzIG5vdCBOb25lIGFuZCByYyAlIDI1NjoKICAgIHByaW50ICJUaGVyZSB3ZXJlIHNvbWUgZXJyb3JzIgo9PT4KcHJvY2VzcyA9IFBvcGVuKCJjbWQiLCAndycsIHNoZWxsPVRydWUsIHN0ZGluPVBJUEUpCi4uLgpwcm9jZXNzLnN0ZGluLmNsb3NlKCkKaWYgcHJvY2Vzcy53YWl0KCkgIT0gMDoKICAgIHByaW50ICJUaGVyZSB3ZXJlIHNvbWUgZXJyb3JzIgoKClJlcGxhY2luZyBwb3BlbjIuKgotLS0tLS0tLS0tLS0tLS0tLS0KKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gcG9wZW4yLnBvcGVuMigic29tZXN0cmluZyIsIGJ1ZnNpemUsIG1vZGUpCj09PgpwID0gUG9wZW4oWyJzb21lc3RyaW5nIl0sIHNoZWxsPVRydWUsIGJ1ZnNpemU9YnVmc2l6ZQogICAgICAgICAgc3RkaW49UElQRSwgc3Rkb3V0PVBJUEUsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3Rkb3V0LCBjaGlsZF9zdGRpbikgPSAocC5zdGRvdXQsIHAuc3RkaW4pCgpPbiBVbml4LCBwb3BlbjIgYWxzbyBhY2NlcHRzIGEgc2VxdWVuY2UgYXMgdGhlIGNvbW1hbmQgdG8gZXhlY3V0ZSwgaW4Kd2hpY2ggY2FzZSBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHByb2dyYW0gd2l0aG91dApzaGVsbCBpbnRlcnZlbnRpb24uICBUaGlzIHVzYWdlIGNhbiBiZSByZXBsYWNlZCBhcyBmb2xsb3dzOgoKKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gcG9wZW4yLnBvcGVuMihbIm15Y21kIiwgIm15YXJnIl0sIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSkKPT0+CnAgPSBQb3BlbihbIm15Y21kIiwgIm15YXJnIl0sIGJ1ZnNpemU9YnVmc2l6ZSwKICAgICAgICAgIHN0ZGluPVBJUEUsIHN0ZG91dD1QSVBFLCBjbG9zZV9mZHM9VHJ1ZSkKKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gKHAuc3Rkb3V0LCBwLnN0ZGluKQoKVGhlIHBvcGVuMi5Qb3BlbjMgYW5kIHBvcGVuMi5Qb3BlbjQgYmFzaWNhbGx5IHdvcmtzIGFzIHN1YnByb2Nlc3MuUG9wZW4sCmV4Y2VwdCB0aGF0OgoKKiBzdWJwcm9jZXNzLlBvcGVuIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIGV4ZWN1dGlvbiBmYWlscwoqIHRoZSBjYXB0dXJlc3RkZXJyIGFyZ3VtZW50IGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0ZGVyciBhcmd1bWVudC4KKiBzdGRpbj1QSVBFIGFuZCBzdGRvdXQ9UElQRSBtdXN0IGJlIHNwZWNpZmllZC4KKiBwb3BlbjIgY2xvc2VzIGFsbCBmaWxlZGVzY3JpcHRvcnMgYnkgZGVmYXVsdCwgYnV0IHlvdSBoYXZlIHRvIHNwZWNpZnkKICBjbG9zZV9mZHM9VHJ1ZSB3aXRoIHN1YnByb2Nlc3MuUG9wZW4uCmn/////TnQFAAAAd2luMzJ0EgAAAENhbGxlZFByb2Nlc3NFcnJvcmMAAAAAAAAAAAIAAABCAAAAcyMAAABlAABaAQBkAABaAgBkAwBkAQCEAQBaBABkAgCEAABaBQBSUygEAAAAc/0AAABUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHByb2Nlc3MgcnVuIGJ5IGNoZWNrX2NhbGwoKSBvcgogICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgYwQAAAAEAAAAAgAAAEMAAABzHwAAAHwBAHwAAF8AAHwCAHwAAF8BAHwDAHwAAF8CAGQAAFMoAQAAAE4oAwAAAHQKAAAAcmV0dXJuY29kZXQDAAAAY21kdAYAAABvdXRwdXQoBAAAAHQEAAAAc2VsZlICAAAAUgMAAABSBAAAACgAAAAAKAAAAABzUgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHl0CAAAAF9faW5pdF9fmAEAAHMGAAAAAAEJAQkBYwEAAAABAAAAAwAAAEMAAABzFAAAAGQBAHwAAGoAAHwAAGoBAGYCABZTKAIAAABOcy0AAABDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQoAgAAAFIDAAAAUgIAAAAoAQAAAFIFAAAAKAAAAAAoAAAAAHNSAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQHAAAAX19zdHJfX5wBAABzAgAAAAABTigGAAAAdAgAAABfX25hbWVfX3QKAAAAX19tb2R1bGVfX3QHAAAAX19kb2NfX3QEAAAATm9uZVIGAAAAUgcAAAAoAAAAACgAAAAAKAAAAABzUgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSAQAAAJIBAABzBgAAAAYFBgEMBHQLAAAAU1RBUlRVUElORk9jAAAAAAAAAAABAAAAQgAAAHMmAAAAZQAAWgEAZAAAWgIAZAEAWgQAZAEAWgUAZAEAWgYAZAAAWgcAUlMoAgAAAGkAAAAATigIAAAAUggAAABSCQAAAHQHAAAAZHdGbGFnc1ILAAAAdAkAAABoU3RkSW5wdXR0CgAAAGhTdGRPdXRwdXR0CQAAAGhTdGRFcnJvcnQLAAAAd1Nob3dXaW5kb3coAAAAACgAAAAAKAAAAABzUgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSDAAAAKQBAABzCgAAAAYBBgEGAQYBBgF0CgAAAHB5d2ludHlwZXNjAAAAAAAAAAABAAAAQgAAAHMOAAAAZQAAWgEAZQIAWgMAUlMoAAAAACgEAAAAUggAAABSCQAAAHQHAAAASU9FcnJvcnQFAAAAZXJyb3IoAAAAACgAAAAAKAAAAABzUgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSEgAAAKoBAABzAgAAAAYBdAQAAABwb2xsdAgAAABQSVBFX0JVRmkAAgAAdAUAAABQb3BlbnQEAAAAUElQRXQGAAAAU1RET1VUdAQAAABjYWxsdAoAAABjaGVja19jYWxsdAwAAABjaGVja19vdXRwdXQoCAAAAHQSAAAAQ1JFQVRFX05FV19DT05TT0xFdBgAAABDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVB0EAAAAFNURF9JTlBVVF9IQU5ETEV0EQAAAFNURF9PVVRQVVRfSEFORExFdBAAAABTVERfRVJST1JfSEFORExFdAcAAABTV19ISURFdBQAAABTVEFSVEZfVVNFU1RESEFORExFU3QUAAAAU1RBUlRGX1VTRVNIT1dXSU5ET1dSHQAAAFIeAAAAUh8AAABSIAAAAFIhAAAAUiIAAABSIwAAAFIkAAAAdAsAAABTQ19PUEVOX01BWGkAAQAAYwAAAAACAAAABgAAAEMAAABzXwAAAHhYAHQAAB5EXU8AfQAAfAAAagEAZAEAdAIAagMAgwABfQEAfAEAZAAAawkAcggAeREAdAAAagUAfAAAgwEAAVdxVwAEdAYAawoAclMAAQEBcVcAWHEIAHEIAFdkAABTKAIAAABOdAoAAABfZGVhZHN0YXRlKAcAAAB0BwAAAF9hY3RpdmV0DgAAAF9pbnRlcm5hbF9wb2xsdAMAAABzeXN0BgAAAG1heGludFILAAAAdAYAAAByZW1vdmV0CgAAAFZhbHVlRXJyb3IoAgAAAHQEAAAAaW5zdHQDAAAAcmVzKAAAAAAoAAAAAHNSAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQIAAAAX2NsZWFudXDMAQAAcw4AAAAAAQ4BFQEMAQMBEQENA2n+////YwEAAAADAAAABgAAAEcAAABzVgAAAHhPAHQAAHJRAHkOAHwAAHwBAIwAAFNXcQMABHQBAHQCAGYCAGsKAHJNAAF9AgABfAIAagMAdAMAagQAawIAckcAcQMAbgAAggAAcQMAWHEDAFdkAABTKAEAAABOKAUAAAB0BAAAAFRydWV0BwAAAE9TRXJyb3JSEwAAAHQFAAAAZXJybm90BQAAAEVJTlRSKAMAAAB0BAAAAGZ1bmN0BAAAAGFyZ3N0AQAAAGUoAAAAACgAAAAAc1IAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dBEAAABfZWludHJfcmV0cnlfY2FsbNsBAABzDgAAAAABCQEDAQ4BFQESAQYBYwAAAAAFAAAABQAAAEMAAABzzgAAAGkKAGQBAGQCADZkAwBkBAA2ZAUAZAYANmQHAGQIADZkCQBkCgA2ZAsAZAwANmQNAGQOADZkDwBkEAA2ZBEAZBIANmQTAGQUADZ9AABnAAB9AQB4UAB8AABqAACDAABEXUIAXAIAfQIAfQMAdAEAdAIAagMAfAIAgwIAfQQAfAQAZBUAawQAcl8AfAEAagQAZBYAfAMAfAQAFBeDAQABcV8AcV8AV3giAHQCAGoFAERdFwB9AwB8AQBqBABkFwB8AwAXgwEAAXGvAFd8AQBTKBgAAABzbgAAAFJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAogICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMudAEAAABkdAUAAABkZWJ1Z3QBAAAAT3QIAAAAb3B0aW1pemV0AQAAAEJ0EwAAAGRvbnRfd3JpdGVfYnl0ZWNvZGV0AQAAAHN0DAAAAG5vX3VzZXJfc2l0ZXQBAAAAU3QHAAAAbm9fc2l0ZXQBAAAARXQSAAAAaWdub3JlX2Vudmlyb25tZW50dAEAAAB2dAcAAAB2ZXJib3NldAEAAABidA0AAABieXRlc193YXJuaW5ndAEAAABSdBIAAABoYXNoX3JhbmRvbWl6YXRpb250AQAAADN0DAAAAHB5M2tfd2FybmluZ2kAAAAAdAEAAAAtcwIAAAAtVygGAAAAdAUAAABpdGVtc3QHAAAAZ2V0YXR0clIpAAAAdAUAAABmbGFnc3QGAAAAYXBwZW5kdAsAAAB3YXJub3B0aW9ucygFAAAAdAwAAABmbGFnX29wdF9tYXBSNQAAAHQEAAAAZmxhZ3QDAAAAb3B0UkQAAAAoAAAAACgAAAAAc1IAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dBwAAABfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdz6QEAAHMmAAAAAAMDAQcDBwEHAQcBBwEHAQcBBwEHAQoCBgEZARIBDAEcARABFQFjAAAAAAIAAAADAAAATwAAAHMTAAAAdAAAfAAAfAEAjgAAagEAgwAAUygBAAAAc9MAAABSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCgogICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CgogICAgcmV0Y29kZSA9IGNhbGwoWyJscyIsICItbCJdKQogICAgKAIAAABSFwAAAHQEAAAAd2FpdCgCAAAAdAkAAABwb3BlbmFyZ3N0BgAAAGt3YXJncygAAAAAKAAAAABzUgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSGgAAAAQCAABzAgAAAAAIYwAAAAAEAAAAAwAAAE8AAABzUwAAAHQAAHwAAHwBAI4AAH0CAHwCAHJPAHwBAGoBAGQBAIMBAH0DAHwDAGQDAGsIAHI9AHwAAGQCABl9AwBuAAB0AwB8AgB8AwCDAgCCAQBuAABkAgBTKAQAAABzUwEAAFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gIElmCiAgICB0aGUgZXhpdCBjb2RlIHdhcyB6ZXJvIHRoZW4gcmV0dXJuLCBvdGhlcndpc2UgcmFpc2UKICAgIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZSBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUKICAgIHJldHVybiBjb2RlIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KCiAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKCiAgICBjaGVja19jYWxsKFsibHMiLCAiLWwiXSkKICAgIFI1AAAAaQAAAABOKAQAAABSGgAAAHQDAAAAZ2V0UgsAAABSAQAAACgEAAAAUlcAAABSWAAAAHQHAAAAcmV0Y29kZVIDAAAAKAAAAAAoAAAAAHNSAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIbAAAADwIAAHMOAAAAAAoPAQYBDwEMAQ0BEgFjAAAAAAcAAAAFAAAATwAAAHOYAAAAZAEAfAEAawYAchsAdAAAZAIAgwEAggEAbgAAdAEAZAEAdAIAfAAAfAEAjgABfQIAfAIAagMAgwAAXAIAfQMAfQQAfAIAagQAgwAAfQUAfAUAcpQAfAEAagUAZAMAgwEAfQYAfAYAZAYAawgAcnwAfAAAZAQAGX0GAG4AAHQHAHwFAHwGAGQFAHwDAIMCAYIBAG4AAHwDAFMoBwAAAHMBAwAAUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCgogICAgSWYgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlCiAgICBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUKICAgIGF0dHJpYnV0ZSBhbmQgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgoKICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgoKICAgID4+PiBjaGVja19vdXRwdXQoWyJscyIsICItbCIsICIvZGV2L251bGwiXSkKICAgICdjcnctcnctcnctIDEgcm9vdCByb290IDEsIDMgT2N0IDE4ICAyMDA3IC9kZXYvbnVsbFxuJwoKICAgIFRoZSBzdGRvdXQgYXJndW1lbnQgaXMgbm90IGFsbG93ZWQgYXMgaXQgaXMgdXNlZCBpbnRlcm5hbGx5LgogICAgVG8gY2FwdHVyZSBzdGFuZGFyZCBlcnJvciBpbiB0aGUgcmVzdWx0LCB1c2Ugc3RkZXJyPVNURE9VVC4KCiAgICA+Pj4gY2hlY2tfb3V0cHV0KFsiL2Jpbi9zaCIsICItYyIsCiAgICAuLi4gICAgICAgICAgICAgICAibHMgLWwgbm9uX2V4aXN0ZW50X2ZpbGUgOyBleGl0IDAiXSwKICAgIC4uLiAgICAgICAgICAgICAgc3RkZXJyPVNURE9VVCkKICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKICAgIHQGAAAAc3Rkb3V0czMAAABzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi5SNQAAAGkAAAAAUgQAAABOKAgAAABSLAAAAFIXAAAAUhgAAAB0CwAAAGNvbW11bmljYXRlUhUAAABSWQAAAFILAAAAUgEAAAAoBwAAAFJXAAAAUlgAAAB0BwAAAHByb2Nlc3NSBAAAAHQKAAAAdW51c2VkX2VyclJaAAAAUgMAAAAoAAAAACgAAAAAc1IAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhv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