{ "auto_complete": { "selected_items": [ [ "eks", "local.eks_subnets" ], [ "maxw", "rtgMaxWh" ], [ "IEEE", "IEEE2030p5TimeStamp" ], [ "datetime", "datetime" ], [ "classm", "classmethod" ], [ "tsdbl", "tsdb_listener_image" ], [ "DERType", "DERType" ], [ "Chart", "ChartSeries" ], [ "device", "device_errors" ], [ "Devicev2", "DevicesV2" ], [ "hp", "local.hp_flexgw_domain" ], [ "domain", "local.hp_flexgw_domain" ], [ "cluster", "local.cluster_domain_name" ], [ "statek", "state_key_bedrock" ], [ "statekey", "state_key_aws" ], [ "apimdomain", "local.apim_domain_test" ], [ "start", "start_as_current_span" ], [ "trace", "trace" ], [ "ACtion", "ActionT" ], [ "background", "background_tasks" ], [ "BackGroun", "BackgroundTasks" ], [ "datacla", "dataclass" ], [ "Assura", "AssuranceEventRoute" ], [ "status", "status_code=" ], [ "assu", "assurance_stop" ], [ "AssuranceSt", "AssuranceStartData" ], [ "tasks_", "tasks_finished" ], [ "tasks_fini", "tasks_finished" ], [ "genlimi", "genLimitLow" ], [ "gen", "genLimitHigh" ], [ "genlim", "genLimitLow" ], [ "LFDI", "LFDI" ], [ "targetSite", "targetSiteRealPowerLow" ], [ "AssuranceSi", "AssuranceSiteCTExportLimitData" ], [ "POST_", "ASSURANCE_DEFAULT_POLL_POST_RATE" ], [ "target", "targetSiteRealPowerHigh" ], [ "AssuranceSite", "AssuranceSiteCTExportLimitData" ], [ "high", "highTargetMin" ], [ "con", "controlDuration" ], [ "log", "lowTargetMax" ], [ "lowtar", "lowTargetMin" ], [ "AssuranceSiteCTGen", "AssuranceSiteCTGenLimitData" ], [ "dict", "Dict" ], [ "ControlPlaneCloud", "ControlPlaneCloudEvents" ], [ "AsyncIterator", "AsyncIterator" ], [ "event", "EventRoute" ], [ "controlpl", "control_plane_events" ], [ "check_", "check_assurance_running" ], [ "check_ass", "check_assurance_test_running" ], [ "D", "DefaultDERControlResource" ], [ "SiteC", "SiteCTGenerationLimit" ], [ "agg", "aggregator_lfdi" ], [ "lf", "aggregator_lfdi" ], [ "ASSUR", "ASSURANCE_TELEMETRY" ], [ "assurance", "assurance_upstream" ], [ "AssuranceTelem", "AssuranceTelemetry" ], [ "start_ass", "start_assurance_genlimit" ], [ "AssuranceSiteCT", "AssuranceSiteCTGenerationLimitTelemetry" ], [ "AssuranceSiteCTExpo", "AssuranceSiteCTExportLimitTelemetry" ], [ "AssuranceSiteCt", "AssuranceSiteCTExportLimitData" ], [ "Asurancesitectgen", "AssuranceSiteCTGenLimitData" ], [ "AssuranceSiteCTG", "AssuranceSiteCTGenLimitTelemetry" ], [ "wait", "wait_for" ], [ "Assurance", "AssuranceRSPsTelemetry" ], [ "final", "final_control_mrid_fn" ], [ "third_", "third_control_mrid_fn" ], [ "third", "third_control_mrid_fn" ], [ "ready", "ready_for_criteria_a" ], [ "control_", "control_cancelled_fn" ], [ "get_ini", "get_initial_control_mrids_fn" ], [ "AssuranceMeasure", "AssuranceMeasurementsTelemetry" ], [ "notifi", "notified_class" ], [ "ready_for_c", "ready_for_criteria_c" ], [ "mRID", "mRIDType" ], [ "exp", "expected_mrid" ], [ "Expected", "expected_status" ], [ "expected", "expected_status" ], [ "handl", "handle_criteria_c" ], [ "ready_for_criteria", "ready_for_criteria_b" ], [ "meet", "meet_criteria_b" ], [ "consumer", "_consumer_ready" ], [ "r", "_ready" ], [ "ListenerAr", "ListenerArgT" ], [ "Listen", "ListenerArgT" ], [ "ListenerArg", "ListenerArgT" ], [ "listen", "listener_config" ], [ "listener", "listener_config" ], [ "KAFKA", "KAFKA_STATIC_GROUPS" ], [ "DERControlList", "DERControlList" ], [ "lfdi", "lfdi=" ], [ "Topics", "Topics" ], [ "asynccontextma", "asynccontextmanager" ], [ "DataplaneD", "DataPlaneDERControlListEvent" ], [ "DATAP", "DataPlaneDefaultDERControlEvent" ], [ "DAT", "DATAPLANE_DEFAULT_CONTROLS" ], [ "DefaultDERCon", "DefaultDERControl" ], [ "Dercontrollist", "DERControlList" ], [ "dataplane", "data_plane_api_types" ], [ "DefaultDerContrl", "DefaultDERControlResource" ], [ "DefaultDER", "DefaultDERControlResource" ], [ "UPSTREA", "UpstreamType" ], [ "CONT", "CONTROLS_DATAPLANE" ], [ "ControlPlaneCon", "ControlPlaneControlsCloudEvent" ], [ "ControlPlaneEvent", "ControlPlaneCloudEvent" ], [ "listener_", "listener_arg_t" ], [ "Listener", "ListenerFn" ], [ "list", "listener_arg_t" ], [ "issubcl", "issubclass" ], [ "DERContolRe", "DERControlResponseEvent" ], [ "Teleme", "TelemetryReadingList" ], [ "control", "control_plane_events" ], [ "AssuranceTele", "AssuranceTelemetry" ], [ "Typev", "TypeVar" ], [ "Assuranc", "AssuranceTelemetries" ], [ "sta", "start_as_current_span" ], [ "defaultt", "default_teardown" ], [ "AssuranceRun", "AssuranceRunFn" ], [ "span", "start_as_current_span" ], [ "Redis", "Redis" ], [ "Valey", "Valkey" ], [ "AssuranceRsps", "AssuranceRSPsTelemetry" ], [ "redi", "RedisConnectionAsync" ], [ "Self", "Self" ], [ "AssuranceTe", "AssuranceTelemetry" ], [ "defaultf", "default_factory=" ], [ "field", "field" ], [ "datacl", "dataclass" ], [ "run_assurance", "run_assurance_rsps" ] ] }, "buffers": [ { "file": "src/main.rs", "settings": { "buffer_size": 5364, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ [ 276, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACrFgAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgaGFsOjp7CiAgICAgICAgZ3Bpbzo6e2dwaW9hLCBncGlvYTo6UEEwLCBncGlvYywgRWRnZSwgSW5wdXR9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uIHBpbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248UEEwPElucHV0Pj4+PiA9IE11dGV4OjpuZXcoUmVmQ2VsbDo6bmV3KE5vbmUpKTsKLy8vIFNldCBieSBFWFRJMCBvbiBhIHByZXNzIGVkZ2UsIGNvbnN1bWVkIGJ5IHRoZSBhdWRpbyBsb29wLgpzdGF0aWMgVE9HR0xFX1JFUTogQXRvbWljQm9vbCA9IEF0b21pY0Jvb2w6Om5ldyhmYWxzZSk7Cgp0eXBlIEF1ZGlvT3V0ID0gSTJzVHJhbnNmZXI8STJzPHBhYzo6U1BJMz4sIE1hc3RlciwgVHJhbnNtaXQsIFBoaWxpcHMsIERhdGExNkNoYW5uZWwxNj47CgovLy8gSTJTMyBtYXN0ZXIgdHJhbnNtaXQsIDE2LWJpdCBzdGVyZW8sIE1DTEsgb3V0IGZvciB0aGUgY29kZWMuCmZuIGF1ZGlvX291dCgKICAgIHNwaTogcGFjOjpTUEkzLAogICAgcGluczogKGdwaW9hOjpQQTQsIGdwaW9jOjpQQzEwLCBPcHRpb248Z3Bpb2M6OlBDNz4sIGdwaW9jOjpQQzEyKSwKICAgIHJjYzogJm11dCBSY2MsCikgLT4gQXVkaW9PdXQgewogICAgbGV0IGkycyA9IEkyczo6bmV3KHNwaSwgcGlucywgcmNjKTsKICAgIGxldCBjb25maWcgPSBJMnNUcmFuc2ZlckNvbmZpZzo6bmV3X21hc3RlcigpCiAgICAgICAgLnRyYW5zbWl0KCkKICAgICAgICAuc3RhbmRhcmQoUGhpbGlwcykKICAgICAgICAuZGF0YV9mb3JtYXQoRGF0YTE2Q2hhbm5lbDE2KQogICAgICAgIC5tYXN0ZXJfY2xvY2sodHJ1ZSkKICAgICAgICAucmVxdWVzdF9mcmVxdWVuY3koU0FNUExFX1JBVEVfSFopOwogICAgSTJzVHJhbnNmZXI6Om5ldyhpMnMsIGNvbmZpZykKfQoKLy8vIFNhbXBsZSBgaWAgKG9mIFNBTVBMRVNfUEVSX0NZQ0xFKSBvZiB0aGUgc2F3dG9vdGg6IGEgbGluZWFyIHJhbXAgZnJvbQovLy8gLUFNUExJVFVERSB0byArQU1QTElUVURFLCB3cmFwcGluZyBlYWNoIGN5Y2xlLgpmbiBzYXdfc2FtcGxlKGk6IHUzMikgLT4gaTE2IHsKICAgIChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNgp9CgojW2VudHJ5XQpmbiBtYWluKCkgLT4gISB7CiAgICBsZXQgY3AgPSBjb3J0ZXhfbTo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKICAgIGxldCBtdXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSk6IHJpc2luZy1lZGdlIGludGVycnVwdCBvbiBFWFRJMC4KICAgIGxldCBtdXQgc3lzY2ZnID0gcC5TWVNDRkcuY29uc3RyYWluKCZtdXQgcmNjKTsKICAgIGxldCBtdXQgYnV0dG9uID0gZ3Bpb2EucGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICBidXR0b24ubWFrZV9pbnRlcnJ1cHRfc291cmNlKCZtdXQgc3lzY2ZnKTsKICAgIGJ1dHRvbi50cmlnZ2VyX29uX2VkZ2UoJm11dCBwLkVYVEksIEVkZ2U6OlJpc2luZyk7CiAgICBidXR0b24uZW5hYmxlX2ludGVycnVwdCgmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gSGVhcnRiZWF0IExFRCAoYmx1ZSwgUEQxNSk6IHRvZ2dsZXMgb25jZSBhIHNlY29uZCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXIgYXR0YWNoZWQuCiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGdwaW9kLnBkMTUuaW50b19wdXNoX3B1bGxfb3V0cHV0KCk7CgogICAgbGV0IG11dCBpID0gMDsKICAgIGxldCBtdXQgZnJhbWVzOiB1MzIgPSAwOwogICAgbGV0IG11dCBvbiA9IHRydWU7CiAgICBsZXQgbXV0IGhvbGRvZmY6IHUzMiA9IDA7CiAgICBsb29wIHsKICAgICAgICAvLyBDb25zdW1lIGFueSBwcmVzcyBmbGFnIGV2ZXJ5IGZyYW1lIChzbyBib3VuY2UgZHVyaW5nIHRoZSBob2xkLW9mZgogICAgICAgIC8vIHdpbmRvdyBpcyBkaXNjYXJkZWQpLCBhcHBseSBpdCBvbmx5IG91dHNpZGUgdGhlIHdpbmRvdy4KICAgICAgICBob2xkb2ZmID0gaG9sZG9mZi5zYXR1cmF0aW5nX3N1YigxKTsKICAgICAgICBpZiBUT0dHTEVfUkVRLnN3YXAoZmFsc2UsIE9yZGVyaW5nOjpBY3FSZWwpICYmIGhvbGRvZmYgPT0gMCB7CiAgICAgICAgICAgIG9uID0gIW9uOwogICAgICAgICAgICBob2xkb2ZmID0gREVCT1VOQ0VfU0FNUExFUzsKICAgICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAgICAgfQoKICAgICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAgICAgICAgIGZhbHNlID0+IDAsCiAgICAgICAgfTsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgICAgIGZyYW1lcyArPSAxOwogICAgICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgICAgICB9CiAgICB9Cn0KCiNbaW50ZXJydXB0XQpmbiBFWFRJMCgpIHsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCB7CiAgICAgICAgaWYgbGV0IFNvbWUocGluKSA9IEJVVFRPTi5ib3Jyb3coY3MpLmJvcnJvd19tdXQoKS5hc19tdXQoKSB7CiAgICAgICAgICAgIHBpbi5jbGVhcl9pbnRlcnJ1cHRfcGVuZGluZ19iaXQoKTsKICAgICAgICB9CiAgICB9KTsKICAgIFRPR0dMRV9SRVEuc3RvcmUodHJ1ZSwgT3JkZXJpbmc6OlJlbGVhc2UpOwp9CgAAAAAAAAAA3RYAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsNAAAAAAAAfA0AAAAAAAAAAAAAAADwvw" ], [ 277, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADeFgAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgaGFsOjp7CiAgICAgICAgZ3Bpbzo6e2dwaW9hLCBncGlvYTo6UEEwLCBncGlvYywgRWRnZSwgSW5wdXR9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uIHBpbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248UEEwPElucHV0Pj4+PiA9IE11dGV4OjpuZXcoUmVmQ2VsbDo6bmV3KE5vbmUpKTsKLy8vIFNldCBieSBFWFRJMCBvbiBhIHByZXNzIGVkZ2UsIGNvbnN1bWVkIGJ5IHRoZSBhdWRpbyBsb29wLgpzdGF0aWMgVE9HR0xFX1JFUTogQXRvbWljQm9vbCA9IEF0b21pY0Jvb2w6Om5ldyhmYWxzZSk7Cgp0eXBlIEF1ZGlvT3V0ID0gSTJzVHJhbnNmZXI8STJzPHBhYzo6U1BJMz4sIE1hc3RlciwgVHJhbnNtaXQsIFBoaWxpcHMsIERhdGExNkNoYW5uZWwxNj47CgovLy8gSTJTMyBtYXN0ZXIgdHJhbnNtaXQsIDE2LWJpdCBzdGVyZW8sIE1DTEsgb3V0IGZvciB0aGUgY29kZWMuCmZuIGF1ZGlvX291dCgKICAgIHNwaTogcGFjOjpTUEkzLAogICAgcGluczogKGdwaW9hOjpQQTQsIGdwaW9jOjpQQzEwLCBPcHRpb248Z3Bpb2M6OlBDNz4sIGdwaW9jOjpQQzEyKSwKICAgIHJjYzogJm11dCBSY2MsCikgLT4gQXVkaW9PdXQgewogICAgbGV0IGkycyA9IEkyczo6bmV3KHNwaSwgcGlucywgcmNjKTsKICAgIGxldCBjb25maWcgPSBJMnNUcmFuc2ZlckNvbmZpZzo6bmV3X21hc3RlcigpCiAgICAgICAgLnRyYW5zbWl0KCkKICAgICAgICAuc3RhbmRhcmQoUGhpbGlwcykKICAgICAgICAuZGF0YV9mb3JtYXQoRGF0YTE2Q2hhbm5lbDE2KQogICAgICAgIC5tYXN0ZXJfY2xvY2sodHJ1ZSkKICAgICAgICAucmVxdWVzdF9mcmVxdWVuY3koU0FNUExFX1JBVEVfSFopOwogICAgSTJzVHJhbnNmZXI6Om5ldyhpMnMsIGNvbmZpZykKfQoKLy8vIFNhbXBsZSBgaWAgKG9mIFNBTVBMRVNfUEVSX0NZQ0xFKSBvZiB0aGUgc2F3dG9vdGg6IGEgbGluZWFyIHJhbXAgZnJvbQovLy8gLUFNUExJVFVERSB0byArQU1QTElUVURFLCB3cmFwcGluZyBlYWNoIGN5Y2xlLgpmbiBzYXdfc2FtcGxlKGk6IHUzMikgLT4gaTE2IHsKICAgIChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNgp9CgojW2VudHJ5XQpmbiBtYWluKCkgLT4gISB7CiAgICBsZXQgY3AgPSBjb3J0ZXhfbTo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKICAgIGxldCBtdXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSk6IHJpc2luZy1lZGdlIGludGVycnVwdCBvbiBFWFRJMC4KICAgIGxldCBtdXQgc3lzY2ZnID0gcC5TWVNDRkcuY29uc3RyYWluKCZtdXQgcmNjKTsKICAgIGxldCBtdXQgYnV0dG9uID0gZ3Bpb2EucGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICBidXR0b24ubWFrZV9pbnRlcnJ1cHRfc291cmNlKCZtdXQgc3lzY2ZnKTsKICAgIGJ1dHRvbi50cmlnZ2VyX29uX2VkZ2UoJm11dCBwLkVYVEksIEVkZ2U6OlJpc2luZyk7CiAgICBidXR0b24uZW5hYmxlX2ludGVycnVwdCgmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gSGVhcnRiZWF0IExFRCAoYmx1ZSwgUEQxNSk6IHRvZ2dsZXMgb25jZSBhIHNlY29uZCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXIgYXR0YWNoZWQuCiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGdwaW9kLnBkMTUuaW50b19wdXNoX3B1bGxfb3V0cHV0KCk7CgogICAgbGV0IG11dCBpID0gMDsKICAgIGxldCBtdXQgZnJhbWVzOiB1MzIgPSAwOwogICAgbGV0IG11dCBvbiA9IGZhbHNlOyAvLyBzaWxlbnQgYXQgYm9vdDsgVVNFUiBidXR0b24gdG9nZ2xlcyB0aGUgc2F3IG9uCiAgICBsZXQgbXV0IGhvbGRvZmY6IHUzMiA9IDA7CiAgICBsb29wIHsKICAgICAgICAvLyBDb25zdW1lIGFueSBwcmVzcyBmbGFnIGV2ZXJ5IGZyYW1lIChzbyBib3VuY2UgZHVyaW5nIHRoZSBob2xkLW9mZgogICAgICAgIC8vIHdpbmRvdyBpcyBkaXNjYXJkZWQpLCBhcHBseSBpdCBvbmx5IG91dHNpZGUgdGhlIHdpbmRvdy4KICAgICAgICBob2xkb2ZmID0gaG9sZG9mZi5zYXR1cmF0aW5nX3N1YigxKTsKICAgICAgICBpZiBUT0dHTEVfUkVRLnN3YXAoZmFsc2UsIE9yZGVyaW5nOjpBY3FSZWwpICYmIGhvbGRvZmYgPT0gMCB7CiAgICAgICAgICAgIG9uID0gIW9uOwogICAgICAgICAgICBob2xkb2ZmID0gREVCT1VOQ0VfU0FNUExFUzsKICAgICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAgICAgfQoKICAgICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAgICAgICAgIGZhbHNlID0+IDAsCiAgICAgICAgfTsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgICAgIGZyYW1lcyArPSAxOwogICAgICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgICAgICB9CiAgICB9Cn0KCiNbaW50ZXJydXB0XQpmbiBFWFRJMCgpIHsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCB7CiAgICAgICAgaWYgbGV0IFNvbWUocGluKSA9IEJVVFRPTi5ib3Jyb3coY3MpLmJvcnJvd19tdXQoKS5hc19tdXQoKSB7CiAgICAgICAgICAgIHBpbi5jbGVhcl9pbnRlcnJ1cHRfcGVuZGluZ19iaXQoKTsKICAgICAgICB9CiAgICB9KTsKICAgIFRPR0dMRV9SRVEuc3RvcmUodHJ1ZSwgT3JkZXJpbmc6OlJlbGVhc2UpOwp9CgAAAAAAAAAAXRcAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsNAAAAAAAAfA0AAAAAAAAAAAAAAADwvw" ], [ 278, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAABeFwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgaGFsOjp7CiAgICAgICAgZ3Bpbzo6e2dwaW9hLCBncGlvYTo6UEEwLCBncGlvYywgRWRnZSwgSW5wdXR9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uIHBpbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248UEEwPElucHV0Pj4+PiA9IE11dGV4OjpuZXcoUmVmQ2VsbDo6bmV3KE5vbmUpKTsKLy8vIFNldCBieSBFWFRJMCBvbiBhIHByZXNzIGVkZ2UsIGNvbnN1bWVkIGJ5IHRoZSBhdWRpbyBsb29wLgpzdGF0aWMgVE9HR0xFX1JFUTogQXRvbWljQm9vbCA9IEF0b21pY0Jvb2w6Om5ldyhmYWxzZSk7Cgp0eXBlIEF1ZGlvT3V0ID0gSTJzVHJhbnNmZXI8STJzPHBhYzo6U1BJMz4sIE1hc3RlciwgVHJhbnNtaXQsIFBoaWxpcHMsIERhdGExNkNoYW5uZWwxNj47CgovLy8gSTJTMyBtYXN0ZXIgdHJhbnNtaXQsIDE2LWJpdCBzdGVyZW8sIE1DTEsgb3V0IGZvciB0aGUgY29kZWMuCmZuIGF1ZGlvX291dCgKICAgIHNwaTogcGFjOjpTUEkzLAogICAgcGluczogKGdwaW9hOjpQQTQsIGdwaW9jOjpQQzEwLCBPcHRpb248Z3Bpb2M6OlBDNz4sIGdwaW9jOjpQQzEyKSwKICAgIHJjYzogJm11dCBSY2MsCikgLT4gQXVkaW9PdXQgewogICAgbGV0IGkycyA9IEkyczo6bmV3KHNwaSwgcGlucywgcmNjKTsKICAgIGxldCBjb25maWcgPSBJMnNUcmFuc2ZlckNvbmZpZzo6bmV3X21hc3RlcigpCiAgICAgICAgLnRyYW5zbWl0KCkKICAgICAgICAuc3RhbmRhcmQoUGhpbGlwcykKICAgICAgICAuZGF0YV9mb3JtYXQoRGF0YTE2Q2hhbm5lbDE2KQogICAgICAgIC5tYXN0ZXJfY2xvY2sodHJ1ZSkKICAgICAgICAucmVxdWVzdF9mcmVxdWVuY3koU0FNUExFX1JBVEVfSFopOwogICAgSTJzVHJhbnNmZXI6Om5ldyhpMnMsIGNvbmZpZykKfQoKLy8vIFNhbXBsZSBgaWAgKG9mIFNBTVBMRVNfUEVSX0NZQ0xFKSBvZiB0aGUgc2F3dG9vdGg6IGEgbGluZWFyIHJhbXAgZnJvbQovLy8gLUFNUExJVFVERSB0byArQU1QTElUVURFLCB3cmFwcGluZyBlYWNoIGN5Y2xlLgpmbiBzYXdfc2FtcGxlKGk6IHUzMikgLT4gaTE2IHsKICAgIChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNgp9CgojW2VudHJ5XQpmbiBtYWluKCkgLT4gISB7CiAgICBsZXQgY3AgPSBjb3J0ZXhfbTo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKICAgIGxldCBtdXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSk6IHJpc2luZy1lZGdlIGludGVycnVwdCBvbiBFWFRJMC4KICAgIGxldCBtdXQgc3lzY2ZnID0gcC5TWVNDRkcuY29uc3RyYWluKCZtdXQgcmNjKTsKICAgIGxldCBtdXQgYnV0dG9uID0gZ3Bpb2EucGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICBidXR0b24ubWFrZV9pbnRlcnJ1cHRfc291cmNlKCZtdXQgc3lzY2ZnKTsKICAgIGJ1dHRvbi50cmlnZ2VyX29uX2VkZ2UoJm11dCBwLkVYVEksIEVkZ2U6OlJpc2luZyk7CiAgICBidXR0b24uZW5hYmxlX2ludGVycnVwdCgmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gSGVhcnRiZWF0IExFRCAoYmx1ZSwgUEQxNSk6IHRvZ2dsZXMgb25jZSBhIHNlY29uZCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXIgYXR0YWNoZWQuCiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGdwaW9kLnBkMTUuaW50b19wdXNoX3B1bGxfb3V0cHV0KCk7CiAgICAvLyBTYXcgaW5kaWNhdG9yIExFRCAoZ3JlZW4sIFBEMTIpOiBsaXQgd2hpbGUgdGhlIHNhdyBpcyBwbGF5aW5nLgogICAgbGV0IG11dCBzYXdfbGVkID0gZ3Bpb2QucGQxMi5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKTsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIGxvb3AgewogICAgICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgICAgICAgICAgb24gPSAhb247CiAgICAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgICAgICAgICBkZWZtdDo6aW5mbyEoInNhdyB7fSIsIGlmIG9uIHsgIk9OIiB9IGVsc2UgeyAiT0ZGIiB9KTsKICAgICAgICB9CgogICAgICAgIGxldCBzYW1wbGUgPSBtYXRjaCBvbiB7CiAgICAgICAgICAgIHRydWUgPT4gc2F3X3NhbXBsZShpKSwKICAgICAgICAgICAgZmFsc2UgPT4gMCwKICAgICAgICB9OwogICAgICAgIGJsb2NrISh0cmFuc2Zlci53cml0ZSgoc2FtcGxlLCBzYW1wbGUpKSkudW53cmFwKCk7CiAgICAgICAgaSA9IChpICsgMSkgJSBTQU1QTEVTX1BFUl9DWUNMRTsKCiAgICAgICAgZnJhbWVzICs9IDE7CiAgICAgICAgaWYgZnJhbWVzID09IFNBTVBMRV9SQVRFX0haIHsKICAgICAgICAgICAgZnJhbWVzID0gMDsKICAgICAgICAgICAgaGVhcnRiZWF0LnRvZ2dsZSgpOwogICAgICAgIH0KICAgIH0KfQoKI1tpbnRlcnJ1cHRdCmZuIEVYVEkwKCkgewogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IHsKICAgICAgICBpZiBsZXQgU29tZShwaW4pID0gQlVUVE9OLmJvcnJvdyhjcykuYm9ycm93X211dCgpLmFzX211dCgpIHsKICAgICAgICAgICAgcGluLmNsZWFyX2ludGVycnVwdF9wZW5kaW5nX2JpdCgpOwogICAgICAgIH0KICAgIH0pOwogICAgVE9HR0xFX1JFUS5zdG9yZSh0cnVlLCBPcmRlcmluZzo6UmVsZWFzZSk7Cn0KAAAAAAAAAACHFwAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsNAAAAAAAAfA0AAAAAAAAAAAAAAADwvw" ], [ 279, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACIFwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgaGFsOjp7CiAgICAgICAgZ3Bpbzo6e2dwaW9hLCBncGlvYTo6UEEwLCBncGlvYywgRWRnZSwgSW5wdXR9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uIHBpbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248UEEwPElucHV0Pj4+PiA9IE11dGV4OjpuZXcoUmVmQ2VsbDo6bmV3KE5vbmUpKTsKLy8vIFNldCBieSBFWFRJMCBvbiBhIHByZXNzIGVkZ2UsIGNvbnN1bWVkIGJ5IHRoZSBhdWRpbyBsb29wLgpzdGF0aWMgVE9HR0xFX1JFUTogQXRvbWljQm9vbCA9IEF0b21pY0Jvb2w6Om5ldyhmYWxzZSk7Cgp0eXBlIEF1ZGlvT3V0ID0gSTJzVHJhbnNmZXI8STJzPHBhYzo6U1BJMz4sIE1hc3RlciwgVHJhbnNtaXQsIFBoaWxpcHMsIERhdGExNkNoYW5uZWwxNj47CgovLy8gSTJTMyBtYXN0ZXIgdHJhbnNtaXQsIDE2LWJpdCBzdGVyZW8sIE1DTEsgb3V0IGZvciB0aGUgY29kZWMuCmZuIGF1ZGlvX291dCgKICAgIHNwaTogcGFjOjpTUEkzLAogICAgcGluczogKGdwaW9hOjpQQTQsIGdwaW9jOjpQQzEwLCBPcHRpb248Z3Bpb2M6OlBDNz4sIGdwaW9jOjpQQzEyKSwKICAgIHJjYzogJm11dCBSY2MsCikgLT4gQXVkaW9PdXQgewogICAgbGV0IGkycyA9IEkyczo6bmV3KHNwaSwgcGlucywgcmNjKTsKICAgIGxldCBjb25maWcgPSBJMnNUcmFuc2ZlckNvbmZpZzo6bmV3X21hc3RlcigpCiAgICAgICAgLnRyYW5zbWl0KCkKICAgICAgICAuc3RhbmRhcmQoUGhpbGlwcykKICAgICAgICAuZGF0YV9mb3JtYXQoRGF0YTE2Q2hhbm5lbDE2KQogICAgICAgIC5tYXN0ZXJfY2xvY2sodHJ1ZSkKICAgICAgICAucmVxdWVzdF9mcmVxdWVuY3koU0FNUExFX1JBVEVfSFopOwogICAgSTJzVHJhbnNmZXI6Om5ldyhpMnMsIGNvbmZpZykKfQoKLy8vIFNhbXBsZSBgaWAgKG9mIFNBTVBMRVNfUEVSX0NZQ0xFKSBvZiB0aGUgc2F3dG9vdGg6IGEgbGluZWFyIHJhbXAgZnJvbQovLy8gLUFNUExJVFVERSB0byArQU1QTElUVURFLCB3cmFwcGluZyBlYWNoIGN5Y2xlLgpmbiBzYXdfc2FtcGxlKGk6IHUzMikgLT4gaTE2IHsKICAgIChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNgp9CgojW2VudHJ5XQpmbiBtYWluKCkgLT4gISB7CiAgICBsZXQgY3AgPSBjb3J0ZXhfbTo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKICAgIGxldCBtdXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSk6IHJpc2luZy1lZGdlIGludGVycnVwdCBvbiBFWFRJMC4KICAgIGxldCBtdXQgc3lzY2ZnID0gcC5TWVNDRkcuY29uc3RyYWluKCZtdXQgcmNjKTsKICAgIGxldCBtdXQgYnV0dG9uID0gZ3Bpb2EucGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICBidXR0b24ubWFrZV9pbnRlcnJ1cHRfc291cmNlKCZtdXQgc3lzY2ZnKTsKICAgIGJ1dHRvbi50cmlnZ2VyX29uX2VkZ2UoJm11dCBwLkVYVEksIEVkZ2U6OlJpc2luZyk7CiAgICBidXR0b24uZW5hYmxlX2ludGVycnVwdCgmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gSGVhcnRiZWF0IExFRCAoYmx1ZSwgUEQxNSk6IHRvZ2dsZXMgb25jZSBhIHNlY29uZCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXIgYXR0YWNoZWQuCiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGdwaW9kLnBkMTUuaW50b19wdXNoX3B1bGxfb3V0cHV0KCk7CiAgICAvLyBTYXcgaW5kaWNhdG9yIExFRCAoZ3JlZW4sIFBEMTIpOiBsaXQgd2hpbGUgdGhlIHNhdyBpcyBwbGF5aW5nLgogICAgbGV0IG11dCBzYXdfbGVkID0gZ3Bpb2QucGQxMi5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKTsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIGxvb3AgewogICAgICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgICAgICAgICAgb24gPSAhb247CiAgICAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgICAgICAgICBzYXdfbGVkLnNldF9zdGF0ZShvbi5pbnRvKCkpOwogICAgICAgICAgICBkZWZtdDo6aW5mbyEoInNhdyB7fSIsIGlmIG9uIHsgIk9OIiB9IGVsc2UgeyAiT0ZGIiB9KTsKICAgICAgICB9CgogICAgICAgIGxldCBzYW1wbGUgPSBtYXRjaCBvbiB7CiAgICAgICAgICAgIHRydWUgPT4gc2F3X3NhbXBsZShpKSwKICAgICAgICAgICAgZmFsc2UgPT4gMCwKICAgICAgICB9OwogICAgICAgIGJsb2NrISh0cmFuc2Zlci53cml0ZSgoc2FtcGxlLCBzYW1wbGUpKSkudW53cmFwKCk7CiAgICAgICAgaSA9IChpICsgMSkgJSBTQU1QTEVTX1BFUl9DWUNMRTsKCiAgICAgICAgZnJhbWVzICs9IDE7CiAgICAgICAgaWYgZnJhbWVzID09IFNBTVBMRV9SQVRFX0haIHsKICAgICAgICAgICAgZnJhbWVzID0gMDsKICAgICAgICAgICAgaGVhcnRiZWF0LnRvZ2dsZSgpOwogICAgICAgIH0KICAgIH0KfQoKI1tpbnRlcnJ1cHRdCmZuIEVYVEkwKCkgewogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IHsKICAgICAgICBpZiBsZXQgU29tZShwaW4pID0gQlVUVE9OLmJvcnJvdyhjcykuYm9ycm93X211dCgpLmFzX211dCgpIHsKICAgICAgICAgICAgcGluLmNsZWFyX2ludGVycnVwdF9wZW5kaW5nX2JpdCgpOwogICAgICAgIH0KICAgIH0pOwogICAgVE9HR0xFX1JFUS5zdG9yZSh0cnVlLCBPcmRlcmluZzo6UmVsZWFzZSk7Cn0KAAAAAAAAAACeFwAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsNAAAAAAAAfA0AAAAAAAAAAAAAAADwvw" ], [ 280, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACfFwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgbGVkOjpMZWQsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9hOjpQQTAsIGdwaW9jLCBFZGdlLCBJbnB1dH0sCiAgICAgICAgaTJjOjp7STJjLCBNb2RlfSwKICAgICAgICBpMnM6OnN0bTMyX2kyc192MTJ4Ojp0cmFuc2Zlcjo6KiwKICAgICAgICBpMnM6OkkycywKICAgICAgICBuYjo6YmxvY2ssCiAgICAgICAgcGFjLAogICAgICAgIHBhYzo6aW50ZXJydXB0LAogICAgICAgIHByZWx1ZGU6OiosCiAgICAgICAgcmNjOjp7Q29uZmlnLCBSY2N9LAogICAgfSwKfTsKCi8vIC0tLS0gdG9uZSAtLS0tCmNvbnN0IFNBV19IWjogdTMyID0gNDAwOwpjb25zdCBTQU1QTEVfUkFURV9IWjogdTMyID0gNDhfMDAwOwpjb25zdCBTQU1QTEVTX1BFUl9DWUNMRTogdTMyID0gU0FNUExFX1JBVEVfSFogLyBTQVdfSFo7IC8vIDEyMAovLyBGdWxsLXNjYWxlIGlzIHBhaW5mdWxseSBsb3VkIG9uIGhlYWRwaG9uZXM7IHJ1biB0aGUgc2F3IGF0IH4xLzggYW1wbGl0dWRlLgpjb25zdCBBTVBMSVRVREU6IGkzMiA9IGkxNjo6TUFYIGFzIGkzMiAvIDg7CgovLyAtLS0tIGJ1dHRvbiAtLS0tCi8vIEFmdGVyIGEgdG9nZ2xlLCBpZ25vcmUgZnVydGhlciBwcmVzc2VzIGZvciB+MjAgbXMgb2Ygc2FtcGxlcyAoYm91bmNlKS4KY29uc3QgREVCT1VOQ0VfU0FNUExFUzogdTMyID0gU0FNUExFX1JBVEVfSFogLyA1MDsKCi8vLyBCdXR0b24gcGluLCBwYXJrZWQgaGVyZSBzbyB0aGUgRVhUSTAgaGFuZGxlciBjYW4gY2xlYXIgaXRzIHBlbmRpbmcgYml0LgpzdGF0aWMgQlVUVE9OOiBNdXRleDxSZWZDZWxsPE9wdGlvbjxQQTA8SW5wdXQ+Pj4+ID0gTXV0ZXg6Om5ldyhSZWZDZWxsOjpuZXcoTm9uZSkpOwovLy8gU2V0IGJ5IEVYVEkwIG9uIGEgcHJlc3MgZWRnZSwgY29uc3VtZWQgYnkgdGhlIGF1ZGlvIGxvb3AuCnN0YXRpYyBUT0dHTEVfUkVROiBBdG9taWNCb29sID0gQXRvbWljQm9vbDo6bmV3KGZhbHNlKTsKCnR5cGUgQXVkaW9PdXQgPSBJMnNUcmFuc2ZlcjxJMnM8cGFjOjpTUEkzPiwgTWFzdGVyLCBUcmFuc21pdCwgUGhpbGlwcywgRGF0YTE2Q2hhbm5lbDE2PjsKCi8vLyBJMlMzIG1hc3RlciB0cmFuc21pdCwgMTYtYml0IHN0ZXJlbywgTUNMSyBvdXQgZm9yIHRoZSBjb2RlYy4KZm4gYXVkaW9fb3V0KAogICAgc3BpOiBwYWM6OlNQSTMsCiAgICBwaW5zOiAoZ3Bpb2E6OlBBNCwgZ3Bpb2M6OlBDMTAsIE9wdGlvbjxncGlvYzo6UEM3PiwgZ3Bpb2M6OlBDMTIpLAogICAgcmNjOiAmbXV0IFJjYywKKSAtPiBBdWRpb091dCB7CiAgICBsZXQgaTJzID0gSTJzOjpuZXcoc3BpLCBwaW5zLCByY2MpOwogICAgbGV0IGNvbmZpZyA9IEkyc1RyYW5zZmVyQ29uZmlnOjpuZXdfbWFzdGVyKCkKICAgICAgICAudHJhbnNtaXQoKQogICAgICAgIC5zdGFuZGFyZChQaGlsaXBzKQogICAgICAgIC5kYXRhX2Zvcm1hdChEYXRhMTZDaGFubmVsMTYpCiAgICAgICAgLm1hc3Rlcl9jbG9jayh0cnVlKQogICAgICAgIC5yZXF1ZXN0X2ZyZXF1ZW5jeShTQU1QTEVfUkFURV9IWik7CiAgICBJMnNUcmFuc2Zlcjo6bmV3KGkycywgY29uZmlnKQp9CgovLy8gU2FtcGxlIGBpYCAob2YgU0FNUExFU19QRVJfQ1lDTEUpIG9mIHRoZSBzYXd0b290aDogYSBsaW5lYXIgcmFtcCBmcm9tCi8vLyAtQU1QTElUVURFIHRvICtBTVBMSVRVREUsIHdyYXBwaW5nIGVhY2ggY3ljbGUuCmZuIHNhd19zYW1wbGUoaTogdTMyKSAtPiBpMTYgewogICAgKGkgYXMgaTMyICogMiAqIEFNUExJVFVERSAvIFNBTVBMRVNfUEVSX0NZQ0xFIGFzIGkzMiAtIEFNUExJVFVERSkgYXMgaTE2Cn0KCiNbZW50cnldCmZuIG1haW4oKSAtPiAhIHsKICAgIGxldCBjcCA9IGNvcnRleF9tOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwogICAgbGV0IG11dCBwID0gcGFjOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwoKICAgIC8vIFBMTEkyUyB0dW5lZCB0byA2MS40NCBNSHogc28gNDgga0h6IGRpdmlkZXMgZXhhY3RseSAoNjEuNDQgTUh6IC8gMjU2ZnMgLyA1KS4KICAgIGxldCBtdXQgcmNjID0gcAogICAgICAgIC5SQ0MKICAgICAgICAuZnJlZXplKENvbmZpZzo6aHNpKCkuc3lzY2xrKDk2Lk1IeigpKS5pMnNfY2xrKDYxNDQwLmtIeigpKSk7CiAgICBsZXQgbXV0IGRlbGF5ID0gY3AuU1lTVC5kZWxheSgmcmNjLmNsb2Nrcyk7CgogICAgbGV0IGdwaW9hID0gcC5HUElPQS5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2IgPSBwLkdQSU9CLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYyA9IHAuR1BJT0Muc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9kID0gcC5HUElPRC5zcGxpdCgmbXV0IHJjYyk7CgogICAgLy8gVVNFUiBidXR0b24gKEIxKTogcmlzaW5nLWVkZ2UgaW50ZXJydXB0IG9uIEVYVEkwLgogICAgbGV0IG11dCBzeXNjZmcgPSBwLlNZU0NGRy5jb25zdHJhaW4oJm11dCByY2MpOwogICAgbGV0IG11dCBidXR0b24gPSBncGlvYS5wYTAuaW50b19wdWxsX2Rvd25faW5wdXQoKTsKICAgIGJ1dHRvbi5tYWtlX2ludGVycnVwdF9zb3VyY2UoJm11dCBzeXNjZmcpOwogICAgYnV0dG9uLnRyaWdnZXJfb25fZWRnZSgmbXV0IHAuRVhUSSwgRWRnZTo6UmlzaW5nKTsKICAgIGJ1dHRvbi5lbmFibGVfaW50ZXJydXB0KCZtdXQgcC5FWFRJKTsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCBCVVRUT04uYm9ycm93KGNzKS5yZXBsYWNlKFNvbWUoYnV0dG9uKSkpOwogICAgdW5zYWZlIHsgcGFjOjpOVklDOjp1bm1hc2socGFjOjpJbnRlcnJ1cHQ6OkVYVEkwKSB9OwoKICAgIC8vIENTNDNMMjIgY29kZWM6IGNvbnRyb2wgcG9ydCArIHJlc2V0IHZpYSB0aGUgYm9hcmQtc3VwcG9ydCBkcml2ZXIuCiAgICBsZXQgaTJjID0gSTJjOjpuZXcoCiAgICAgICAgcC5JMkMxLAogICAgICAgIChncGlvYi5wYjYsIGdwaW9iLnBiOSksCiAgICAgICAgTW9kZTo6c3RhbmRhcmQoMTAwLmtIeigpKSwKICAgICAgICAmbXV0IHJjYywKICAgICk7CiAgICBsZXQgbXV0IGNvZGVjID0gQ3M0M2wyMjo6bmV3KGkyYywgZ3Bpb2QucGQ0LmludG9fcHVzaF9wdWxsX291dHB1dCgpKTsKICAgIG1hdGNoIGNvZGVjLmluaXQoJm11dCBkZWxheSkgewogICAgICAgIE9rKGlkKSA9PiBkZWZtdDo6aW5mbyEoImNvZGVjIHVwLCBJRCByZWcgez11ODojMDR4fSIsIGlkKSwKICAgICAgICBFcnIoZSkgPT4gZGVmbXQ6OmVycm9yISgiY29kZWMgaW5pdCBmYWlsZWQ6IHt9IiwgZGVmbXQ6OkRlYnVnMkZvcm1hdCgmZSkpLAogICAgfQoKICAgIGxldCBtdXQgdHJhbnNmZXIgPSBhdWRpb19vdXQoCiAgICAgICAgcC5TUEkzLAogICAgICAgIChncGlvYS5wYTQsIGdwaW9jLnBjMTAsIFNvbWUoZ3Bpb2MucGM3KSwgZ3Bpb2MucGMxMiksCiAgICAgICAgJm11dCByY2MsCiAgICApOwoKICAgIGRlZm10OjppbmZvISgKICAgICAgICAic2F3OiB7fSBIeiwgc2FtcGxlIHJhdGUge30gSHogKHt9IHNhbXBsZXMvY3ljbGUpIiwKICAgICAgICBTQVdfSFosCiAgICAgICAgdHJhbnNmZXIuc2FtcGxlX3JhdGUoKSwKICAgICAgICBTQU1QTEVTX1BFUl9DWUNMRQogICAgKTsKCiAgICAvLyBIZWFydGJlYXQgTEVEIChMRDYsIGJsdWUpOiB0b2dnbGVzIG9uY2UgYSBzZWNvbmQgc28gaXQncyB2aXNpYmxlIHRoZQogICAgLy8gZmlybXdhcmUgaXMgYWxpdmUgd2l0aG91dCBhIGRlYnVnZ2VyIGF0dGFjaGVkLgogICAgbGV0IG11dCBoZWFydGJlYXQ6IExlZCA9IGdwaW9kLnBkMTUuaW50b19wdXNoX3B1bGxfb3V0cHV0KCkuaW50bygpOwogICAgLy8gU2F3IGluZGljYXRvciBMRUQgKExENCwgZ3JlZW4pOiBsaXQgd2hpbGUgdGhlIHNhdyBpcyBwbGF5aW5nLgogICAgbGV0IG11dCBzYXdfbGVkOiBMZWQgPSBncGlvZC5wZDEyLmludG9fcHVzaF9wdWxsX291dHB1dCgpLmludG8oKTsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIGxvb3AgewogICAgICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgICAgICAgICAgb24gPSAhb247CiAgICAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgICAgICAgICBzYXdfbGVkLnNldChvbik7CiAgICAgICAgICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNhbXBsZSA9IG1hdGNoIG9uIHsKICAgICAgICAgICAgdHJ1ZSA9PiBzYXdfc2FtcGxlKGkpLAogICAgICAgICAgICBmYWxzZSA9PiAwLAogICAgICAgIH07CiAgICAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwoKICAgICAgICBmcmFtZXMgKz0gMTsKICAgICAgICBpZiBmcmFtZXMgPT0gU0FNUExFX1JBVEVfSFogewogICAgICAgICAgICBmcmFtZXMgPSAwOwogICAgICAgICAgICBoZWFydGJlYXQudG9nZ2xlKCk7CiAgICAgICAgfQogICAgfQp9CgojW2ludGVycnVwdF0KZm4gRVhUSTAoKSB7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgewogICAgICAgIGlmIGxldCBTb21lKHBpbikgPSBCVVRUT04uYm9ycm93KGNzKS5ib3Jyb3dfbXV0KCkuYXNfbXV0KCkgewogICAgICAgICAgICBwaW4uY2xlYXJfaW50ZXJydXB0X3BlbmRpbmdfYml0KCk7CiAgICAgICAgfQogICAgfSk7CiAgICBUT0dHTEVfUkVRLnN0b3JlKHRydWUsIE9yZGVyaW5nOjpSZWxlYXNlKTsKfQoAAAAAAAAAAIIXAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsNAAAAAAAAfA0AAAAAAAAAAAAAAADwvw" ], [ 331, 1, "sequence", { "commands": [ [ "run_macro_file", { "file": "res://Packages/Default/Add Line.sublime-macro", "register": "\"" } ], [ "exit_insert_mode", null ] ] }, "AQAAAIgWAAAAAAAAjRYAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcWAAAAAAAAhxYAAAAAAAAAAAAAAMBoQA" ], [ 334, 1, "sequence", { "commands": [ [ "run_macro_file", { "file": "res://Packages/Default/Add Line.sublime-macro", "register": "\"" } ], [ "paste", null ], [ "exit_insert_mode", null ] ] }, "AwAAAI0WAAAAAAAAkhYAAAAAAAAAAAAAiRYAAAAAAACJFgAAAAAAAAQAAAAgICAgjhYAAAAAAADAFwAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwWAAAAAAAAjBYAAAAAAAAAAAAAAADwvw" ], [ 336, 1, "run_macro_file", { "file": "res://Packages/Default/Delete Line.sublime-macro" }, "AQAAAIoWAAAAAAAAihYAAAAAAAAcAAAAICAgICAgICBsZXQgbXV0IGk6IHUzMiA9IDA7Cg", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4WAAAAAAAAjhYAAAAAAAAAAAAAAABCQA" ], [ 340, 1, "toggle_comment", { "block": false }, "FgAAAIcWAAAAAAAAihYAAAAAAAAAAAAAfRYAAAAAAACAFgAAAAAAAAAAAABdFgAAAAAAAGAWAAAAAAAAAAAAAEUWAAAAAAAASBYAAAAAAAAAAAAAHxYAAAAAAAAiFgAAAAAAAAAAAAAKFgAAAAAAAA0WAAAAAAAAAAAAAOAVAAAAAAAA4xUAAAAAAAAAAAAApRUAAAAAAACoFQAAAAAAAAAAAACaFQAAAAAAAJ0VAAAAAAAAAAAAAIIVAAAAAAAAhRUAAAAAAAAAAAAAXxUAAAAAAABiFQAAAAAAAAAAAAA/FQAAAAAAAEIVAAAAAAAAAAAAADQVAAAAAAAANxUAAAAAAAAAAAAA8RQAAAAAAAD0FAAAAAAAAAAAAADUFAAAAAAAANcUAAAAAAAAAAAAAKwUAAAAAAAArxQAAAAAAAAAAAAAlhQAAAAAAACZFAAAAAAAAAAAAABQFAAAAAAAAFMUAAAAAAAAAAAAACMUAAAAAAAAJhQAAAAAAAAAAAAA4BMAAAAAAADjEwAAAAAAAAAAAACTEwAAAAAAAJYTAAAAAAAAAAAAAIgTAAAAAAAAixMAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIkWAAAAAAAAhBMAAAAAAAAAAAAAAAAAAA" ], [ 353, 4, "vi_eval", { "action_args": { }, "action_command": "vi_right_delete", "motion_args": { }, "motion_clip_to_line": false, "motion_command": null, "motion_inclusive": false, "motion_mode": 0 }, "BAAAAIgXAAAAAAAAiBcAAAAAAAABAAAAaYgXAAAAAAAAiBcAAAAAAAABAAAAMogXAAAAAAAAiBcAAAAAAAABAAAAc4gXAAAAAAAAiBcAAAAAAAABAAAAXw", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIgXAAAAAAAAiBcAAAAAAAAAAAAAAADwvw" ], [ 401, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADfGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGNvZGVjOjpDczQzbDIyLAogICAgbGVkOjpMZWRDb21wYXNzLAogICAgaGFsOjp7CiAgICAgICAgZ3Bpbzo6e2dwaW9hLCBncGlvYTo6UEEwLCBncGlvYywgRWRnZSwgSW5wdXR9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uIHBpbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248UEEwPElucHV0Pj4+PiA9IE11dGV4OjpuZXcoUmVmQ2VsbDo6bmV3KE5vbmUpKTsKLy8vIFNldCBieSBFWFRJMCBvbiBhIHByZXNzIGVkZ2UsIGNvbnN1bWVkIGJ5IHRoZSBhdWRpbyBsb29wLgpzdGF0aWMgVE9HR0xFX1JFUTogQXRvbWljQm9vbCA9IEF0b21pY0Jvb2w6Om5ldyhmYWxzZSk7Cgp0eXBlIEF1ZGlvT3V0ID0gSTJzVHJhbnNmZXI8STJzPHBhYzo6U1BJMz4sIE1hc3RlciwgVHJhbnNtaXQsIFBoaWxpcHMsIERhdGExNkNoYW5uZWwxNj47CgovLy8gSTJTMyBtYXN0ZXIgdHJhbnNtaXQsIDE2LWJpdCBzdGVyZW8sIE1DTEsgb3V0IGZvciB0aGUgY29kZWMuCmZuIGF1ZGlvX291dCgKICAgIHNwaTogcGFjOjpTUEkzLAogICAgcGluczogKGdwaW9hOjpQQTQsIGdwaW9jOjpQQzEwLCBPcHRpb248Z3Bpb2M6OlBDNz4sIGdwaW9jOjpQQzEyKSwKICAgIHJjYzogJm11dCBSY2MsCikgLT4gQXVkaW9PdXQgewogICAgbGV0IGkycyA9IEkyczo6bmV3KHNwaSwgcGlucywgcmNjKTsKICAgIGxldCBjb25maWcgPSBJMnNUcmFuc2ZlckNvbmZpZzo6bmV3X21hc3RlcigpCiAgICAgICAgLnRyYW5zbWl0KCkKICAgICAgICAuc3RhbmRhcmQoUGhpbGlwcykKICAgICAgICAuZGF0YV9mb3JtYXQoRGF0YTE2Q2hhbm5lbDE2KQogICAgICAgIC5tYXN0ZXJfY2xvY2sodHJ1ZSkKICAgICAgICAucmVxdWVzdF9mcmVxdWVuY3koU0FNUExFX1JBVEVfSFopOwogICAgSTJzVHJhbnNmZXI6Om5ldyhpMnMsIGNvbmZpZykKfQoKLy8vIFNhbXBsZSBgaWAgKG9mIFNBTVBMRVNfUEVSX0NZQ0xFKSBvZiB0aGUgc2F3dG9vdGg6IGEgbGluZWFyIHJhbXAgZnJvbQovLy8gLUFNUExJVFVERSB0byArQU1QTElUVURFLCB3cmFwcGluZyBlYWNoIGN5Y2xlLgpmbiBzYXdfc2FtcGxlKGk6IHUzMikgLT4gaTE2IHsKICAgIChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNgp9CgojW2VudHJ5XQpmbiBtYWluKCkgLT4gISB7CiAgICBsZXQgY3AgPSBjb3J0ZXhfbTo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKICAgIGxldCBtdXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSk6IHJpc2luZy1lZGdlIGludGVycnVwdCBvbiBFWFRJMC4KICAgIGxldCBtdXQgc3lzY2ZnID0gcC5TWVNDRkcuY29uc3RyYWluKCZtdXQgcmNjKTsKICAgIGxldCBtdXQgYnV0dG9uID0gZ3Bpb2EucGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICBidXR0b24ubWFrZV9pbnRlcnJ1cHRfc291cmNlKCZtdXQgc3lzY2ZnKTsKICAgIGJ1dHRvbi50cmlnZ2VyX29uX2VkZ2UoJm11dCBwLkVYVEksIEVkZ2U6OlJpc2luZyk7CiAgICBidXR0b24uZW5hYmxlX2ludGVycnVwdCgmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsgLy8gc2lsZW50IGF0IGJvb3Q7IFVTRVIgYnV0dG9uIHRvZ2dsZXMgdGhlIHNhdyBvbgogICAgbGV0IG11dCBob2xkb2ZmOiB1MzIgPSAwOwogICAgLy8gbG9vcCB7CiAgICAvLyAgICAgLy8gQ29uc3VtZSBhbnkgcHJlc3MgZmxhZyBldmVyeSBmcmFtZSAoc28gYm91bmNlIGR1cmluZyB0aGUgaG9sZC1vZmYKICAgIC8vICAgICAvLyB3aW5kb3cgaXMgZGlzY2FyZGVkKSwgYXBwbHkgaXQgb25seSBvdXRzaWRlIHRoZSB3aW5kb3cuCiAgICAvLyAgICAgaG9sZG9mZiA9IGhvbGRvZmYuc2F0dXJhdGluZ19zdWIoMSk7CiAgICAvLyAgICAgaWYgVE9HR0xFX1JFUS5zd2FwKGZhbHNlLCBPcmRlcmluZzo6QWNxUmVsKSAmJiBob2xkb2ZmID09IDAgewogICAgLy8gICAgICAgICBvbiA9ICFvbjsKICAgIC8vICAgICAgICAgaG9sZG9mZiA9IERFQk9VTkNFX1NBTVBMRVM7CiAgICAvLyAgICAgICAgIHNhd19sZWQuc2V0KG9uKTsKICAgIC8vICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAvLyAgICAgfQoKICAgIC8vICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgLy8gICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAvLyAgICAgICAgIGZhbHNlID0+IDAsCiAgICAvLyAgICAgfTsKICAgIC8vICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgLy8gICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgLy8gICAgIGZyYW1lcyArPSAxOwogICAgLy8gICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAvLyAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAvLyAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgIC8vICAgICB9CiAgICAvLyB9CgogICAgbG9vcCB7CiAgICAgICAgLy8gUmFtcCAtQU1QTElUVURFIOKGkiArQU1QTElUVURFIG92ZXIgb25lIGN5Y2xlLCB0aGVuIHdyYXAuCiAgICAgICAgbGV0IHNhbXBsZSA9IChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNjsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CiAgICB9Cn0KCiNbaW50ZXJydXB0XQpmbiBFWFRJMCgpIHsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCB7CiAgICAgICAgaWYgbGV0IFNvbWUocGluKSA9IEJVVFRPTi5ib3Jyb3coY3MpLmJvcnJvd19tdXQoKS5hc19tdXQoKSB7CiAgICAgICAgICAgIHBpbi5jbGVhcl9pbnRlcnJ1cHRfcGVuZGluZ19iaXQoKTsKICAgICAgICB9CiAgICB9KTsKICAgIFRPR0dMRV9SRVEuc3RvcmUodHJ1ZSwgT3JkZXJpbmc6OlJlbGVhc2UpOwp9CgAAAAAAAAAA1xgAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgMAAAAAAAAWAwAAAAAAAAAAAAAAADwvw" ], [ 402, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADaGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6QnV0dG9uLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcGFjOjppbnRlcnJ1cHQsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKLy8vIEJ1dHRvbiBwaW4sIHBhcmtlZCBoZXJlIHNvIHRoZSBFWFRJMCBoYW5kbGVyIGNhbiBjbGVhciBpdHMgcGVuZGluZyBiaXQuCnN0YXRpYyBCVVRUT046IE11dGV4PFJlZkNlbGw8T3B0aW9uPFBBMDxJbnB1dD4+Pj4gPSBNdXRleDo6bmV3KFJlZkNlbGw6Om5ldyhOb25lKSk7Ci8vLyBTZXQgYnkgRVhUSTAgb24gYSBwcmVzcyBlZGdlLCBjb25zdW1lZCBieSB0aGUgYXVkaW8gbG9vcC4Kc3RhdGljIFRPR0dMRV9SRVE6IEF0b21pY0Jvb2wgPSBBdG9taWNCb29sOjpuZXcoZmFsc2UpOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgbXV0IHAgPSBwYWM6OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CgogICAgLy8gUExMSTJTIHR1bmVkIHRvIDYxLjQ0IE1IeiBzbyA0OCBrSHogZGl2aWRlcyBleGFjdGx5ICg2MS40NCBNSHogLyAyNTZmcyAvIDUpLgogICAgbGV0IG11dCByY2MgPSBwCiAgICAgICAgLlJDQwogICAgICAgIC5mcmVlemUoQ29uZmlnOjpoc2koKS5zeXNjbGsoOTYuTUh6KCkpLmkyc19jbGsoNjE0NDAua0h6KCkpKTsKICAgIGxldCBtdXQgZGVsYXkgPSBjcC5TWVNULmRlbGF5KCZyY2MuY2xvY2tzKTsKCiAgICBsZXQgZ3Bpb2EgPSBwLkdQSU9BLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYiA9IHAuR1BJT0Iuc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9jID0gcC5HUElPQy5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2QgPSBwLkdQSU9ELnNwbGl0KCZtdXQgcmNjKTsKCiAgICAvLyBVU0VSIGJ1dHRvbiAoQjEpOiByaXNpbmctZWRnZSBpbnRlcnJ1cHQgb24gRVhUSTAuCiAgICBsZXQgbXV0IHN5c2NmZyA9IHAuU1lTQ0ZHLmNvbnN0cmFpbigmbXV0IHJjYyk7CiAgICBsZXQgbXV0IGJ1dHRvbiA9IGdwaW9hLnBhMC5pbnRvX3B1bGxfZG93bl9pbnB1dCgpOwogICAgYnV0dG9uLm1ha2VfaW50ZXJydXB0X3NvdXJjZSgmbXV0IHN5c2NmZyk7CiAgICBidXR0b24udHJpZ2dlcl9vbl9lZGdlKCZtdXQgcC5FWFRJLCBFZGdlOjpSaXNpbmcpOwogICAgYnV0dG9uLmVuYWJsZV9pbnRlcnJ1cHQoJm11dCBwLkVYVEkpOwogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IEJVVFRPTi5ib3Jyb3coY3MpLnJlcGxhY2UoU29tZShidXR0b24pKSk7CiAgICB1bnNhZmUgeyBwYWM6Ok5WSUM6OnVubWFzayhwYWM6OkludGVycnVwdDo6RVhUSTApIH07CgogICAgLy8gQ1M0M0wyMiBjb2RlYzogY29udHJvbCBwb3J0ICsgcmVzZXQgdmlhIHRoZSBib2FyZC1zdXBwb3J0IGRyaXZlci4KICAgIGxldCBpMmMgPSBJMmM6Om5ldygKICAgICAgICBwLkkyQzEsCiAgICAgICAgKGdwaW9iLnBiNiwgZ3Bpb2IucGI5KSwKICAgICAgICBNb2RlOjpzdGFuZGFyZCgxMDAua0h6KCkpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKICAgIGxldCBtdXQgY29kZWMgPSBDczQzbDIyOjpuZXcoaTJjLCBncGlvZC5wZDQuaW50b19wdXNoX3B1bGxfb3V0cHV0KCkpOwogICAgbWF0Y2ggY29kZWMuaW5pdCgmbXV0IGRlbGF5KSB7CiAgICAgICAgT2soaWQpID0+IGRlZm10OjppbmZvISgiY29kZWMgdXAsIElEIHJlZyB7PXU4OiMwNHh9IiwgaWQpLAogICAgICAgIEVycihlKSA9PiBkZWZtdDo6ZXJyb3IhKCJjb2RlYyBpbml0IGZhaWxlZDoge30iLCBkZWZtdDo6RGVidWcyRm9ybWF0KCZlKSksCiAgICB9CgogICAgbGV0IG11dCB0cmFuc2ZlciA9IGF1ZGlvX291dCgKICAgICAgICBwLlNQSTMsCiAgICAgICAgKGdwaW9hLnBhNCwgZ3Bpb2MucGMxMCwgU29tZShncGlvYy5wYzcpLCBncGlvYy5wYzEyKSwKICAgICAgICAmbXV0IHJjYywKICAgICk7CgogICAgZGVmbXQ6OmluZm8hKAogICAgICAgICJzYXc6IHt9IEh6LCBzYW1wbGUgcmF0ZSB7fSBIeiAoe30gc2FtcGxlcy9jeWNsZSkiLAogICAgICAgIFNBV19IWiwKICAgICAgICB0cmFuc2Zlci5zYW1wbGVfcmF0ZSgpLAogICAgICAgIFNBTVBMRVNfUEVSX0NZQ0xFCiAgICApOwoKICAgIC8vIE9uLWJvYXJkIExFRHM6IHNvdXRoIChMRDYsIGJsdWUpID0gMSBIeiBoZWFydGJlYXQgc28gaXQncyB2aXNpYmxlIHRoZQogICAgLy8gZmlybXdhcmUgaXMgYWxpdmUgd2l0aG91dCBhIGRlYnVnZ2VyOyB3ZXN0IChMRDQsIGdyZWVuKSA9IHNhdyBwbGF5aW5nLgogICAgbGV0IGNvbXBhc3MgPSBMZWRDb21wYXNzOjpuZXcoZ3Bpb2QucGQxMiwgZ3Bpb2QucGQxMywgZ3Bpb2QucGQxNCwgZ3Bpb2QucGQxNSk7CiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGNvbXBhc3MuczsKICAgIGxldCBtdXQgc2F3X2xlZCA9IGNvbXBhc3MudzsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIC8vIGxvb3AgewogICAgLy8gICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAvLyAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgLy8gICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgLy8gICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgIC8vICAgICAgICAgb24gPSAhb247CiAgICAvLyAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgLy8gICAgICAgICBzYXdfbGVkLnNldChvbik7CiAgICAvLyAgICAgICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgLy8gICAgIH0KCiAgICAvLyAgICAgbGV0IHNhbXBsZSA9IG1hdGNoIG9uIHsKICAgIC8vICAgICAgICAgdHJ1ZSA9PiBzYXdfc2FtcGxlKGkpLAogICAgLy8gICAgICAgICBmYWxzZSA9PiAwLAogICAgLy8gICAgIH07CiAgICAvLyAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgIC8vICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwoKICAgIC8vICAgICBmcmFtZXMgKz0gMTsKICAgIC8vICAgICBpZiBmcmFtZXMgPT0gU0FNUExFX1JBVEVfSFogewogICAgLy8gICAgICAgICBmcmFtZXMgPSAwOwogICAgLy8gICAgICAgICBoZWFydGJlYXQudG9nZ2xlKCk7CiAgICAvLyAgICAgfQogICAgLy8gfQoKICAgIGxvb3AgewogICAgICAgIC8vIFJhbXAgLUFNUExJVFVERSDihpIgK0FNUExJVFVERSBvdmVyIG9uZSBjeWNsZSwgdGhlbiB3cmFwLgogICAgICAgIGxldCBzYW1wbGUgPSAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTY7CiAgICAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwogICAgfQp9CgojW2ludGVycnVwdF0KZm4gRVhUSTAoKSB7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgewogICAgICAgIGlmIGxldCBTb21lKHBpbikgPSBCVVRUT04uYm9ycm93KGNzKS5ib3Jyb3dfbXV0KCkuYXNfbXV0KCkgewogICAgICAgICAgICBwaW4uY2xlYXJfaW50ZXJydXB0X3BlbmRpbmdfYml0KCk7CiAgICAgICAgfQogICAgfSk7CiAgICBUT0dHTEVfUkVRLnN0b3JlKHRydWUsIE9yZGVyaW5nOjpSZWxlYXNlKTsKfQoAAAAAAAAAAM8YAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgMAAAAAAAAWAwAAAAAAAAAAAAAAADwvw" ], [ 403, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADSGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6QnV0dG9uLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcGFjOjppbnRlcnJ1cHQsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKLy8vIEJ1dHRvbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248QnV0dG9uPj4+ID0gTXV0ZXg6Om5ldyhSZWZDZWxsOjpuZXcoTm9uZSkpOwovLy8gU2V0IGJ5IEVYVEkwIG9uIGEgcHJlc3MgZWRnZSwgY29uc3VtZWQgYnkgdGhlIGF1ZGlvIGxvb3AuCnN0YXRpYyBUT0dHTEVfUkVROiBBdG9taWNCb29sID0gQXRvbWljQm9vbDo6bmV3KGZhbHNlKTsKCnR5cGUgQXVkaW9PdXQgPSBJMnNUcmFuc2ZlcjxJMnM8cGFjOjpTUEkzPiwgTWFzdGVyLCBUcmFuc21pdCwgUGhpbGlwcywgRGF0YTE2Q2hhbm5lbDE2PjsKCi8vLyBJMlMzIG1hc3RlciB0cmFuc21pdCwgMTYtYml0IHN0ZXJlbywgTUNMSyBvdXQgZm9yIHRoZSBjb2RlYy4KZm4gYXVkaW9fb3V0KAogICAgc3BpOiBwYWM6OlNQSTMsCiAgICBwaW5zOiAoZ3Bpb2E6OlBBNCwgZ3Bpb2M6OlBDMTAsIE9wdGlvbjxncGlvYzo6UEM3PiwgZ3Bpb2M6OlBDMTIpLAogICAgcmNjOiAmbXV0IFJjYywKKSAtPiBBdWRpb091dCB7CiAgICBsZXQgaTJzID0gSTJzOjpuZXcoc3BpLCBwaW5zLCByY2MpOwogICAgbGV0IGNvbmZpZyA9IEkyc1RyYW5zZmVyQ29uZmlnOjpuZXdfbWFzdGVyKCkKICAgICAgICAudHJhbnNtaXQoKQogICAgICAgIC5zdGFuZGFyZChQaGlsaXBzKQogICAgICAgIC5kYXRhX2Zvcm1hdChEYXRhMTZDaGFubmVsMTYpCiAgICAgICAgLm1hc3Rlcl9jbG9jayh0cnVlKQogICAgICAgIC5yZXF1ZXN0X2ZyZXF1ZW5jeShTQU1QTEVfUkFURV9IWik7CiAgICBJMnNUcmFuc2Zlcjo6bmV3KGkycywgY29uZmlnKQp9CgovLy8gU2FtcGxlIGBpYCAob2YgU0FNUExFU19QRVJfQ1lDTEUpIG9mIHRoZSBzYXd0b290aDogYSBsaW5lYXIgcmFtcCBmcm9tCi8vLyAtQU1QTElUVURFIHRvICtBTVBMSVRVREUsIHdyYXBwaW5nIGVhY2ggY3ljbGUuCmZuIHNhd19zYW1wbGUoaTogdTMyKSAtPiBpMTYgewogICAgKGkgYXMgaTMyICogMiAqIEFNUExJVFVERSAvIFNBTVBMRVNfUEVSX0NZQ0xFIGFzIGkzMiAtIEFNUExJVFVERSkgYXMgaTE2Cn0KCiNbZW50cnldCmZuIG1haW4oKSAtPiAhIHsKICAgIGxldCBjcCA9IGNvcnRleF9tOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwogICAgbGV0IG11dCBwID0gcGFjOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwoKICAgIC8vIFBMTEkyUyB0dW5lZCB0byA2MS40NCBNSHogc28gNDgga0h6IGRpdmlkZXMgZXhhY3RseSAoNjEuNDQgTUh6IC8gMjU2ZnMgLyA1KS4KICAgIGxldCBtdXQgcmNjID0gcAogICAgICAgIC5SQ0MKICAgICAgICAuZnJlZXplKENvbmZpZzo6aHNpKCkuc3lzY2xrKDk2Lk1IeigpKS5pMnNfY2xrKDYxNDQwLmtIeigpKSk7CiAgICBsZXQgbXV0IGRlbGF5ID0gY3AuU1lTVC5kZWxheSgmcmNjLmNsb2Nrcyk7CgogICAgbGV0IGdwaW9hID0gcC5HUElPQS5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2IgPSBwLkdQSU9CLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYyA9IHAuR1BJT0Muc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9kID0gcC5HUElPRC5zcGxpdCgmbXV0IHJjYyk7CgogICAgLy8gVVNFUiBidXR0b24gKEIxKTogcmlzaW5nLWVkZ2UgaW50ZXJydXB0IG9uIEVYVEkwLgogICAgbGV0IG11dCBzeXNjZmcgPSBwLlNZU0NGRy5jb25zdHJhaW4oJm11dCByY2MpOwogICAgbGV0IG11dCBidXR0b24gPSBncGlvYS5wYTAuaW50b19wdWxsX2Rvd25faW5wdXQoKTsKICAgIGJ1dHRvbi5tYWtlX2ludGVycnVwdF9zb3VyY2UoJm11dCBzeXNjZmcpOwogICAgYnV0dG9uLnRyaWdnZXJfb25fZWRnZSgmbXV0IHAuRVhUSSwgRWRnZTo6UmlzaW5nKTsKICAgIGJ1dHRvbi5lbmFibGVfaW50ZXJydXB0KCZtdXQgcC5FWFRJKTsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCBCVVRUT04uYm9ycm93KGNzKS5yZXBsYWNlKFNvbWUoYnV0dG9uKSkpOwogICAgdW5zYWZlIHsgcGFjOjpOVklDOjp1bm1hc2socGFjOjpJbnRlcnJ1cHQ6OkVYVEkwKSB9OwoKICAgIC8vIENTNDNMMjIgY29kZWM6IGNvbnRyb2wgcG9ydCArIHJlc2V0IHZpYSB0aGUgYm9hcmQtc3VwcG9ydCBkcml2ZXIuCiAgICBsZXQgaTJjID0gSTJjOjpuZXcoCiAgICAgICAgcC5JMkMxLAogICAgICAgIChncGlvYi5wYjYsIGdwaW9iLnBiOSksCiAgICAgICAgTW9kZTo6c3RhbmRhcmQoMTAwLmtIeigpKSwKICAgICAgICAmbXV0IHJjYywKICAgICk7CiAgICBsZXQgbXV0IGNvZGVjID0gQ3M0M2wyMjo6bmV3KGkyYywgZ3Bpb2QucGQ0LmludG9fcHVzaF9wdWxsX291dHB1dCgpKTsKICAgIG1hdGNoIGNvZGVjLmluaXQoJm11dCBkZWxheSkgewogICAgICAgIE9rKGlkKSA9PiBkZWZtdDo6aW5mbyEoImNvZGVjIHVwLCBJRCByZWcgez11ODojMDR4fSIsIGlkKSwKICAgICAgICBFcnIoZSkgPT4gZGVmbXQ6OmVycm9yISgiY29kZWMgaW5pdCBmYWlsZWQ6IHt9IiwgZGVmbXQ6OkRlYnVnMkZvcm1hdCgmZSkpLAogICAgfQoKICAgIGxldCBtdXQgdHJhbnNmZXIgPSBhdWRpb19vdXQoCiAgICAgICAgcC5TUEkzLAogICAgICAgIChncGlvYS5wYTQsIGdwaW9jLnBjMTAsIFNvbWUoZ3Bpb2MucGM3KSwgZ3Bpb2MucGMxMiksCiAgICAgICAgJm11dCByY2MsCiAgICApOwoKICAgIGRlZm10OjppbmZvISgKICAgICAgICAic2F3OiB7fSBIeiwgc2FtcGxlIHJhdGUge30gSHogKHt9IHNhbXBsZXMvY3ljbGUpIiwKICAgICAgICBTQVdfSFosCiAgICAgICAgdHJhbnNmZXIuc2FtcGxlX3JhdGUoKSwKICAgICAgICBTQU1QTEVTX1BFUl9DWUNMRQogICAgKTsKCiAgICAvLyBPbi1ib2FyZCBMRURzOiBzb3V0aCAoTEQ2LCBibHVlKSA9IDEgSHogaGVhcnRiZWF0IHNvIGl0J3MgdmlzaWJsZSB0aGUKICAgIC8vIGZpcm13YXJlIGlzIGFsaXZlIHdpdGhvdXQgYSBkZWJ1Z2dlcjsgd2VzdCAoTEQ0LCBncmVlbikgPSBzYXcgcGxheWluZy4KICAgIGxldCBjb21wYXNzID0gTGVkQ29tcGFzczo6bmV3KGdwaW9kLnBkMTIsIGdwaW9kLnBkMTMsIGdwaW9kLnBkMTQsIGdwaW9kLnBkMTUpOwogICAgbGV0IG11dCBoZWFydGJlYXQgPSBjb21wYXNzLnM7CiAgICBsZXQgbXV0IHNhd19sZWQgPSBjb21wYXNzLnc7CgogICAgbGV0IG11dCBpID0gMDsKICAgIGxldCBtdXQgZnJhbWVzOiB1MzIgPSAwOwogICAgbGV0IG11dCBvbiA9IGZhbHNlOyAvLyBzaWxlbnQgYXQgYm9vdDsgVVNFUiBidXR0b24gdG9nZ2xlcyB0aGUgc2F3IG9uCiAgICBsZXQgbXV0IGhvbGRvZmY6IHUzMiA9IDA7CiAgICAvLyBsb29wIHsKICAgIC8vICAgICAvLyBDb25zdW1lIGFueSBwcmVzcyBmbGFnIGV2ZXJ5IGZyYW1lIChzbyBib3VuY2UgZHVyaW5nIHRoZSBob2xkLW9mZgogICAgLy8gICAgIC8vIHdpbmRvdyBpcyBkaXNjYXJkZWQpLCBhcHBseSBpdCBvbmx5IG91dHNpZGUgdGhlIHdpbmRvdy4KICAgIC8vICAgICBob2xkb2ZmID0gaG9sZG9mZi5zYXR1cmF0aW5nX3N1YigxKTsKICAgIC8vICAgICBpZiBUT0dHTEVfUkVRLnN3YXAoZmFsc2UsIE9yZGVyaW5nOjpBY3FSZWwpICYmIGhvbGRvZmYgPT0gMCB7CiAgICAvLyAgICAgICAgIG9uID0gIW9uOwogICAgLy8gICAgICAgICBob2xkb2ZmID0gREVCT1VOQ0VfU0FNUExFUzsKICAgIC8vICAgICAgICAgc2F3X2xlZC5zZXQob24pOwogICAgLy8gICAgICAgICBkZWZtdDo6aW5mbyEoInNhdyB7fSIsIGlmIG9uIHsgIk9OIiB9IGVsc2UgeyAiT0ZGIiB9KTsKICAgIC8vICAgICB9CgogICAgLy8gICAgIGxldCBzYW1wbGUgPSBtYXRjaCBvbiB7CiAgICAvLyAgICAgICAgIHRydWUgPT4gc2F3X3NhbXBsZShpKSwKICAgIC8vICAgICAgICAgZmFsc2UgPT4gMCwKICAgIC8vICAgICB9OwogICAgLy8gICAgIGJsb2NrISh0cmFuc2Zlci53cml0ZSgoc2FtcGxlLCBzYW1wbGUpKSkudW53cmFwKCk7CiAgICAvLyAgICAgaSA9IChpICsgMSkgJSBTQU1QTEVTX1BFUl9DWUNMRTsKCiAgICAvLyAgICAgZnJhbWVzICs9IDE7CiAgICAvLyAgICAgaWYgZnJhbWVzID09IFNBTVBMRV9SQVRFX0haIHsKICAgIC8vICAgICAgICAgZnJhbWVzID0gMDsKICAgIC8vICAgICAgICAgaGVhcnRiZWF0LnRvZ2dsZSgpOwogICAgLy8gICAgIH0KICAgIC8vIH0KCiAgICBsb29wIHsKICAgICAgICAvLyBSYW1wIC1BTVBMSVRVREUg4oaSICtBTVBMSVRVREUgb3ZlciBvbmUgY3ljbGUsIHRoZW4gd3JhcC4KICAgICAgICBsZXQgc2FtcGxlID0gKGkgYXMgaTMyICogMiAqIEFNUExJVFVERSAvIFNBTVBMRVNfUEVSX0NZQ0xFIGFzIGkzMiAtIEFNUExJVFVERSkgYXMgaTE2OwogICAgICAgIGJsb2NrISh0cmFuc2Zlci53cml0ZSgoc2FtcGxlLCBzYW1wbGUpKSkudW53cmFwKCk7CiAgICAgICAgaSA9IChpICsgMSkgJSBTQU1QTEVTX1BFUl9DWUNMRTsKICAgIH0KfQoKI1tpbnRlcnJ1cHRdCmZuIEVYVEkwKCkgewogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IHsKICAgICAgICBpZiBsZXQgU29tZShwaW4pID0gQlVUVE9OLmJvcnJvdyhjcykuYm9ycm93X211dCgpLmFzX211dCgpIHsKICAgICAgICAgICAgcGluLmNsZWFyX2ludGVycnVwdF9wZW5kaW5nX2JpdCgpOwogICAgICAgIH0KICAgIH0pOwogICAgVE9HR0xFX1JFUS5zdG9yZSh0cnVlLCBPcmRlcmluZzo6UmVsZWFzZSk7Cn0KAAAAAAAAAABiGAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgMAAAAAAAAWAwAAAAAAAAAAAAAAADwvw" ], [ 404, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAABlGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6QnV0dG9uLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcGFjOjppbnRlcnJ1cHQsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKLy8vIEJ1dHRvbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248QnV0dG9uPj4+ID0gTXV0ZXg6Om5ldyhSZWZDZWxsOjpuZXcoTm9uZSkpOwovLy8gU2V0IGJ5IEVYVEkwIG9uIGEgcHJlc3MgZWRnZSwgY29uc3VtZWQgYnkgdGhlIGF1ZGlvIGxvb3AuCnN0YXRpYyBUT0dHTEVfUkVROiBBdG9taWNCb29sID0gQXRvbWljQm9vbDo6bmV3KGZhbHNlKTsKCnR5cGUgQXVkaW9PdXQgPSBJMnNUcmFuc2ZlcjxJMnM8cGFjOjpTUEkzPiwgTWFzdGVyLCBUcmFuc21pdCwgUGhpbGlwcywgRGF0YTE2Q2hhbm5lbDE2PjsKCi8vLyBJMlMzIG1hc3RlciB0cmFuc21pdCwgMTYtYml0IHN0ZXJlbywgTUNMSyBvdXQgZm9yIHRoZSBjb2RlYy4KZm4gYXVkaW9fb3V0KAogICAgc3BpOiBwYWM6OlNQSTMsCiAgICBwaW5zOiAoZ3Bpb2E6OlBBNCwgZ3Bpb2M6OlBDMTAsIE9wdGlvbjxncGlvYzo6UEM3PiwgZ3Bpb2M6OlBDMTIpLAogICAgcmNjOiAmbXV0IFJjYywKKSAtPiBBdWRpb091dCB7CiAgICBsZXQgaTJzID0gSTJzOjpuZXcoc3BpLCBwaW5zLCByY2MpOwogICAgbGV0IGNvbmZpZyA9IEkyc1RyYW5zZmVyQ29uZmlnOjpuZXdfbWFzdGVyKCkKICAgICAgICAudHJhbnNtaXQoKQogICAgICAgIC5zdGFuZGFyZChQaGlsaXBzKQogICAgICAgIC5kYXRhX2Zvcm1hdChEYXRhMTZDaGFubmVsMTYpCiAgICAgICAgLm1hc3Rlcl9jbG9jayh0cnVlKQogICAgICAgIC5yZXF1ZXN0X2ZyZXF1ZW5jeShTQU1QTEVfUkFURV9IWik7CiAgICBJMnNUcmFuc2Zlcjo6bmV3KGkycywgY29uZmlnKQp9CgovLy8gU2FtcGxlIGBpYCAob2YgU0FNUExFU19QRVJfQ1lDTEUpIG9mIHRoZSBzYXd0b290aDogYSBsaW5lYXIgcmFtcCBmcm9tCi8vLyAtQU1QTElUVURFIHRvICtBTVBMSVRVREUsIHdyYXBwaW5nIGVhY2ggY3ljbGUuCmZuIHNhd19zYW1wbGUoaTogdTMyKSAtPiBpMTYgewogICAgKGkgYXMgaTMyICogMiAqIEFNUExJVFVERSAvIFNBTVBMRVNfUEVSX0NZQ0xFIGFzIGkzMiAtIEFNUExJVFVERSkgYXMgaTE2Cn0KCiNbZW50cnldCmZuIG1haW4oKSAtPiAhIHsKICAgIGxldCBjcCA9IGNvcnRleF9tOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwogICAgbGV0IG11dCBwID0gcGFjOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwoKICAgIC8vIFBMTEkyUyB0dW5lZCB0byA2MS40NCBNSHogc28gNDgga0h6IGRpdmlkZXMgZXhhY3RseSAoNjEuNDQgTUh6IC8gMjU2ZnMgLyA1KS4KICAgIGxldCBtdXQgcmNjID0gcAogICAgICAgIC5SQ0MKICAgICAgICAuZnJlZXplKENvbmZpZzo6aHNpKCkuc3lzY2xrKDk2Lk1IeigpKS5pMnNfY2xrKDYxNDQwLmtIeigpKSk7CiAgICBsZXQgbXV0IGRlbGF5ID0gY3AuU1lTVC5kZWxheSgmcmNjLmNsb2Nrcyk7CgogICAgbGV0IGdwaW9hID0gcC5HUElPQS5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2IgPSBwLkdQSU9CLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYyA9IHAuR1BJT0Muc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9kID0gcC5HUElPRC5zcGxpdCgmbXV0IHJjYyk7CgogICAgLy8gVVNFUiBidXR0b24gKEIxKTogcmlzaW5nLWVkZ2UgaW50ZXJydXB0IG9uIEVYVEkwLgogICAgbGV0IG11dCBzeXNjZmcgPSBwLlNZU0NGRy5jb25zdHJhaW4oJm11dCByY2MpOwogICAgbGV0IG11dCBidXR0b24gPSBCdXR0b246Om5ldyhncGlvYS5wYTApOwogICAgYnV0dG9uLmxpc3RlbigmbXV0IHN5c2NmZywgJm11dCBwLkVYVEkpOwogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IEJVVFRPTi5ib3Jyb3coY3MpLnJlcGxhY2UoU29tZShidXR0b24pKSk7CiAgICB1bnNhZmUgeyBwYWM6Ok5WSUM6OnVubWFzayhwYWM6OkludGVycnVwdDo6RVhUSTApIH07CgogICAgLy8gQ1M0M0wyMiBjb2RlYzogY29udHJvbCBwb3J0ICsgcmVzZXQgdmlhIHRoZSBib2FyZC1zdXBwb3J0IGRyaXZlci4KICAgIGxldCBpMmMgPSBJMmM6Om5ldygKICAgICAgICBwLkkyQzEsCiAgICAgICAgKGdwaW9iLnBiNiwgZ3Bpb2IucGI5KSwKICAgICAgICBNb2RlOjpzdGFuZGFyZCgxMDAua0h6KCkpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKICAgIGxldCBtdXQgY29kZWMgPSBDczQzbDIyOjpuZXcoaTJjLCBncGlvZC5wZDQuaW50b19wdXNoX3B1bGxfb3V0cHV0KCkpOwogICAgbWF0Y2ggY29kZWMuaW5pdCgmbXV0IGRlbGF5KSB7CiAgICAgICAgT2soaWQpID0+IGRlZm10OjppbmZvISgiY29kZWMgdXAsIElEIHJlZyB7PXU4OiMwNHh9IiwgaWQpLAogICAgICAgIEVycihlKSA9PiBkZWZtdDo6ZXJyb3IhKCJjb2RlYyBpbml0IGZhaWxlZDoge30iLCBkZWZtdDo6RGVidWcyRm9ybWF0KCZlKSksCiAgICB9CgogICAgbGV0IG11dCB0cmFuc2ZlciA9IGF1ZGlvX291dCgKICAgICAgICBwLlNQSTMsCiAgICAgICAgKGdwaW9hLnBhNCwgZ3Bpb2MucGMxMCwgU29tZShncGlvYy5wYzcpLCBncGlvYy5wYzEyKSwKICAgICAgICAmbXV0IHJjYywKICAgICk7CgogICAgZGVmbXQ6OmluZm8hKAogICAgICAgICJzYXc6IHt9IEh6LCBzYW1wbGUgcmF0ZSB7fSBIeiAoe30gc2FtcGxlcy9jeWNsZSkiLAogICAgICAgIFNBV19IWiwKICAgICAgICB0cmFuc2Zlci5zYW1wbGVfcmF0ZSgpLAogICAgICAgIFNBTVBMRVNfUEVSX0NZQ0xFCiAgICApOwoKICAgIC8vIE9uLWJvYXJkIExFRHM6IHNvdXRoIChMRDYsIGJsdWUpID0gMSBIeiBoZWFydGJlYXQgc28gaXQncyB2aXNpYmxlIHRoZQogICAgLy8gZmlybXdhcmUgaXMgYWxpdmUgd2l0aG91dCBhIGRlYnVnZ2VyOyB3ZXN0IChMRDQsIGdyZWVuKSA9IHNhdyBwbGF5aW5nLgogICAgbGV0IGNvbXBhc3MgPSBMZWRDb21wYXNzOjpuZXcoZ3Bpb2QucGQxMiwgZ3Bpb2QucGQxMywgZ3Bpb2QucGQxNCwgZ3Bpb2QucGQxNSk7CiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGNvbXBhc3MuczsKICAgIGxldCBtdXQgc2F3X2xlZCA9IGNvbXBhc3MudzsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIC8vIGxvb3AgewogICAgLy8gICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAvLyAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgLy8gICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgLy8gICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgIC8vICAgICAgICAgb24gPSAhb247CiAgICAvLyAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgLy8gICAgICAgICBzYXdfbGVkLnNldChvbik7CiAgICAvLyAgICAgICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgLy8gICAgIH0KCiAgICAvLyAgICAgbGV0IHNhbXBsZSA9IG1hdGNoIG9uIHsKICAgIC8vICAgICAgICAgdHJ1ZSA9PiBzYXdfc2FtcGxlKGkpLAogICAgLy8gICAgICAgICBmYWxzZSA9PiAwLAogICAgLy8gICAgIH07CiAgICAvLyAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgIC8vICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwoKICAgIC8vICAgICBmcmFtZXMgKz0gMTsKICAgIC8vICAgICBpZiBmcmFtZXMgPT0gU0FNUExFX1JBVEVfSFogewogICAgLy8gICAgICAgICBmcmFtZXMgPSAwOwogICAgLy8gICAgICAgICBoZWFydGJlYXQudG9nZ2xlKCk7CiAgICAvLyAgICAgfQogICAgLy8gfQoKICAgIGxvb3AgewogICAgICAgIC8vIFJhbXAgLUFNUExJVFVERSDihpIgK0FNUExJVFVERSBvdmVyIG9uZSBjeWNsZSwgdGhlbiB3cmFwLgogICAgICAgIGxldCBzYW1wbGUgPSAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTY7CiAgICAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwogICAgfQp9CgojW2ludGVycnVwdF0KZm4gRVhUSTAoKSB7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgewogICAgICAgIGlmIGxldCBTb21lKHBpbikgPSBCVVRUT04uYm9ycm93KGNzKS5ib3Jyb3dfbXV0KCkuYXNfbXV0KCkgewogICAgICAgICAgICBwaW4uY2xlYXJfaW50ZXJydXB0X3BlbmRpbmdfYml0KCk7CiAgICAgICAgfQogICAgfSk7CiAgICBUT0dHTEVfUkVRLnN0b3JlKHRydWUsIE9yZGVyaW5nOjpSZWxlYXNlKTsKfQoAAAAAAAAAAFwYAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgMAAAAAAAAWAwAAAAAAAAAAAAAAADwvw" ], [ 405, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAABfGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6QnV0dG9uLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcGFjOjppbnRlcnJ1cHQsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKLy8vIEJ1dHRvbiwgcGFya2VkIGhlcmUgc28gdGhlIEVYVEkwIGhhbmRsZXIgY2FuIGNsZWFyIGl0cyBwZW5kaW5nIGJpdC4Kc3RhdGljIEJVVFRPTjogTXV0ZXg8UmVmQ2VsbDxPcHRpb248QnV0dG9uPj4+ID0gTXV0ZXg6Om5ldyhSZWZDZWxsOjpuZXcoTm9uZSkpOwovLy8gU2V0IGJ5IEVYVEkwIG9uIGEgcHJlc3MgZWRnZSwgY29uc3VtZWQgYnkgdGhlIGF1ZGlvIGxvb3AuCnN0YXRpYyBUT0dHTEVfUkVROiBBdG9taWNCb29sID0gQXRvbWljQm9vbDo6bmV3KGZhbHNlKTsKCnR5cGUgQXVkaW9PdXQgPSBJMnNUcmFuc2ZlcjxJMnM8cGFjOjpTUEkzPiwgTWFzdGVyLCBUcmFuc21pdCwgUGhpbGlwcywgRGF0YTE2Q2hhbm5lbDE2PjsKCi8vLyBJMlMzIG1hc3RlciB0cmFuc21pdCwgMTYtYml0IHN0ZXJlbywgTUNMSyBvdXQgZm9yIHRoZSBjb2RlYy4KZm4gYXVkaW9fb3V0KAogICAgc3BpOiBwYWM6OlNQSTMsCiAgICBwaW5zOiAoZ3Bpb2E6OlBBNCwgZ3Bpb2M6OlBDMTAsIE9wdGlvbjxncGlvYzo6UEM3PiwgZ3Bpb2M6OlBDMTIpLAogICAgcmNjOiAmbXV0IFJjYywKKSAtPiBBdWRpb091dCB7CiAgICBsZXQgaTJzID0gSTJzOjpuZXcoc3BpLCBwaW5zLCByY2MpOwogICAgbGV0IGNvbmZpZyA9IEkyc1RyYW5zZmVyQ29uZmlnOjpuZXdfbWFzdGVyKCkKICAgICAgICAudHJhbnNtaXQoKQogICAgICAgIC5zdGFuZGFyZChQaGlsaXBzKQogICAgICAgIC5kYXRhX2Zvcm1hdChEYXRhMTZDaGFubmVsMTYpCiAgICAgICAgLm1hc3Rlcl9jbG9jayh0cnVlKQogICAgICAgIC5yZXF1ZXN0X2ZyZXF1ZW5jeShTQU1QTEVfUkFURV9IWik7CiAgICBJMnNUcmFuc2Zlcjo6bmV3KGkycywgY29uZmlnKQp9CgovLy8gU2FtcGxlIGBpYCAob2YgU0FNUExFU19QRVJfQ1lDTEUpIG9mIHRoZSBzYXd0b290aDogYSBsaW5lYXIgcmFtcCBmcm9tCi8vLyAtQU1QTElUVURFIHRvICtBTVBMSVRVREUsIHdyYXBwaW5nIGVhY2ggY3ljbGUuCmZuIHNhd19zYW1wbGUoaTogdTMyKSAtPiBpMTYgewogICAgKGkgYXMgaTMyICogMiAqIEFNUExJVFVERSAvIFNBTVBMRVNfUEVSX0NZQ0xFIGFzIGkzMiAtIEFNUExJVFVERSkgYXMgaTE2Cn0KCiNbZW50cnldCmZuIG1haW4oKSAtPiAhIHsKICAgIGxldCBjcCA9IGNvcnRleF9tOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwogICAgbGV0IG11dCBwID0gcGFjOjpQZXJpcGhlcmFsczo6dGFrZSgpLnVud3JhcCgpOwoKICAgIC8vIFBMTEkyUyB0dW5lZCB0byA2MS40NCBNSHogc28gNDgga0h6IGRpdmlkZXMgZXhhY3RseSAoNjEuNDQgTUh6IC8gMjU2ZnMgLyA1KS4KICAgIGxldCBtdXQgcmNjID0gcAogICAgICAgIC5SQ0MKICAgICAgICAuZnJlZXplKENvbmZpZzo6aHNpKCkuc3lzY2xrKDk2Lk1IeigpKS5pMnNfY2xrKDYxNDQwLmtIeigpKSk7CiAgICBsZXQgbXV0IGRlbGF5ID0gY3AuU1lTVC5kZWxheSgmcmNjLmNsb2Nrcyk7CgogICAgbGV0IGdwaW9hID0gcC5HUElPQS5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2IgPSBwLkdQSU9CLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYyA9IHAuR1BJT0Muc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9kID0gcC5HUElPRC5zcGxpdCgmbXV0IHJjYyk7CgogICAgLy8gVVNFUiBidXR0b24gKEIxKTogcmlzaW5nLWVkZ2UgaW50ZXJydXB0IG9uIEVYVEkwLgogICAgbGV0IG11dCBzeXNjZmcgPSBwLlNZU0NGRy5jb25zdHJhaW4oJm11dCByY2MpOwogICAgbGV0IG11dCBidXR0b24gPSBCdXR0b246Om5ldyhncGlvYS5wYTApOwogICAgYnV0dG9uLmxpc3RlbigmbXV0IHN5c2NmZywgJm11dCBwLkVYVEkpOwogICAgY29ydGV4X206OmludGVycnVwdDo6ZnJlZSh8Y3N8IEJVVFRPTi5ib3Jyb3coY3MpLnJlcGxhY2UoU29tZShidXR0b24pKSk7CiAgICB1bnNhZmUgeyBwYWM6Ok5WSUM6OnVubWFzayhwYWM6OkludGVycnVwdDo6RVhUSTApIH07CgogICAgLy8gQ1M0M0wyMiBjb2RlYzogY29udHJvbCBwb3J0ICsgcmVzZXQgdmlhIHRoZSBib2FyZC1zdXBwb3J0IGRyaXZlci4KICAgIGxldCBpMmMgPSBJMmM6Om5ldygKICAgICAgICBwLkkyQzEsCiAgICAgICAgKGdwaW9iLnBiNiwgZ3Bpb2IucGI5KSwKICAgICAgICBNb2RlOjpzdGFuZGFyZCgxMDAua0h6KCkpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKICAgIGxldCBtdXQgY29kZWMgPSBDczQzbDIyOjpuZXcoaTJjLCBncGlvZC5wZDQuaW50b19wdXNoX3B1bGxfb3V0cHV0KCkpOwogICAgbWF0Y2ggY29kZWMuaW5pdCgmbXV0IGRlbGF5KSB7CiAgICAgICAgT2soaWQpID0+IGRlZm10OjppbmZvISgiY29kZWMgdXAsIElEIHJlZyB7PXU4OiMwNHh9IiwgaWQpLAogICAgICAgIEVycihlKSA9PiBkZWZtdDo6ZXJyb3IhKCJjb2RlYyBpbml0IGZhaWxlZDoge30iLCBkZWZtdDo6RGVidWcyRm9ybWF0KCZlKSksCiAgICB9CgogICAgbGV0IG11dCB0cmFuc2ZlciA9IGF1ZGlvX291dCgKICAgICAgICBwLlNQSTMsCiAgICAgICAgKGdwaW9hLnBhNCwgZ3Bpb2MucGMxMCwgU29tZShncGlvYy5wYzcpLCBncGlvYy5wYzEyKSwKICAgICAgICAmbXV0IHJjYywKICAgICk7CgogICAgZGVmbXQ6OmluZm8hKAogICAgICAgICJzYXc6IHt9IEh6LCBzYW1wbGUgcmF0ZSB7fSBIeiAoe30gc2FtcGxlcy9jeWNsZSkiLAogICAgICAgIFNBV19IWiwKICAgICAgICB0cmFuc2Zlci5zYW1wbGVfcmF0ZSgpLAogICAgICAgIFNBTVBMRVNfUEVSX0NZQ0xFCiAgICApOwoKICAgIC8vIE9uLWJvYXJkIExFRHM6IHNvdXRoIChMRDYsIGJsdWUpID0gMSBIeiBoZWFydGJlYXQgc28gaXQncyB2aXNpYmxlIHRoZQogICAgLy8gZmlybXdhcmUgaXMgYWxpdmUgd2l0aG91dCBhIGRlYnVnZ2VyOyB3ZXN0IChMRDQsIGdyZWVuKSA9IHNhdyBwbGF5aW5nLgogICAgbGV0IGNvbXBhc3MgPSBMZWRDb21wYXNzOjpuZXcoZ3Bpb2QucGQxMiwgZ3Bpb2QucGQxMywgZ3Bpb2QucGQxNCwgZ3Bpb2QucGQxNSk7CiAgICBsZXQgbXV0IGhlYXJ0YmVhdCA9IGNvbXBhc3MuczsKICAgIGxldCBtdXQgc2F3X2xlZCA9IGNvbXBhc3MudzsKCiAgICBsZXQgbXV0IGkgPSAwOwogICAgbGV0IG11dCBmcmFtZXM6IHUzMiA9IDA7CiAgICBsZXQgbXV0IG9uID0gZmFsc2U7IC8vIHNpbGVudCBhdCBib290OyBVU0VSIGJ1dHRvbiB0b2dnbGVzIHRoZSBzYXcgb24KICAgIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIC8vIGxvb3AgewogICAgLy8gICAgIC8vIENvbnN1bWUgYW55IHByZXNzIGZsYWcgZXZlcnkgZnJhbWUgKHNvIGJvdW5jZSBkdXJpbmcgdGhlIGhvbGQtb2ZmCiAgICAvLyAgICAgLy8gd2luZG93IGlzIGRpc2NhcmRlZCksIGFwcGx5IGl0IG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgLy8gICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgLy8gICAgIGlmIFRPR0dMRV9SRVEuc3dhcChmYWxzZSwgT3JkZXJpbmc6OkFjcVJlbCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgIC8vICAgICAgICAgb24gPSAhb247CiAgICAvLyAgICAgICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgLy8gICAgICAgICBzYXdfbGVkLnNldChvbik7CiAgICAvLyAgICAgICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgLy8gICAgIH0KCiAgICAvLyAgICAgbGV0IHNhbXBsZSA9IG1hdGNoIG9uIHsKICAgIC8vICAgICAgICAgdHJ1ZSA9PiBzYXdfc2FtcGxlKGkpLAogICAgLy8gICAgICAgICBmYWxzZSA9PiAwLAogICAgLy8gICAgIH07CiAgICAvLyAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgIC8vICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwoKICAgIC8vICAgICBmcmFtZXMgKz0gMTsKICAgIC8vICAgICBpZiBmcmFtZXMgPT0gU0FNUExFX1JBVEVfSFogewogICAgLy8gICAgICAgICBmcmFtZXMgPSAwOwogICAgLy8gICAgICAgICBoZWFydGJlYXQudG9nZ2xlKCk7CiAgICAvLyAgICAgfQogICAgLy8gfQoKICAgIGxvb3AgewogICAgICAgIC8vIFJhbXAgLUFNUExJVFVERSDihpIgK0FNUExJVFVERSBvdmVyIG9uZSBjeWNsZSwgdGhlbiB3cmFwLgogICAgICAgIGxldCBzYW1wbGUgPSAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTY7CiAgICAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwogICAgfQp9CgojW2ludGVycnVwdF0KZm4gRVhUSTAoKSB7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgewogICAgICAgIGlmIGxldCBTb21lKGJ1dHRvbikgPSBCVVRUT04uYm9ycm93KGNzKS5ib3Jyb3dfbXV0KCkuYXNfbXV0KCkgewogICAgICAgICAgICBidXR0b24uY2xlYXJfaW50ZXJydXB0KCk7CiAgICAgICAgfQogICAgfSk7CiAgICBUT0dHTEVfUkVRLnN0b3JlKHRydWUsIE9yZGVyaW5nOjpSZWxlYXNlKTsKfQoAAAAAAAAAAG0YAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFgMAAAAAAAAWAwAAAAAAAAAAAAAAADwvw" ], [ 428, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAABwGAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6e0J1dHRvbiwgQnV0dG9uc30sCiAgICBjb2RlYzo6Q3M0M2wyMiwKICAgIGxlZDo6TGVkQ29tcGFzcywKICAgIGhhbDo6ewogICAgICAgIGdwaW86OntncGlvYSwgZ3Bpb2N9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uLCBwYXJrZWQgaGVyZSBzbyB0aGUgRVhUSTAgaGFuZGxlciBjYW4gY2xlYXIgaXRzIHBlbmRpbmcgYml0LgpzdGF0aWMgQlVUVE9OOiBNdXRleDxSZWZDZWxsPE9wdGlvbjxCdXR0b24+Pj4gPSBNdXRleDo6bmV3KFJlZkNlbGw6Om5ldyhOb25lKSk7Ci8vLyBTZXQgYnkgRVhUSTAgb24gYSBwcmVzcyBlZGdlLCBjb25zdW1lZCBieSB0aGUgYXVkaW8gbG9vcC4Kc3RhdGljIFRPR0dMRV9SRVE6IEF0b21pY0Jvb2wgPSBBdG9taWNCb29sOjpuZXcoZmFsc2UpOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgbXV0IHAgPSBwYWM6OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CgogICAgLy8gUExMSTJTIHR1bmVkIHRvIDYxLjQ0IE1IeiBzbyA0OCBrSHogZGl2aWRlcyBleGFjdGx5ICg2MS40NCBNSHogLyAyNTZmcyAvIDUpLgogICAgbGV0IG11dCByY2MgPSBwCiAgICAgICAgLlJDQwogICAgICAgIC5mcmVlemUoQ29uZmlnOjpoc2koKS5zeXNjbGsoOTYuTUh6KCkpLmkyc19jbGsoNjE0NDAua0h6KCkpKTsKICAgIGxldCBtdXQgZGVsYXkgPSBjcC5TWVNULmRlbGF5KCZyY2MuY2xvY2tzKTsKCiAgICBsZXQgZ3Bpb2EgPSBwLkdQSU9BLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYiA9IHAuR1BJT0Iuc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9jID0gcC5HUElPQy5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2QgPSBwLkdQSU9ELnNwbGl0KCZtdXQgcmNjKTsKCiAgICAvLyBVU0VSIGJ1dHRvbiAoQjEpOiByaXNpbmctZWRnZSBpbnRlcnJ1cHQgb24gRVhUSTAuCiAgICBsZXQgbXV0IHN5c2NmZyA9IHAuU1lTQ0ZHLmNvbnN0cmFpbigmbXV0IHJjYyk7CiAgICBsZXQgbXV0IGJ1dHRvbiA9IEJ1dHRvbnM6Om5ldyhncGlvYS5wYTApLnVzZXI7CiAgICBidXR0b24ubGlzdGVuKCZtdXQgc3lzY2ZnLCAmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKICAgIHVuc2FmZSB7IHBhYzo6TlZJQzo6dW5tYXNrKHBhYzo6SW50ZXJydXB0OjpFWFRJMCkgfTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsgLy8gc2lsZW50IGF0IGJvb3Q7IFVTRVIgYnV0dG9uIHRvZ2dsZXMgdGhlIHNhdyBvbgogICAgbGV0IG11dCBob2xkb2ZmOiB1MzIgPSAwOwogICAgLy8gbG9vcCB7CiAgICAvLyAgICAgLy8gQ29uc3VtZSBhbnkgcHJlc3MgZmxhZyBldmVyeSBmcmFtZSAoc28gYm91bmNlIGR1cmluZyB0aGUgaG9sZC1vZmYKICAgIC8vICAgICAvLyB3aW5kb3cgaXMgZGlzY2FyZGVkKSwgYXBwbHkgaXQgb25seSBvdXRzaWRlIHRoZSB3aW5kb3cuCiAgICAvLyAgICAgaG9sZG9mZiA9IGhvbGRvZmYuc2F0dXJhdGluZ19zdWIoMSk7CiAgICAvLyAgICAgaWYgVE9HR0xFX1JFUS5zd2FwKGZhbHNlLCBPcmRlcmluZzo6QWNxUmVsKSAmJiBob2xkb2ZmID09IDAgewogICAgLy8gICAgICAgICBvbiA9ICFvbjsKICAgIC8vICAgICAgICAgaG9sZG9mZiA9IERFQk9VTkNFX1NBTVBMRVM7CiAgICAvLyAgICAgICAgIHNhd19sZWQuc2V0KG9uKTsKICAgIC8vICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAvLyAgICAgfQoKICAgIC8vICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgLy8gICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAvLyAgICAgICAgIGZhbHNlID0+IDAsCiAgICAvLyAgICAgfTsKICAgIC8vICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgLy8gICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgLy8gICAgIGZyYW1lcyArPSAxOwogICAgLy8gICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAvLyAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAvLyAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgIC8vICAgICB9CiAgICAvLyB9CgogICAgbG9vcCB7CiAgICAgICAgLy8gUmFtcCAtQU1QTElUVURFIOKGkiArQU1QTElUVURFIG92ZXIgb25lIGN5Y2xlLCB0aGVuIHdyYXAuCiAgICAgICAgbGV0IHNhbXBsZSA9IChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNjsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CiAgICB9Cn0KCiNbaW50ZXJydXB0XQpmbiBFWFRJMCgpIHsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCB7CiAgICAgICAgaWYgbGV0IFNvbWUoYnV0dG9uKSA9IEJVVFRPTi5ib3Jyb3coY3MpLmJvcnJvd19tdXQoKS5hc19tdXQoKSB7CiAgICAgICAgICAgIGJ1dHRvbi5jbGVhcl9pbnRlcnJ1cHQoKTsKICAgICAgICB9CiAgICB9KTsKICAgIFRPR0dMRV9SRVEuc3RvcmUodHJ1ZSwgT3JkZXJpbmc6OlJlbGVhc2UpOwp9CgAAAAAAAAAANBgAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAEPAAAAAAAAAQ8AAAAAAAAAAAAAAADwvw" ], [ 434, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAAA3GAAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZSB2aWEgRVhUSTA6IHRoZQovLyEgaW50ZXJydXB0IG9ubHkgc2V0cyBhIGZsYWcsIHRoZSBhdWRpbyBsb29wIGFwcGxpZXMgaXQgKHdpdGggYSBkZWJvdW5jZQovLyEgaG9sZC1vZmYpLCBzbyBubyBHUElPIHBvbGxpbmcgb3IgSTJDIHRyYWZmaWMgaGFwcGVucyBpbiB0aGUgc2FtcGxlIHBhdGguCi8vISBXaGlsZSBvZmYsIHNpbGVuY2UgaXMgc3RyZWFtZWQgc28gdGhlIGNvZGVjIGtlZXBzIGl0cyBjbG9ja3MuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3JlOjpjZWxsOjpSZWZDZWxsOwp1c2UgY29yZTo6c3luYzo6YXRvbWljOjp7QXRvbWljQm9vbCwgT3JkZXJpbmd9OwoKdXNlIGNvcnRleF9tOjppbnRlcnJ1cHQ6Ok11dGV4Owp1c2UgY29ydGV4X21fcnQ6OmVudHJ5OwovLyB0aGUgSEFMIGlzIHJlLWV4cG9ydGVkIGJ5IHRoZSBmNDExIGJvYXJkLXN1cHBvcnQgY3JhdGUgYXMgYGY0MTE6OmhhbGAKdXNlIGY0MTE6OnsKICAgIGJ1dHRvbjo6e0J1dHRvbiwgQnV0dG9uc30sCiAgICBjb2RlYzo6Q3M0M2wyMiwKICAgIGxlZDo6TGVkQ29tcGFzcywKICAgIGhhbDo6ewogICAgICAgIGdwaW86OntncGlvYSwgZ3Bpb2N9LAogICAgICAgIGkyYzo6e0kyYywgTW9kZX0sCiAgICAgICAgaTJzOjpzdG0zMl9pMnNfdjEyeDo6dHJhbnNmZXI6OiosCiAgICAgICAgaTJzOjpJMnMsCiAgICAgICAgbmI6OmJsb2NrLAogICAgICAgIHBhYywKICAgICAgICBwYWM6OmludGVycnVwdCwKICAgICAgICBwcmVsdWRlOjoqLAogICAgICAgIHJjYzo6e0NvbmZpZywgUmNjfSwKICAgIH0sCn07CgovLyAtLS0tIHRvbmUgLS0tLQpjb25zdCBTQVdfSFo6IHUzMiA9IDQwMDsKY29uc3QgU0FNUExFX1JBVEVfSFo6IHUzMiA9IDQ4XzAwMDsKY29uc3QgU0FNUExFU19QRVJfQ1lDTEU6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gU0FXX0haOyAvLyAxMjAKLy8gRnVsbC1zY2FsZSBpcyBwYWluZnVsbHkgbG91ZCBvbiBoZWFkcGhvbmVzOyBydW4gdGhlIHNhdyBhdCB+MS84IGFtcGxpdHVkZS4KY29uc3QgQU1QTElUVURFOiBpMzIgPSBpMTY6Ok1BWCBhcyBpMzIgLyA4OwoKLy8gLS0tLSBidXR0b24gLS0tLQovLyBBZnRlciBhIHRvZ2dsZSwgaWdub3JlIGZ1cnRoZXIgcHJlc3NlcyBmb3IgfjIwIG1zIG9mIHNhbXBsZXMgKGJvdW5jZSkuCmNvbnN0IERFQk9VTkNFX1NBTVBMRVM6IHUzMiA9IFNBTVBMRV9SQVRFX0haIC8gNTA7CgovLy8gQnV0dG9uLCBwYXJrZWQgaGVyZSBzbyB0aGUgRVhUSTAgaGFuZGxlciBjYW4gY2xlYXIgaXRzIHBlbmRpbmcgYml0LgpzdGF0aWMgQlVUVE9OOiBNdXRleDxSZWZDZWxsPE9wdGlvbjxCdXR0b24+Pj4gPSBNdXRleDo6bmV3KFJlZkNlbGw6Om5ldyhOb25lKSk7Ci8vLyBTZXQgYnkgRVhUSTAgb24gYSBwcmVzcyBlZGdlLCBjb25zdW1lZCBieSB0aGUgYXVkaW8gbG9vcC4Kc3RhdGljIFRPR0dMRV9SRVE6IEF0b21pY0Jvb2wgPSBBdG9taWNCb29sOjpuZXcoZmFsc2UpOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgbXV0IHAgPSBwYWM6OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CgogICAgLy8gUExMSTJTIHR1bmVkIHRvIDYxLjQ0IE1IeiBzbyA0OCBrSHogZGl2aWRlcyBleGFjdGx5ICg2MS40NCBNSHogLyAyNTZmcyAvIDUpLgogICAgbGV0IG11dCByY2MgPSBwCiAgICAgICAgLlJDQwogICAgICAgIC5mcmVlemUoQ29uZmlnOjpoc2koKS5zeXNjbGsoOTYuTUh6KCkpLmkyc19jbGsoNjE0NDAua0h6KCkpKTsKICAgIGxldCBtdXQgZGVsYXkgPSBjcC5TWVNULmRlbGF5KCZyY2MuY2xvY2tzKTsKCiAgICBsZXQgZ3Bpb2EgPSBwLkdQSU9BLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvYiA9IHAuR1BJT0Iuc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9jID0gcC5HUElPQy5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2QgPSBwLkdQSU9ELnNwbGl0KCZtdXQgcmNjKTsKCiAgICAvLyBVU0VSIGJ1dHRvbiAoQjEpOiByaXNpbmctZWRnZSBpbnRlcnJ1cHQgb24gRVhUSTAuCiAgICBsZXQgbXV0IHN5c2NmZyA9IHAuU1lTQ0ZHLmNvbnN0cmFpbigmbXV0IHJjYyk7CiAgICBsZXQgbXV0IGJ1dHRvbiA9IEJ1dHRvbnM6Om5ldyhncGlvYS5wYTApLnVzZXI7CiAgICBidXR0b24ubGlzdGVuKCZtdXQgc3lzY2ZnLCAmbXV0IHAuRVhUSSk7CiAgICBjb3J0ZXhfbTo6aW50ZXJydXB0OjpmcmVlKHxjc3wgQlVUVE9OLmJvcnJvdyhjcykucmVwbGFjZShTb21lKGJ1dHRvbikpKTsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsgLy8gc2lsZW50IGF0IGJvb3Q7IFVTRVIgYnV0dG9uIHRvZ2dsZXMgdGhlIHNhdyBvbgogICAgbGV0IG11dCBob2xkb2ZmOiB1MzIgPSAwOwogICAgLy8gbG9vcCB7CiAgICAvLyAgICAgLy8gQ29uc3VtZSBhbnkgcHJlc3MgZmxhZyBldmVyeSBmcmFtZSAoc28gYm91bmNlIGR1cmluZyB0aGUgaG9sZC1vZmYKICAgIC8vICAgICAvLyB3aW5kb3cgaXMgZGlzY2FyZGVkKSwgYXBwbHkgaXQgb25seSBvdXRzaWRlIHRoZSB3aW5kb3cuCiAgICAvLyAgICAgaG9sZG9mZiA9IGhvbGRvZmYuc2F0dXJhdGluZ19zdWIoMSk7CiAgICAvLyAgICAgaWYgVE9HR0xFX1JFUS5zd2FwKGZhbHNlLCBPcmRlcmluZzo6QWNxUmVsKSAmJiBob2xkb2ZmID09IDAgewogICAgLy8gICAgICAgICBvbiA9ICFvbjsKICAgIC8vICAgICAgICAgaG9sZG9mZiA9IERFQk9VTkNFX1NBTVBMRVM7CiAgICAvLyAgICAgICAgIHNhd19sZWQuc2V0KG9uKTsKICAgIC8vICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAvLyAgICAgfQoKICAgIC8vICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgLy8gICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAvLyAgICAgICAgIGZhbHNlID0+IDAsCiAgICAvLyAgICAgfTsKICAgIC8vICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgLy8gICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgLy8gICAgIGZyYW1lcyArPSAxOwogICAgLy8gICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAvLyAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAvLyAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgIC8vICAgICB9CiAgICAvLyB9CgogICAgbG9vcCB7CiAgICAgICAgLy8gUmFtcCAtQU1QTElUVURFIOKGkiArQU1QTElUVURFIG92ZXIgb25lIGN5Y2xlLCB0aGVuIHdyYXAuCiAgICAgICAgbGV0IHNhbXBsZSA9IChpIGFzIGkzMiAqIDIgKiBBTVBMSVRVREUgLyBTQU1QTEVTX1BFUl9DWUNMRSBhcyBpMzIgLSBBTVBMSVRVREUpIGFzIGkxNjsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CiAgICB9Cn0KCiNbaW50ZXJydXB0XQpmbiBFWFRJMCgpIHsKICAgIGNvcnRleF9tOjppbnRlcnJ1cHQ6OmZyZWUofGNzfCB7CiAgICAgICAgaWYgbGV0IFNvbWUoYnV0dG9uKSA9IEJVVFRPTi5ib3Jyb3coY3MpLmJvcnJvd19tdXQoKS5hc19tdXQoKSB7CiAgICAgICAgICAgIGJ1dHRvbi5jbGVhcl9pbnRlcnJ1cHQoKTsKICAgICAgICB9CiAgICB9KTsKICAgIFRPR0dMRV9SRVEuc3RvcmUodHJ1ZSwgT3JkZXJpbmc6OlJlbGVhc2UpOwp9CgAAAAAAAAAAoBMAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKkJAAAAAAAAqQkAAAAAAAAAAAAAAADwvw" ], [ 454, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAAChEwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZTogdGhlIGF1ZGlvCi8vISBsb29wIHBvbGxzIGl0IG9uY2UgcGVyIGZyYW1lIChhIHByZXNzIGVkZ2Ugb3V0c2lkZSB0aGUgZGVib3VuY2UgaG9sZC1vZmYKLy8hIGZsaXBzIHRoZSB0b25lKS4gV2hpbGUgb2ZmLCBzaWxlbmNlIGlzIHN0cmVhbWVkIHNvIHRoZSBjb2RlYyBrZWVwcyBpdHMKLy8hIGNsb2Nrcy4gR3JlZW4gTEVEIChMRDQpIG1pcnJvcnMgdGhlIHRvbmUgc3RhdGU7IGJsdWUgKExENikgaXMgYSAxIEh6Ci8vISBmaXJtd2FyZSBoZWFydGJlYXQuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3J0ZXhfbV9ydDo6ZW50cnk7Ci8vIHRoZSBIQUwgaXMgcmUtZXhwb3J0ZWQgYnkgdGhlIGY0MTEgYm9hcmQtc3VwcG9ydCBjcmF0ZSBhcyBgZjQxMTo6aGFsYAp1c2UgZjQxMTo6ewogICAgYnV0dG9uOjpCdXR0b25zLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSksIHBvbGxlZCBieSB0aGUgYXVkaW8gbG9vcC4KICAgIGxldCBtdXQgYnV0dG9uID0gQnV0dG9uczo6bmV3KGdwaW9hLnBhMCkudXNlcjsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsgLy8gc2lsZW50IGF0IGJvb3Q7IFVTRVIgYnV0dG9uIHRvZ2dsZXMgdGhlIHNhdyBvbgogICAgbGV0IG11dCBob2xkb2ZmOiB1MzIgPSAwOwogICAgbG9vcCB7CiAgICAgICAgLy8gUG9sbCBldmVyeSBmcmFtZSAoc28gYm91bmNlIGR1cmluZyB0aGUgaG9sZC1vZmYgd2luZG93IGlzCiAgICAgICAgLy8gY29uc3VtZWQgYW5kIGRpc2NhcmRlZCk7IGFwcGx5IHRoZSBlZGdlIG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgICAgIGlmIGJ1dHRvbi5qdXN0X3ByZXNzZWQoKSAmJiBob2xkb2ZmID09IDAgewogICAgICAgICAgICBvbiA9ICFvbjsKICAgICAgICAgICAgaG9sZG9mZiA9IERFQk9VTkNFX1NBTVBMRVM7CiAgICAgICAgICAgIHNhd19sZWQuc2V0KG9uKTsKICAgICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAgICAgfQoKICAgICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAgICAgICAgIGZhbHNlID0+IDAsCiAgICAgICAgfTsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgICAgIGZyYW1lcyArPSAxOwogICAgICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgICAgICB9CiAgICB9Cn0KAAAAAAAAAACjEwAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMIPAAAAAAAAwg8AAAAAAAAAAAAAAADwvw" ], [ 463, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAACkEwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZTogdGhlIGF1ZGlvCi8vISBsb29wIHBvbGxzIGl0IG9uY2UgcGVyIGZyYW1lIChhIHByZXNzIGVkZ2Ugb3V0c2lkZSB0aGUgZGVib3VuY2UgaG9sZC1vZmYKLy8hIGZsaXBzIHRoZSB0b25lKS4gV2hpbGUgb2ZmLCBzaWxlbmNlIGlzIHN0cmVhbWVkIHNvIHRoZSBjb2RlYyBrZWVwcyBpdHMKLy8hIGNsb2Nrcy4gR3JlZW4gTEVEIChMRDQpIG1pcnJvcnMgdGhlIHRvbmUgc3RhdGU7IGJsdWUgKExENikgaXMgYSAxIEh6Ci8vISBmaXJtd2FyZSBoZWFydGJlYXQuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3J0ZXhfbV9ydDo6ZW50cnk7Ci8vIHRoZSBIQUwgaXMgcmUtZXhwb3J0ZWQgYnkgdGhlIGY0MTEgYm9hcmQtc3VwcG9ydCBjcmF0ZSBhcyBgZjQxMTo6aGFsYAp1c2UgZjQxMTo6ewogICAgYnV0dG9uOjpCdXR0b25zLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSksIHBvbGxlZCBieSB0aGUgYXVkaW8gbG9vcC4KICAgIC8vIGxldCBtdXQgYnV0dG9uID0gQnV0dG9uczo6bmV3KGdwaW9hLnBhMCkudXNlcjsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsgLy8gc2lsZW50IGF0IGJvb3Q7IFVTRVIgYnV0dG9uIHRvZ2dsZXMgdGhlIHNhdyBvbgogICAgbGV0IG11dCBob2xkb2ZmOiB1MzIgPSAwOwogICAgbG9vcCB7CiAgICAgICAgLy8gUG9sbCBldmVyeSBmcmFtZSAoc28gYm91bmNlIGR1cmluZyB0aGUgaG9sZC1vZmYgd2luZG93IGlzCiAgICAgICAgLy8gY29uc3VtZWQgYW5kIGRpc2NhcmRlZCk7IGFwcGx5IHRoZSBlZGdlIG9ubHkgb3V0c2lkZSB0aGUgd2luZG93LgogICAgICAgIGhvbGRvZmYgPSBob2xkb2ZmLnNhdHVyYXRpbmdfc3ViKDEpOwogICAgICAgIGlmIGJ1dHRvbi5qdXN0X3ByZXNzZWQoKSAmJiBob2xkb2ZmID09IDAgewogICAgICAgICAgICBvbiA9ICFvbjsKICAgICAgICAgICAgaG9sZG9mZiA9IERFQk9VTkNFX1NBTVBMRVM7CiAgICAgICAgICAgIHNhd19sZWQuc2V0KG9uKTsKICAgICAgICAgICAgZGVmbXQ6OmluZm8hKCJzYXcge30iLCBpZiBvbiB7ICJPTiIgfSBlbHNlIHsgIk9GRiIgfSk7CiAgICAgICAgfQoKICAgICAgICBsZXQgc2FtcGxlID0gbWF0Y2ggb24gewogICAgICAgICAgICB0cnVlID0+IHNhd19zYW1wbGUoaSksCiAgICAgICAgICAgIGZhbHNlID0+IDAsCiAgICAgICAgfTsKICAgICAgICBibG9jayEodHJhbnNmZXIud3JpdGUoKHNhbXBsZSwgc2FtcGxlKSkpLnVud3JhcCgpOwogICAgICAgIGkgPSAoaSArIDEpICUgU0FNUExFU19QRVJfQ1lDTEU7CgogICAgICAgIGZyYW1lcyArPSAxOwogICAgICAgIGlmIGZyYW1lcyA9PSBTQU1QTEVfUkFURV9IWiB7CiAgICAgICAgICAgIGZyYW1lcyA9IDA7CiAgICAgICAgICAgIGhlYXJ0YmVhdC50b2dnbGUoKTsKICAgICAgICB9CiAgICB9Cn0KAAAAAAAAAAC7EwAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIIRAAAAAAAAiBEAAAAAAAAAAAAAAADwvw" ], [ 466, 1, "revert", null, "BAAAAAAAAAAAAAAAAAAAAAAAAAC+EwAALy8hIDQwMCBIeiBzYXd0b290aCBvdXQgdGhlIEY0MTFFLURJU0NPJ3MgMy41IG1tIGphY2suCi8vIQovLyEgVGhlIGphY2sgaXMgZHJpdmVuIGJ5IHRoZSBvbi1ib2FyZCBDUzQzTDIyIGNvZGVjIChzZWUgYGY0MTE6OmNvZGVjYCBmb3IKLy8hIHRoZSBjb250cm9sIGludGVyZmFjZSBhbmQgd2lyaW5nKS4gSTJTMyBydW5zIG1hc3RlciB0cmFuc21pdCBhdCA0OCBrSHoKLy8hIHdpdGggTUNMSyAoMjU2w5dmcykgZW5hYmxlZDsgdGhlIG1haW4gbG9vcCBzdHJlYW1zIGEgNDAwIEh6IHNhd3Rvb3RoCi8vISAoNDggMDAwIC8gNDAwID0gMTIwIHNhbXBsZXMgcGVyIGN5Y2xlKSBpbnRvIGJvdGggY2hhbm5lbHMuCi8vIQovLyEgVGhlIFVTRVIgYnV0dG9uIChCMSwgUEEwLCBoaWdoID0gcHJlc3NlZCkgdG9nZ2xlcyB0aGUgdG9uZTogdGhlIGF1ZGlvCi8vISBsb29wIHBvbGxzIGl0IG9uY2UgcGVyIGZyYW1lIChhIHByZXNzIGVkZ2Ugb3V0c2lkZSB0aGUgZGVib3VuY2UgaG9sZC1vZmYKLy8hIGZsaXBzIHRoZSB0b25lKS4gV2hpbGUgb2ZmLCBzaWxlbmNlIGlzIHN0cmVhbWVkIHNvIHRoZSBjb2RlYyBrZWVwcyBpdHMKLy8hIGNsb2Nrcy4gR3JlZW4gTEVEIChMRDQpIG1pcnJvcnMgdGhlIHRvbmUgc3RhdGU7IGJsdWUgKExENikgaXMgYSAxIEh6Ci8vISBmaXJtd2FyZSBoZWFydGJlYXQuCgojIVtub19zdGRdCiMhW25vX21haW5dCgovLyBkZWZtdCBnbG9iYWwgbG9nZ2VyIChSVFQgdHJhbnNwb3J0KSArIHBhbmljIGhhbmRsZXIKdXNlIGRlZm10X3J0dCBhcyBfOwp1c2UgcGFuaWNfcHJvYmUgYXMgXzsKCnVzZSBjb3J0ZXhfbV9ydDo6ZW50cnk7Ci8vIHRoZSBIQUwgaXMgcmUtZXhwb3J0ZWQgYnkgdGhlIGY0MTEgYm9hcmQtc3VwcG9ydCBjcmF0ZSBhcyBgZjQxMTo6aGFsYAp1c2UgZjQxMTo6ewogICAgYnV0dG9uOjpCdXR0b25zLAogICAgY29kZWM6OkNzNDNsMjIsCiAgICBsZWQ6OkxlZENvbXBhc3MsCiAgICBoYWw6OnsKICAgICAgICBncGlvOjp7Z3Bpb2EsIGdwaW9jfSwKICAgICAgICBpMmM6OntJMmMsIE1vZGV9LAogICAgICAgIGkyczo6c3RtMzJfaTJzX3YxMng6OnRyYW5zZmVyOjoqLAogICAgICAgIGkyczo6STJzLAogICAgICAgIG5iOjpibG9jaywKICAgICAgICBwYWMsCiAgICAgICAgcHJlbHVkZTo6KiwKICAgICAgICByY2M6OntDb25maWcsIFJjY30sCiAgICB9LAp9OwoKLy8gLS0tLSB0b25lIC0tLS0KY29uc3QgU0FXX0haOiB1MzIgPSA0MDA7CmNvbnN0IFNBTVBMRV9SQVRFX0haOiB1MzIgPSA0OF8wMDA7CmNvbnN0IFNBTVBMRVNfUEVSX0NZQ0xFOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIFNBV19IWjsgLy8gMTIwCi8vIEZ1bGwtc2NhbGUgaXMgcGFpbmZ1bGx5IGxvdWQgb24gaGVhZHBob25lczsgcnVuIHRoZSBzYXcgYXQgfjEvOCBhbXBsaXR1ZGUuCmNvbnN0IEFNUExJVFVERTogaTMyID0gaTE2OjpNQVggYXMgaTMyIC8gODsKCi8vIC0tLS0gYnV0dG9uIC0tLS0KLy8gQWZ0ZXIgYSB0b2dnbGUsIGlnbm9yZSBmdXJ0aGVyIHByZXNzZXMgZm9yIH4yMCBtcyBvZiBzYW1wbGVzIChib3VuY2UpLgpjb25zdCBERUJPVU5DRV9TQU1QTEVTOiB1MzIgPSBTQU1QTEVfUkFURV9IWiAvIDUwOwoKdHlwZSBBdWRpb091dCA9IEkyc1RyYW5zZmVyPEkyczxwYWM6OlNQSTM+LCBNYXN0ZXIsIFRyYW5zbWl0LCBQaGlsaXBzLCBEYXRhMTZDaGFubmVsMTY+OwoKLy8vIEkyUzMgbWFzdGVyIHRyYW5zbWl0LCAxNi1iaXQgc3RlcmVvLCBNQ0xLIG91dCBmb3IgdGhlIGNvZGVjLgpmbiBhdWRpb19vdXQoCiAgICBzcGk6IHBhYzo6U1BJMywKICAgIHBpbnM6IChncGlvYTo6UEE0LCBncGlvYzo6UEMxMCwgT3B0aW9uPGdwaW9jOjpQQzc+LCBncGlvYzo6UEMxMiksCiAgICByY2M6ICZtdXQgUmNjLAopIC0+IEF1ZGlvT3V0IHsKICAgIGxldCBpMnMgPSBJMnM6Om5ldyhzcGksIHBpbnMsIHJjYyk7CiAgICBsZXQgY29uZmlnID0gSTJzVHJhbnNmZXJDb25maWc6Om5ld19tYXN0ZXIoKQogICAgICAgIC50cmFuc21pdCgpCiAgICAgICAgLnN0YW5kYXJkKFBoaWxpcHMpCiAgICAgICAgLmRhdGFfZm9ybWF0KERhdGExNkNoYW5uZWwxNikKICAgICAgICAubWFzdGVyX2Nsb2NrKHRydWUpCiAgICAgICAgLnJlcXVlc3RfZnJlcXVlbmN5KFNBTVBMRV9SQVRFX0haKTsKICAgIEkyc1RyYW5zZmVyOjpuZXcoaTJzLCBjb25maWcpCn0KCi8vLyBTYW1wbGUgYGlgIChvZiBTQU1QTEVTX1BFUl9DWUNMRSkgb2YgdGhlIHNhd3Rvb3RoOiBhIGxpbmVhciByYW1wIGZyb20KLy8vIC1BTVBMSVRVREUgdG8gK0FNUExJVFVERSwgd3JhcHBpbmcgZWFjaCBjeWNsZS4KZm4gc2F3X3NhbXBsZShpOiB1MzIpIC0+IGkxNiB7CiAgICAoaSBhcyBpMzIgKiAyICogQU1QTElUVURFIC8gU0FNUExFU19QRVJfQ1lDTEUgYXMgaTMyIC0gQU1QTElUVURFKSBhcyBpMTYKfQoKI1tlbnRyeV0KZm4gbWFpbigpIC0+ICEgewogICAgbGV0IGNwID0gY29ydGV4X206OlBlcmlwaGVyYWxzOjp0YWtlKCkudW53cmFwKCk7CiAgICBsZXQgcCA9IHBhYzo6UGVyaXBoZXJhbHM6OnRha2UoKS51bndyYXAoKTsKCiAgICAvLyBQTExJMlMgdHVuZWQgdG8gNjEuNDQgTUh6IHNvIDQ4IGtIeiBkaXZpZGVzIGV4YWN0bHkgKDYxLjQ0IE1IeiAvIDI1NmZzIC8gNSkuCiAgICBsZXQgbXV0IHJjYyA9IHAKICAgICAgICAuUkNDCiAgICAgICAgLmZyZWV6ZShDb25maWc6OmhzaSgpLnN5c2Nsayg5Ni5NSHooKSkuaTJzX2Nsayg2MTQ0MC5rSHooKSkpOwogICAgbGV0IG11dCBkZWxheSA9IGNwLlNZU1QuZGVsYXkoJnJjYy5jbG9ja3MpOwoKICAgIGxldCBncGlvYSA9IHAuR1BJT0Euc3BsaXQoJm11dCByY2MpOwogICAgbGV0IGdwaW9iID0gcC5HUElPQi5zcGxpdCgmbXV0IHJjYyk7CiAgICBsZXQgZ3Bpb2MgPSBwLkdQSU9DLnNwbGl0KCZtdXQgcmNjKTsKICAgIGxldCBncGlvZCA9IHAuR1BJT0Quc3BsaXQoJm11dCByY2MpOwoKICAgIC8vIFVTRVIgYnV0dG9uIChCMSksIHBvbGxlZCBieSB0aGUgYXVkaW8gbG9vcC4KICAgIC8vIGxldCBtdXQgYnV0dG9uID0gQnV0dG9uczo6bmV3KGdwaW9hLnBhMCkudXNlcjsKCiAgICAvLyBDUzQzTDIyIGNvZGVjOiBjb250cm9sIHBvcnQgKyByZXNldCB2aWEgdGhlIGJvYXJkLXN1cHBvcnQgZHJpdmVyLgogICAgbGV0IGkyYyA9IEkyYzo6bmV3KAogICAgICAgIHAuSTJDMSwKICAgICAgICAoZ3Bpb2IucGI2LCBncGlvYi5wYjkpLAogICAgICAgIE1vZGU6OnN0YW5kYXJkKDEwMC5rSHooKSksCiAgICAgICAgJm11dCByY2MsCiAgICApOwogICAgbGV0IG11dCBjb2RlYyA9IENzNDNsMjI6Om5ldyhpMmMsIGdwaW9kLnBkNC5pbnRvX3B1c2hfcHVsbF9vdXRwdXQoKSk7CiAgICBtYXRjaCBjb2RlYy5pbml0KCZtdXQgZGVsYXkpIHsKICAgICAgICBPayhpZCkgPT4gZGVmbXQ6OmluZm8hKCJjb2RlYyB1cCwgSUQgcmVnIHs9dTg6IzA0eH0iLCBpZCksCiAgICAgICAgRXJyKGUpID0+IGRlZm10OjplcnJvciEoImNvZGVjIGluaXQgZmFpbGVkOiB7fSIsIGRlZm10OjpEZWJ1ZzJGb3JtYXQoJmUpKSwKICAgIH0KCiAgICBsZXQgbXV0IHRyYW5zZmVyID0gYXVkaW9fb3V0KAogICAgICAgIHAuU1BJMywKICAgICAgICAoZ3Bpb2EucGE0LCBncGlvYy5wYzEwLCBTb21lKGdwaW9jLnBjNyksIGdwaW9jLnBjMTIpLAogICAgICAgICZtdXQgcmNjLAogICAgKTsKCiAgICBkZWZtdDo6aW5mbyEoCiAgICAgICAgInNhdzoge30gSHosIHNhbXBsZSByYXRlIHt9IEh6ICh7fSBzYW1wbGVzL2N5Y2xlKSIsCiAgICAgICAgU0FXX0haLAogICAgICAgIHRyYW5zZmVyLnNhbXBsZV9yYXRlKCksCiAgICAgICAgU0FNUExFU19QRVJfQ1lDTEUKICAgICk7CgogICAgLy8gT24tYm9hcmQgTEVEczogc291dGggKExENiwgYmx1ZSkgPSAxIEh6IGhlYXJ0YmVhdCBzbyBpdCdzIHZpc2libGUgdGhlCiAgICAvLyBmaXJtd2FyZSBpcyBhbGl2ZSB3aXRob3V0IGEgZGVidWdnZXI7IHdlc3QgKExENCwgZ3JlZW4pID0gc2F3IHBsYXlpbmcuCiAgICBsZXQgY29tcGFzcyA9IExlZENvbXBhc3M6Om5ldyhncGlvZC5wZDEyLCBncGlvZC5wZDEzLCBncGlvZC5wZDE0LCBncGlvZC5wZDE1KTsKICAgIGxldCBtdXQgaGVhcnRiZWF0ID0gY29tcGFzcy5zOwogICAgbGV0IG11dCBzYXdfbGVkID0gY29tcGFzcy53OwoKICAgIGxldCBtdXQgaSA9IDA7CiAgICBsZXQgbXV0IGZyYW1lczogdTMyID0gMDsKICAgIGxldCBtdXQgb24gPSBmYWxzZTsKICAgIC8vIGxldCBtdXQgaG9sZG9mZjogdTMyID0gMDsKICAgIGxvb3AgewogICAgICAgIC8vIEJVVFRPTiBESVNBQkxFRCBGT1IgVEVTVCDigJQgc2F3IHNlbGYtdG9nZ2xlcyBldmVyeSBzZWNvbmQgaW5zdGVhZC4KICAgICAgICAvLyBob2xkb2ZmID0gaG9sZG9mZi5zYXR1cmF0aW5nX3N1YigxKTsKICAgICAgICAvLyBpZiBidXR0b24uanVzdF9wcmVzc2VkKCkgJiYgaG9sZG9mZiA9PSAwIHsKICAgICAgICAvLyAgICAgb24gPSAhb247CiAgICAgICAgLy8gICAgIGhvbGRvZmYgPSBERUJPVU5DRV9TQU1QTEVTOwogICAgICAgIC8vICAgICBzYXdfbGVkLnNldChvbik7CiAgICAgICAgLy8gICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgICAgIC8vIH0KCiAgICAgICAgbGV0IHNhbXBsZSA9IG1hdGNoIG9uIHsKICAgICAgICAgICAgdHJ1ZSA9PiBzYXdfc2FtcGxlKGkpLAogICAgICAgICAgICBmYWxzZSA9PiAwLAogICAgICAgIH07CiAgICAgICAgYmxvY2shKHRyYW5zZmVyLndyaXRlKChzYW1wbGUsIHNhbXBsZSkpKS51bndyYXAoKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFNBTVBMRVNfUEVSX0NZQ0xFOwoKICAgICAgICBmcmFtZXMgKz0gMTsKICAgICAgICBpZiBmcmFtZXMgPT0gU0FNUExFX1JBVEVfSFogewogICAgICAgICAgICBmcmFtZXMgPSAwOwogICAgICAgICAgICBoZWFydGJlYXQudG9nZ2xlKCk7CiAgICAgICAgICAgIG9uID0gIW9uOwogICAgICAgICAgICBzYXdfbGVkLnNldChvbik7CiAgICAgICAgICAgIGRlZm10OjppbmZvISgic2F3IHt9IiwgaWYgb24geyAiT04iIH0gZWxzZSB7ICJPRkYiIH0pOwogICAgICAgIH0KICAgIH0KfQoAAAAAAAAAAPQUAAAAAAAAAAAAAAAAAAAAAAAA9BQAAAAAAAAAAAAAAAAAAAAAAAD0FAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAMRAAAAAAAAAxEAAAAAAAAAAAAAAADwvw" ] ] }, { "file": "etc/inventory.md", "settings": { "buffer_size": 3092, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ [ 10, 1, "run_macro_file", { "file": "res://Packages/Default/Add Line.sublime-macro", "register": "\"" }, "AQAAAPEEAAAAAAAA8gQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTBAAAAAAAANMEAAAAAAAAAAAAAAAA8L8" ], [ 12, 1, "insert", { "characters": "lots" }, "BAAAAPIEAAAAAAAA8wQAAAAAAAAAAAAA8wQAAAAAAAD0BAAAAAAAAAAAAAD0BAAAAAAAAPUEAAAAAAAAAAAAAPUEAAAAAAAA9gQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyBAAAAAAAAPIEAAAAAAAAAAAAAAAA8L8" ], [ 13, 1, "insert", { "characters": " of" }, "AwAAAPYEAAAAAAAA9wQAAAAAAAAAAAAA9wQAAAAAAAD4BAAAAAAAAAAAAAD4BAAAAAAAAPkEAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD2BAAAAAAAAPYEAAAAAAAAAAAAAAAA8L8" ], [ 14, 1, "insert", { "characters": " wima" }, "BQAAAPkEAAAAAAAA+gQAAAAAAAAAAAAA+gQAAAAAAAD7BAAAAAAAAAAAAAD7BAAAAAAAAPwEAAAAAAAAAAAAAPwEAAAAAAAA/QQAAAAAAAAAAAAA/QQAAAAAAAD+BAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD5BAAAAAAAAPkEAAAAAAAAAAAAAAAA8L8" ], [ 15, 1, "insert", { "characters": " " }, "AQAAAP4EAAAAAAAA/wQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD+BAAAAAAAAP4EAAAAAAAAAAAAAAAA8L8" ], [ 16, 1, "run_macro_file", { "file": "res://Packages/Default/Delete to Hard BOL.sublime-macro" }, "AQAAAPIEAAAAAAAA8gQAAAAAAAANAAAAbG90cyBvZiB3aW1hIA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD/BAAAAAAAAP8EAAAAAAAAAAAAAAAA8L8" ], [ 17, 1, "insert", { "characters": "lots" }, "BAAAAPIEAAAAAAAA8wQAAAAAAAAAAAAA8wQAAAAAAAD0BAAAAAAAAAAAAAD0BAAAAAAAAPUEAAAAAAAAAAAAAPUEAAAAAAAA9gQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADyBAAAAAAAAPIEAAAAAAAAAAAAAAAA8L8" ], [ 18, 1, "insert", { "characters": " and" }, "BAAAAPYEAAAAAAAA9wQAAAAAAAAAAAAA9wQAAAAAAAD4BAAAAAAAAAAAAAD4BAAAAAAAAPkEAAAAAAAAAAAAAPkEAAAAAAAA+gQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD2BAAAAAAAAPYEAAAAAAAAAAAAAAAA8L8" ], [ 19, 1, "insert", { "characters": " lots" }, "BQAAAPoEAAAAAAAA+wQAAAAAAAAAAAAA+wQAAAAAAAD8BAAAAAAAAAAAAAD8BAAAAAAAAP0EAAAAAAAAAAAAAP0EAAAAAAAA/gQAAAAAAAAAAAAA/gQAAAAAAAD/BAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD6BAAAAAAAAPoEAAAAAAAAAAAAAAAA8L8" ], [ 20, 1, "insert", { "characters": " of" }, "AwAAAP8EAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAABBQAAAAAAAAAAAAABBQAAAAAAAAIFAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD/BAAAAAAAAP8EAAAAAAAAAAAAAAAA8L8" ], [ 21, 1, "insert", { "characters": " eleo" }, "BQAAAAIFAAAAAAAAAwUAAAAAAAAAAAAAAwUAAAAAAAAEBQAAAAAAAAAAAAAEBQAAAAAAAAUFAAAAAAAAAAAAAAUFAAAAAAAABgUAAAAAAAAAAAAABgUAAAAAAAAHBQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAACBQAAAAAAAAIFAAAAAAAAAAAAAAAA8L8" ], [ 22, 1, "left_delete", null, "AQAAAAYFAAAAAAAABgUAAAAAAAABAAAAbw", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAHBQAAAAAAAAcFAAAAAAAAAAAAAAAA8L8" ], [ 23, 1, "insert", { "characters": "trolytic" }, "CAAAAAYFAAAAAAAABwUAAAAAAAAAAAAABwUAAAAAAAAIBQAAAAAAAAAAAAAIBQAAAAAAAAkFAAAAAAAAAAAAAAkFAAAAAAAACgUAAAAAAAAAAAAACgUAAAAAAAALBQAAAAAAAAAAAAALBQAAAAAAAAwFAAAAAAAAAAAAAAwFAAAAAAAADQUAAAAAAAAAAAAADQUAAAAAAAAOBQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAGBQAAAAAAAAYFAAAAAAAAAAAAAAAA8L8" ], [ 24, 1, "insert", { "characters": " caps" }, "BQAAAA4FAAAAAAAADwUAAAAAAAAAAAAADwUAAAAAAAAQBQAAAAAAAAAAAAAQBQAAAAAAABEFAAAAAAAAAAAAABEFAAAAAAAAEgUAAAAAAAAAAAAAEgUAAAAAAAATBQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAOBQAAAAAAAA4FAAAAAAAAAAAAAAAA8L8" ], [ 25, 1, "insert", { "characters": " up" }, "AwAAABMFAAAAAAAAFAUAAAAAAAAAAAAAFAUAAAAAAAAVBQAAAAAAAAAAAAAVBQAAAAAAABYFAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAATBQAAAAAAABMFAAAAAAAAAAAAAAAA8L8" ], [ 26, 1, "insert", { "characters": " to" }, "AwAAABYFAAAAAAAAFwUAAAAAAAAAAAAAFwUAAAAAAAAYBQAAAAAAAAAAAAAYBQAAAAAAABkFAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAWBQAAAAAAABYFAAAAAAAAAAAAAAAA8L8" ], [ 27, 1, "insert", { "characters": " 10uf" }, "BQAAABkFAAAAAAAAGgUAAAAAAAAAAAAAGgUAAAAAAAAbBQAAAAAAAAAAAAAbBQAAAAAAABwFAAAAAAAAAAAAABwFAAAAAAAAHQUAAAAAAAAAAAAAHQUAAAAAAAAeBQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAZBQAAAAAAABkFAAAAAAAAAAAAAAAA8L8" ], [ 28, 2, "left_delete", null, "AgAAAB0FAAAAAAAAHQUAAAAAAAABAAAAZhwFAAAAAAAAHAUAAAAAAAABAAAAdQ", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBQAAAAAAAB4FAAAAAAAAAAAAAAAA8L8" ], [ 29, 1, "insert", { "characters": "0uf" }, "AwAAABwFAAAAAAAAHQUAAAAAAAAAAAAAHQUAAAAAAAAeBQAAAAAAAAAAAAAeBQAAAAAAAB8FAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcBQAAAAAAABwFAAAAAAAAAAAAAAAA8L8" ], [ 30, 1, "left_delete", null, "AQAAAB4FAAAAAAAAHgUAAAAAAAABAAAAZg", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAfBQAAAAAAAB8FAAAAAAAAAAAAAAAA8L8" ], [ 31, 1, "insert", { "characters": "F" }, "AQAAAB4FAAAAAAAAHwUAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBQAAAAAAAB4FAAAAAAAAAAAAAAAA8L8" ], [ 34, 1, "ensure_newline_at_eof", null, "AQAAAP0LAAAAAAAA/gsAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBQAAAAAAAB4FAAAAAAAAAAAAAAAA8L8" ], [ 38, 1, "run_macro_file", { "file": "res://Packages/Default/Add Line.sublime-macro", "register": "\"" }, "AQAAAB8FAAAAAAAAIAUAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAeBQAAAAAAAB4FAAAAAAAAAAAAAADAeEA" ], [ 39, 1, "insert", { "characters": "wima" }, "BAAAACAFAAAAAAAAIQUAAAAAAAAAAAAAIQUAAAAAAAAiBQAAAAAAAAAAAAAiBQAAAAAAACMFAAAAAAAAAAAAACMFAAAAAAAAJAUAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAgBQAAAAAAACAFAAAAAAAAAAAAAAAA8L8" ], [ 40, 1, "insert", { "characters": " x2" }, "AwAAACQFAAAAAAAAJQUAAAAAAAAAAAAAJQUAAAAAAAAmBQAAAAAAAAAAAAAmBQAAAAAAACcFAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAkBQAAAAAAACQFAAAAAAAAAAAAAAAA8L8" ], [ 41, 1, "insert", { "characters": " caps" }, "BQAAACcFAAAAAAAAKAUAAAAAAAAAAAAAKAUAAAAAAAApBQAAAAAAAAAAAAApBQAAAAAAACoFAAAAAAAAAAAAACoFAAAAAAAAKwUAAAAAAAAAAAAAKwUAAAAAAAAsBQAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAnBQAAAAAAACcFAAAAAAAAAAAAAAAA8L8" ], [ 42, 1, "insert", { "characters": " assorted" }, "CQAAACwFAAAAAAAALQUAAAAAAAAAAAAALQUAAAAAAAAuBQAAAAAAAAAAAAAuBQAAAAAAAC8FAAAAAAAAAAAAAC8FAAAAAAAAMAUAAAAAAAAAAAAAMAUAAAAAAAAxBQAAAAAAAAAAAAAxBQAAAAAAADIFAAAAAAAAAAAAADIFAAAAAAAAMwUAAAAAAAAAAAAAMwUAAAAAAAA0BQAAAAAAAAAAAAA0BQAAAAAAADUFAAAAAAAAAAAAAA", "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAsBQAAAAAAACwFAAAAAAAAAAAAAAAA8L8" ] ] }, { "file": "etc/diy/diy-bom.md", "settings": { "buffer_size": 6094, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ ] }, { "file": "/Users/nathanrashleigh/code/f411/src/lib.rs", "settings": { "buffer_size": 588, "line_ending": "Unix" }, "undo_stack": [ [ 12, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAAAtAgAAIyFbbm9fc3RkXQovLyAjIVtkZW55KG1pc3NpbmdfZG9jcyldCgpwdWIgZXh0ZXJuIGNyYXRlIGwzZ2QyMDsKcHViIGV4dGVybiBjcmF0ZSBsc20zMDNkbGhjOwpwdWIgZXh0ZXJuIGNyYXRlIHN0bTMyZjR4eF9oYWwgYXMgaGFsOwoKdXNlIGhhbDo6Z3Bpbzo6Z3Bpb2U6OlBFMzsKdXNlIGhhbDo6Z3Bpbzo6e091dHB1dCwgUHVzaFB1bGx9Owp1c2UgaGFsOjppMmM6OkkyYzsKdXNlIGhhbDo6c3BpOjpTcGk7CnVzZSBoYWw6OnBhYzo6e0kyQzEsIFNQSTF9OwoKcHViIG1vZCBsZWQ7CgovLy8gT24gYm9hcmQgTDNHRDIwIGNvbm5lY3RlZCB0byB0aGUgU1BJMSBidXMgdmlhIHRoZSBwaW5zIFBBNSwgUEE2LCBQQTcgYW5kIFBFMwpwdWIgdHlwZSBMM2dkMjAgPSBsM2dkMjA6OkwzZ2QyMDxTcGk8U1BJMT4sIFBFMzxPdXRwdXQ8UHVzaFB1bGw+Pj47CgovLy8gT24gYm9hcmQgTFNNMzAzRExIQyBjb25uZWN0ZWQgdG8gdGhlIEkyQzEgYnVzIHZpYSB0aGUgUEI2IGFuZCBQQjkgcGlucwpwdWIgdHlwZSBMc20zMDNkbGhjID0gbHNtMzAzZGxoYzo6THNtMzAzZGxoYzxJMmM8STJDMT4+OwoAAAAAAAAAADwCAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAC0CAAAAAAAALQIAAAAAAAAAAAAAAADwvw" ], [ 14, 1, "revert", null, "BAAAAAAAAAAAAAAAAAAAAAAAAAA8AgAAIyFbbm9fc3RkXQovLyAjIVtkZW55KG1pc3NpbmdfZG9jcyldCgpwdWIgZXh0ZXJuIGNyYXRlIGwzZ2QyMDsKcHViIGV4dGVybiBjcmF0ZSBsc20zMDNkbGhjOwpwdWIgZXh0ZXJuIGNyYXRlIHN0bTMyZjR4eF9oYWwgYXMgaGFsOwoKdXNlIGhhbDo6Z3Bpbzo6Z3Bpb2U6OlBFMzsKdXNlIGhhbDo6Z3Bpbzo6e091dHB1dCwgUHVzaFB1bGx9Owp1c2UgaGFsOjppMmM6OkkyYzsKdXNlIGhhbDo6c3BpOjpTcGk7CnVzZSBoYWw6OnBhYzo6e0kyQzEsIFNQSTF9OwoKcHViIG1vZCBjb2RlYzsKcHViIG1vZCBsZWQ7CgovLy8gT24gYm9hcmQgTDNHRDIwIGNvbm5lY3RlZCB0byB0aGUgU1BJMSBidXMgdmlhIHRoZSBwaW5zIFBBNSwgUEE2LCBQQTcgYW5kIFBFMwpwdWIgdHlwZSBMM2dkMjAgPSBsM2dkMjA6OkwzZ2QyMDxTcGk8U1BJMT4sIFBFMzxPdXRwdXQ8UHVzaFB1bGw+Pj47CgovLy8gT24gYm9hcmQgTFNNMzAzRExIQyBjb25uZWN0ZWQgdG8gdGhlIEkyQzEgYnVzIHZpYSB0aGUgUEI2IGFuZCBQQjkgcGlucwpwdWIgdHlwZSBMc20zMDNkbGhjID0gbHNtMzAzZGxoYzo6THNtMzAzZGxoYzxJMmM8STJDMT4+OwoAAAAAAAAAAEwCAAAAAAAAAAAAAAAAAAAAAAAATAIAAAAAAAAAAAAAAAAAAAAAAABMAgAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAC0CAAAAAAAALQIAAAAAAAAAAAAAAADwvw" ] ] }, { "file": "/Users/nathanrashleigh/code/f411/src/button.rs", "settings": { "buffer_size": 2180, "encoding": "UTF-8", "line_ending": "Unix" }, "undo_stack": [ [ 6, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAAAqCAAALy8gIyBPbi1ib2FyZCBVU0VSIGJ1dHRvbgovLwovLyBgQjE6UEEwYCwgaGlnaCA9IHByZXNzZWQgKGV4dGVybmFsIHB1bGwtZG93biArIFJDIG9uIHRoZSBib2FyZDsgdGhlCi8vIGludGVybmFsIHB1bGwtZG93biBpcyBlbmFibGVkIHRvbyBzbyB0aGUgcGluIG5ldmVyIGZsb2F0cykuCgp1c2UgaGFsOjpncGlvOjpncGlvYTo6UEEwOwp1c2UgaGFsOjpncGlvOjp7RWRnZSwgRXh0aVBpbiwgSW5wdXR9Owp1c2UgaGFsOjpwYWM6OkVYVEk7CnVzZSBoYWw6OnN5c2NmZzo6U3lzQ2ZnOwoKLy8vIGBCMTpQQTBgIFVTRVIgYnV0dG9uLCBoaWdoID0gcHJlc3NlZApwdWIgdHlwZSBCMSA9IFBBMDxJbnB1dD47CgovLy8gRWRnZSBzZWVuIGJ5IFtgQnV0dG9uOjpwb2xsYF0gc2luY2UgdGhlIHByZXZpb3VzIGNhbGwKI1tkZXJpdmUoQ2xvbmUsIENvcHksIFBhcnRpYWxFcSldCnB1YiBlbnVtIEV2ZW50IHsKICAgIE5vbmUsCiAgICBQcmVzc2VkLAogICAgUmVsZWFzZWQsCn0KCi8vLyBUaGUgVVNFUiBidXR0b24sIHRyYWNraW5nIGl0cyBvd24gcHJldmlvdXMgbGV2ZWwgZm9yIGVkZ2UgZGV0ZWN0aW9uCnB1YiBzdHJ1Y3QgQnV0dG9uIHsKICAgIHBpbjogQjEsCiAgICBwcmV2X3ByZXNzZWQ6IGJvb2wsCn0KCmltcGwgQnV0dG9uIHsKICAgIC8vLyBDb25maWd1cmVzIFBBMCBhcyBhIHB1bGwtZG93biBpbnB1dCBhbmQgY2FwdHVyZXMgdGhlIGluaXRpYWwgbGV2ZWwKICAgIHB1YiBmbiBuZXcocGEwOiBQQTApIC0+IFNlbGYgewogICAgICAgIGxldCBwaW4gPSBwYTAuaW50b19wdWxsX2Rvd25faW5wdXQoKTsKICAgICAgICBsZXQgcHJldl9wcmVzc2VkID0gcGluLmlzX2hpZ2goKTsKICAgICAgICBCdXR0b24geyBwaW4sIHByZXZfcHJlc3NlZCB9CiAgICB9CgogICAgLy8vIEN1cnJlbnQgbGV2ZWw6IGlzIHRoZSBidXR0b24gaGVsZCBkb3duIHJpZ2h0IG5vdz8KICAgIHB1YiBmbiBwcmVzc2VkKCZzZWxmKSAtPiBib29sIHsKICAgICAgICBzZWxmLnBpbi5pc19oaWdoKCkKICAgIH0KCiAgICAvLy8gU2FtcGxlcyB0aGUgcGluIGFuZCByZXR1cm5zIHRoZSBlZGdlIHNpbmNlIHRoZSBsYXN0IHBvbGwKICAgIHB1YiBmbiBwb2xsKCZtdXQgc2VsZikgLT4gRXZlbnQgewogICAgICAgIGxldCBwcmVzc2VkID0gc2VsZi5waW4uaXNfaGlnaCgpOwogICAgICAgIGxldCBldmVudCA9IG1hdGNoIChzZWxmLnByZXZfcHJlc3NlZCwgcHJlc3NlZCkgewogICAgICAgICAgICAoZmFsc2UsIHRydWUpID0+IEV2ZW50OjpQcmVzc2VkLAogICAgICAgICAgICAodHJ1ZSwgZmFsc2UpID0+IEV2ZW50OjpSZWxlYXNlZCwKICAgICAgICAgICAgXyA9PiBFdmVudDo6Tm9uZSwKICAgICAgICB9OwogICAgICAgIHNlbGYucHJldl9wcmVzc2VkID0gcHJlc3NlZDsKICAgICAgICBldmVudAogICAgfQoKICAgIC8vLyBDb252ZW5pZW5jZTogZGlkIGEgcHJlc3MgZWRnZSBoYXBwZW4gc2luY2UgdGhlIGxhc3QgcG9sbD8KICAgIHB1YiBmbiBqdXN0X3ByZXNzZWQoJm11dCBzZWxmKSAtPiBib29sIHsKICAgICAgICBzZWxmLnBvbGwoKSA9PSBFdmVudDo6UHJlc3NlZAogICAgfQoKICAgIC8vLyBSb3V0ZSB0aGUgcGluIHRvIEVYVEkwIGFuZCBmaXJlIG9uIHRoZSBwcmVzcyAocmlzaW5nKSBlZGdlLgogICAgLy8vIFVubWFza2luZyBgcGFjOjpJbnRlcnJ1cHQ6OkVYVEkwYCBpbiB0aGUgTlZJQyBpcyBsZWZ0IHRvIHRoZSBjYWxsZXIuCiAgICBwdWIgZm4gbGlzdGVuKCZtdXQgc2VsZiwgc3lzY2ZnOiAmbXV0IFN5c0NmZywgZXh0aTogJm11dCBFWFRJKSB7CiAgICAgICAgc2VsZi5waW4ubWFrZV9pbnRlcnJ1cHRfc291cmNlKHN5c2NmZyk7CiAgICAgICAgc2VsZi5waW4udHJpZ2dlcl9vbl9lZGdlKGV4dGksIEVkZ2U6OlJpc2luZyk7CiAgICAgICAgc2VsZi5waW4uZW5hYmxlX2ludGVycnVwdChleHRpKTsKICAgIH0KCiAgICAvLy8gQ2xlYXJzIHRoZSBwZW5kaW5nIEVYVEkgYml0IOKAlCBjYWxsIHRoaXMgaW4gdGhlIGBFWFRJMGAgaGFuZGxlcgogICAgcHViIGZuIGNsZWFyX2ludGVycnVwdCgmbXV0IHNlbGYpIHsKICAgICAgICBzZWxmLnBpbi5jbGVhcl9pbnRlcnJ1cHRfcGVuZGluZ19iaXQoKTsKICAgIH0KfQoAAAAAAAAAANQKAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALoEAAAAAAAAugQAAAAAAAAAAAAAAADwvw" ], [ 17, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADcCgAALy8gIyBPbi1ib2FyZCBwdXNoIGJ1dHRvbnMKLy8KLy8gYEIxOlBBMGAgVVNFUiwgaGlnaCA9IHByZXNzZWQgKGV4dGVybmFsIHB1bGwtZG93biArIFJDIG9uIHRoZSBib2FyZDsgdGhlCi8vIGludGVybmFsIHB1bGwtZG93biBpcyBlbmFibGVkIHRvbyBzbyB0aGUgcGluIG5ldmVyIGZsb2F0cykuCi8vIGBCMjpOUlNUYCBSRVNFVCBpcyBoYXJkLXdpcmVkIHRvIHRoZSBNQ1UgcmVzZXQgbGluZSDigJQgaXQgaXMgbm90IGEgR1BJTyBhbmQKLy8gY2Fubm90IGJlIHJlYWQ7IHByZXNzaW5nIGl0IHJlc3RhcnRzIHRoZSBmaXJtd2FyZS4KCnVzZSBoYWw6OmdwaW86OmdwaW9hOjpQQTA7CnVzZSBoYWw6OmdwaW86OntFZGdlLCBFeHRpUGluLCBJbnB1dH07CnVzZSBoYWw6OnBhYzo6RVhUSTsKdXNlIGhhbDo6c3lzY2ZnOjpTeXNDZmc7CgovLy8gYEIxOlBBMGAgVVNFUiBidXR0b24sIGhpZ2ggPSBwcmVzc2VkCnB1YiB0eXBlIEIxID0gUEEwPElucHV0PjsKCi8vLyBUaGUgYm9hcmQncyBwdXNoIGJ1dHRvbnMKcHViIGVudW0gQnV0dG9uSWQgewogICAgLy8vIGBCMTpQQTBgIOKAlCByZWFkYWJsZSBHUElPLCBzZWUgW2BCdXR0b25zOjp1c2VyYF0KICAgIFVzZXIsCiAgICAvLy8gYEIyOk5SU1RgIOKAlCByZXNldHMgdGhlIE1DVTsgbm90IHJlYWRhYmxlCiAgICBSZXNldCwKfQoKLy8vIFRoZSBvbi1ib2FyZCBidXR0b25zIChvbmx5IFVTRVIgaXMgYSByZWFkYWJsZSBHUElPKQpwdWIgc3RydWN0IEJ1dHRvbnMgewogICAgLy8vIGBCMTpQQTBgIFVTRVIKICAgIHB1YiB1c2VyOiBCdXR0b24sCn0KCmltcGwgQnV0dG9ucyB7CiAgICAvLy8gSW5pdGlhbGl6ZXMgdGhlIHJlYWRhYmxlIGJ1dHRvbnMuIFRha2VzIGp1c3QgUEEwIHNvIHRoZSByZXN0IG9mCiAgICAvLy8gR1BJT0Egc3RheXMgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIuCiAgICBwdWIgZm4gbmV3KHBhMDogUEEwKSAtPiBTZWxmIHsKICAgICAgICBCdXR0b25zIHsKICAgICAgICAgICAgdXNlcjogQnV0dG9uOjpuZXcocGEwKSwKICAgICAgICB9CiAgICB9Cn0KCi8vLyBFZGdlIHNlZW4gYnkgW2BCdXR0b246OnBvbGxgXSBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAojW2Rlcml2ZShDbG9uZSwgQ29weSwgUGFydGlhbEVxKV0KcHViIGVudW0gRXZlbnQgewogICAgTm9uZSwKICAgIFByZXNzZWQsCiAgICBSZWxlYXNlZCwKfQoKLy8vIE9uZSByZWFkYWJsZSBidXR0b24sIHRyYWNraW5nIGl0cyBvd24gcHJldmlvdXMgbGV2ZWwgZm9yIGVkZ2UgZGV0ZWN0aW9uCnB1YiBzdHJ1Y3QgQnV0dG9uIHsKICAgIHBpbjogQjEsCiAgICBwcmV2X3ByZXNzZWQ6IGJvb2wsCn0KCmltcGwgQnV0dG9uIHsKICAgIC8vLyBDb25maWd1cmVzIFBBMCBhcyBhIHB1bGwtZG93biBpbnB1dCBhbmQgY2FwdHVyZXMgdGhlIGluaXRpYWwgbGV2ZWwKICAgIHB1YiBmbiBuZXcocGEwOiBQQTApIC0+IFNlbGYgewogICAgICAgIGxldCBwaW4gPSBwYTAuaW50b19wdWxsX2Rvd25faW5wdXQoKTsKICAgICAgICBsZXQgcHJldl9wcmVzc2VkID0gcGluLmlzX2hpZ2goKTsKICAgICAgICBCdXR0b24geyBwaW4sIHByZXZfcHJlc3NlZCB9CiAgICB9CgogICAgLy8vIEN1cnJlbnQgbGV2ZWw6IGlzIHRoZSBidXR0b24gaGVsZCBkb3duIHJpZ2h0IG5vdz8KICAgIHB1YiBmbiBwcmVzc2VkKCZzZWxmKSAtPiBib29sIHsKICAgICAgICBzZWxmLnBpbi5pc19oaWdoKCkKICAgIH0KCiAgICAvLy8gU2FtcGxlcyB0aGUgcGluIGFuZCByZXR1cm5zIHRoZSBlZGdlIHNpbmNlIHRoZSBsYXN0IHBvbGwKICAgIHB1YiBmbiBwb2xsKCZtdXQgc2VsZikgLT4gRXZlbnQgewogICAgICAgIGxldCBwcmVzc2VkID0gc2VsZi5waW4uaXNfaGlnaCgpOwogICAgICAgIGxldCBldmVudCA9IG1hdGNoIChzZWxmLnByZXZfcHJlc3NlZCwgcHJlc3NlZCkgewogICAgICAgICAgICAoZmFsc2UsIHRydWUpID0+IEV2ZW50OjpQcmVzc2VkLAogICAgICAgICAgICAodHJ1ZSwgZmFsc2UpID0+IEV2ZW50OjpSZWxlYXNlZCwKICAgICAgICAgICAgXyA9PiBFdmVudDo6Tm9uZSwKICAgICAgICB9OwogICAgICAgIHNlbGYucHJldl9wcmVzc2VkID0gcHJlc3NlZDsKICAgICAgICBldmVudAogICAgfQoKICAgIC8vLyBDb252ZW5pZW5jZTogZGlkIGEgcHJlc3MgZWRnZSBoYXBwZW4gc2luY2UgdGhlIGxhc3QgcG9sbD8KICAgIHB1YiBmbiBqdXN0X3ByZXNzZWQoJm11dCBzZWxmKSAtPiBib29sIHsKICAgICAgICBzZWxmLnBvbGwoKSA9PSBFdmVudDo6UHJlc3NlZAogICAgfQoKICAgIC8vLyBSb3V0ZSB0aGUgcGluIHRvIEVYVEkwIGFuZCBmaXJlIG9uIHRoZSBwcmVzcyAocmlzaW5nKSBlZGdlLgogICAgLy8vIFVubWFza2luZyBgcGFjOjpJbnRlcnJ1cHQ6OkVYVEkwYCBpbiB0aGUgTlZJQyBpcyBsZWZ0IHRvIHRoZSBjYWxsZXIuCiAgICBwdWIgZm4gbGlzdGVuKCZtdXQgc2VsZiwgc3lzY2ZnOiAmbXV0IFN5c0NmZywgZXh0aTogJm11dCBFWFRJKSB7CiAgICAgICAgc2VsZi5waW4ubWFrZV9pbnRlcnJ1cHRfc291cmNlKHN5c2NmZyk7CiAgICAgICAgc2VsZi5waW4udHJpZ2dlcl9vbl9lZGdlKGV4dGksIEVkZ2U6OlJpc2luZyk7CiAgICAgICAgc2VsZi5waW4uZW5hYmxlX2ludGVycnVwdChleHRpKTsKICAgIH0KCiAgICAvLy8gQ2xlYXJzIHRoZSBwZW5kaW5nIEVYVEkgYml0IOKAlCBjYWxsIHRoaXMgaW4gdGhlIGBFWFRJMGAgaGFuZGxlcgogICAgcHViIGZuIGNsZWFyX2ludGVycnVwdCgmbXV0IHNlbGYpIHsKICAgICAgICBzZWxmLnBpbi5jbGVhcl9pbnRlcnJ1cHRfcGVuZGluZ19iaXQoKTsKICAgIH0KfQoAAAAAAAAAAOcKAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI8CAAAAAAAAjwIAAAAAAAAAAAAAAADwvw" ], [ 18, 1, "revert", null, "AgAAAAAAAAAAAAAAAAAAAAAAAADvCgAALy8gIyBPbi1ib2FyZCBwdXNoIGJ1dHRvbnMKLy8KLy8gYEIxOlBBMGAgVVNFUiwgaGlnaCA9IHByZXNzZWQgKGV4dGVybmFsIHB1bGwtZG93biArIFJDIG9uIHRoZSBib2FyZDsgdGhlCi8vIGludGVybmFsIHB1bGwtZG93biBpcyBlbmFibGVkIHRvbyBzbyB0aGUgcGluIG5ldmVyIGZsb2F0cykuCi8vIGBCMjpOUlNUYCBSRVNFVCBpcyBoYXJkLXdpcmVkIHRvIHRoZSBNQ1UgcmVzZXQgbGluZSDigJQgaXQgaXMgbm90IGEgR1BJTyBhbmQKLy8gY2Fubm90IGJlIHJlYWQ7IHByZXNzaW5nIGl0IHJlc3RhcnRzIHRoZSBmaXJtd2FyZS4KCnVzZSBoYWw6OmdwaW86OmdwaW9hOjpQQTA7CnVzZSBoYWw6OmdwaW86OntFZGdlLCBFeHRpUGluLCBJbnB1dH07CnVzZSBoYWw6OnBhYzo6e0ludGVycnVwdCwgRVhUSSwgTlZJQ307CnVzZSBoYWw6OnN5c2NmZzo6U3lzQ2ZnOwoKLy8vIGBCMTpQQTBgIFVTRVIgYnV0dG9uLCBoaWdoID0gcHJlc3NlZApwdWIgdHlwZSBCMSA9IFBBMDxJbnB1dD47CgovLy8gVGhlIGJvYXJkJ3MgcHVzaCBidXR0b25zCnB1YiBlbnVtIEJ1dHRvbklkIHsKICAgIC8vLyBgQjE6UEEwYCDigJQgcmVhZGFibGUgR1BJTywgc2VlIFtgQnV0dG9uczo6dXNlcmBdCiAgICBVc2VyLAogICAgLy8vIGBCMjpOUlNUYCDigJQgcmVzZXRzIHRoZSBNQ1U7IG5vdCByZWFkYWJsZQogICAgUmVzZXQsCn0KCi8vLyBUaGUgb24tYm9hcmQgYnV0dG9ucyAob25seSBVU0VSIGlzIGEgcmVhZGFibGUgR1BJTykKcHViIHN0cnVjdCBCdXR0b25zIHsKICAgIC8vLyBgQjE6UEEwYCBVU0VSCiAgICBwdWIgdXNlcjogQnV0dG9uLAp9CgppbXBsIEJ1dHRvbnMgewogICAgLy8vIEluaXRpYWxpemVzIHRoZSByZWFkYWJsZSBidXR0b25zLiBUYWtlcyBqdXN0IFBBMCBzbyB0aGUgcmVzdCBvZgogICAgLy8vIEdQSU9BIHN0YXlzIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLgogICAgcHViIGZuIG5ldyhwYTA6IFBBMCkgLT4gU2VsZiB7CiAgICAgICAgQnV0dG9ucyB7CiAgICAgICAgICAgIHVzZXI6IEJ1dHRvbjo6bmV3KHBhMCksCiAgICAgICAgfQogICAgfQp9CgovLy8gRWRnZSBzZWVuIGJ5IFtgQnV0dG9uOjpwb2xsYF0gc2luY2UgdGhlIHByZXZpb3VzIGNhbGwKI1tkZXJpdmUoQ2xvbmUsIENvcHksIFBhcnRpYWxFcSldCnB1YiBlbnVtIEV2ZW50IHsKICAgIE5vbmUsCiAgICBQcmVzc2VkLAogICAgUmVsZWFzZWQsCn0KCi8vLyBPbmUgcmVhZGFibGUgYnV0dG9uLCB0cmFja2luZyBpdHMgb3duIHByZXZpb3VzIGxldmVsIGZvciBlZGdlIGRldGVjdGlvbgpwdWIgc3RydWN0IEJ1dHRvbiB7CiAgICBwaW46IEIxLAogICAgcHJldl9wcmVzc2VkOiBib29sLAp9CgppbXBsIEJ1dHRvbiB7CiAgICAvLy8gQ29uZmlndXJlcyBQQTAgYXMgYSBwdWxsLWRvd24gaW5wdXQgYW5kIGNhcHR1cmVzIHRoZSBpbml0aWFsIGxldmVsCiAgICBwdWIgZm4gbmV3KHBhMDogUEEwKSAtPiBTZWxmIHsKICAgICAgICBsZXQgcGluID0gcGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICAgICAgbGV0IHByZXZfcHJlc3NlZCA9IHBpbi5pc19oaWdoKCk7CiAgICAgICAgQnV0dG9uIHsgcGluLCBwcmV2X3ByZXNzZWQgfQogICAgfQoKICAgIC8vLyBDdXJyZW50IGxldmVsOiBpcyB0aGUgYnV0dG9uIGhlbGQgZG93biByaWdodCBub3c/CiAgICBwdWIgZm4gcHJlc3NlZCgmc2VsZikgLT4gYm9vbCB7CiAgICAgICAgc2VsZi5waW4uaXNfaGlnaCgpCiAgICB9CgogICAgLy8vIFNhbXBsZXMgdGhlIHBpbiBhbmQgcmV0dXJucyB0aGUgZWRnZSBzaW5jZSB0aGUgbGFzdCBwb2xsCiAgICBwdWIgZm4gcG9sbCgmbXV0IHNlbGYpIC0+IEV2ZW50IHsKICAgICAgICBsZXQgcHJlc3NlZCA9IHNlbGYucGluLmlzX2hpZ2goKTsKICAgICAgICBsZXQgZXZlbnQgPSBtYXRjaCAoc2VsZi5wcmV2X3ByZXNzZWQsIHByZXNzZWQpIHsKICAgICAgICAgICAgKGZhbHNlLCB0cnVlKSA9PiBFdmVudDo6UHJlc3NlZCwKICAgICAgICAgICAgKHRydWUsIGZhbHNlKSA9PiBFdmVudDo6UmVsZWFzZWQsCiAgICAgICAgICAgIF8gPT4gRXZlbnQ6Ok5vbmUsCiAgICAgICAgfTsKICAgICAgICBzZWxmLnByZXZfcHJlc3NlZCA9IHByZXNzZWQ7CiAgICAgICAgZXZlbnQKICAgIH0KCiAgICAvLy8gQ29udmVuaWVuY2U6IGRpZCBhIHByZXNzIGVkZ2UgaGFwcGVuIHNpbmNlIHRoZSBsYXN0IHBvbGw/CiAgICBwdWIgZm4ganVzdF9wcmVzc2VkKCZtdXQgc2VsZikgLT4gYm9vbCB7CiAgICAgICAgc2VsZi5wb2xsKCkgPT0gRXZlbnQ6OlByZXNzZWQKICAgIH0KCiAgICAvLy8gUm91dGUgdGhlIHBpbiB0byBFWFRJMCBhbmQgZmlyZSBvbiB0aGUgcHJlc3MgKHJpc2luZykgZWRnZS4KICAgIC8vLyBVbm1hc2tpbmcgYHBhYzo6SW50ZXJydXB0OjpFWFRJMGAgaW4gdGhlIE5WSUMgaXMgbGVmdCB0byB0aGUgY2FsbGVyLgogICAgcHViIGZuIGxpc3RlbigmbXV0IHNlbGYsIHN5c2NmZzogJm11dCBTeXNDZmcsIGV4dGk6ICZtdXQgRVhUSSkgewogICAgICAgIHNlbGYucGluLm1ha2VfaW50ZXJydXB0X3NvdXJjZShzeXNjZmcpOwogICAgICAgIHNlbGYucGluLnRyaWdnZXJfb25fZWRnZShleHRpLCBFZGdlOjpSaXNpbmcpOwogICAgICAgIHNlbGYucGluLmVuYWJsZV9pbnRlcnJ1cHQoZXh0aSk7CiAgICB9CgogICAgLy8vIENsZWFycyB0aGUgcGVuZGluZyBFWFRJIGJpdCDigJQgY2FsbCB0aGlzIGluIHRoZSBgRVhUSTBgIGhhbmRsZXIKICAgIHB1YiBmbiBjbGVhcl9pbnRlcnJ1cHQoJm11dCBzZWxmKSB7CiAgICAgICAgc2VsZi5waW4uY2xlYXJfaW50ZXJydXB0X3BlbmRpbmdfYml0KCk7CiAgICB9Cn0KAAAAAAAAAACbDAAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI8CAAAAAAAAjwIAAAAAAAAAAAAAAADwvw" ], [ 19, 1, "revert", null, "BAAAAAAAAAAAAAAAAAAAAAAAAAClDAAALy8gIyBPbi1ib2FyZCBwdXNoIGJ1dHRvbnMKLy8KLy8gYEIxOlBBMGAgVVNFUiwgaGlnaCA9IHByZXNzZWQgKGV4dGVybmFsIHB1bGwtZG93biArIFJDIG9uIHRoZSBib2FyZDsgdGhlCi8vIGludGVybmFsIHB1bGwtZG93biBpcyBlbmFibGVkIHRvbyBzbyB0aGUgcGluIG5ldmVyIGZsb2F0cykuCi8vIGBCMjpOUlNUYCBSRVNFVCBpcyBoYXJkLXdpcmVkIHRvIHRoZSBNQ1UgcmVzZXQgbGluZSDigJQgaXQgaXMgbm90IGEgR1BJTyBhbmQKLy8gY2Fubm90IGJlIHJlYWQ7IHByZXNzaW5nIGl0IHJlc3RhcnRzIHRoZSBmaXJtd2FyZS4KCnVzZSBoYWw6OmdwaW86OmdwaW9hOjpQQTA7CnVzZSBoYWw6OmdwaW86OntFZGdlLCBFeHRpUGluLCBJbnB1dH07CnVzZSBoYWw6OnBhYzo6e0ludGVycnVwdCwgRVhUSSwgTlZJQ307CnVzZSBoYWw6OnN5c2NmZzo6U3lzQ2ZnOwoKLy8vIGBCMTpQQTBgIFVTRVIgYnV0dG9uLCBoaWdoID0gcHJlc3NlZApwdWIgdHlwZSBCMSA9IFBBMDxJbnB1dD47CgovLy8gVGhlIGJvYXJkJ3MgcHVzaCBidXR0b25zCnB1YiBlbnVtIEJ1dHRvbklkIHsKICAgIC8vLyBgQjE6UEEwYCDigJQgcmVhZGFibGUgR1BJTywgc2VlIFtgQnV0dG9uczo6dXNlcmBdCiAgICBVc2VyLAogICAgLy8vIGBCMjpOUlNUYCDigJQgcmVzZXRzIHRoZSBNQ1U7IG5vdCByZWFkYWJsZQogICAgUmVzZXQsCn0KCi8vLyBUaGUgb24tYm9hcmQgYnV0dG9ucyAob25seSBVU0VSIGlzIGEgcmVhZGFibGUgR1BJTykKcHViIHN0cnVjdCBCdXR0b25zIHsKICAgIC8vLyBgQjE6UEEwYCBVU0VSCiAgICBwdWIgdXNlcjogQnV0dG9uLAp9CgppbXBsIEJ1dHRvbnMgewogICAgLy8vIEluaXRpYWxpemVzIHRoZSByZWFkYWJsZSBidXR0b25zLiBUYWtlcyBqdXN0IFBBMCBzbyB0aGUgcmVzdCBvZgogICAgLy8vIEdQSU9BIHN0YXlzIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLgogICAgcHViIGZuIG5ldyhwYTA6IFBBMCkgLT4gU2VsZiB7CiAgICAgICAgQnV0dG9ucyB7CiAgICAgICAgICAgIHVzZXI6IEJ1dHRvbjo6bmV3KHBhMCksCiAgICAgICAgfQogICAgfQp9CgovLy8gRWRnZSBzZWVuIGJ5IFtgQnV0dG9uOjpwb2xsYF0gc2luY2UgdGhlIHByZXZpb3VzIGNhbGwKI1tkZXJpdmUoQ2xvbmUsIENvcHksIFBhcnRpYWxFcSldCnB1YiBlbnVtIEV2ZW50IHsKICAgIE5vbmUsCiAgICBQcmVzc2VkLAogICAgUmVsZWFzZWQsCn0KCi8vLyBPbmUgcmVhZGFibGUgYnV0dG9uLCB0cmFja2luZyBpdHMgb3duIHByZXZpb3VzIGxldmVsIGZvciBlZGdlIGRldGVjdGlvbgpwdWIgc3RydWN0IEJ1dHRvbiB7CiAgICBwaW46IEIxLAogICAgcHJldl9wcmVzc2VkOiBib29sLAp9CgppbXBsIEJ1dHRvbiB7CiAgICAvLy8gQ29uZmlndXJlcyBQQTAgYXMgYSBwdWxsLWRvd24gaW5wdXQgYW5kIGNhcHR1cmVzIHRoZSBpbml0aWFsIGxldmVsCiAgICBwdWIgZm4gbmV3KHBhMDogUEEwKSAtPiBTZWxmIHsKICAgICAgICBsZXQgcGluID0gcGEwLmludG9fcHVsbF9kb3duX2lucHV0KCk7CiAgICAgICAgbGV0IHByZXZfcHJlc3NlZCA9IHBpbi5pc19oaWdoKCk7CiAgICAgICAgQnV0dG9uIHsgcGluLCBwcmV2X3ByZXNzZWQgfQogICAgfQoKICAgIC8vLyBDdXJyZW50IGxldmVsOiBpcyB0aGUgYnV0dG9uIGhlbGQgZG93biByaWdodCBub3c/CiAgICBwdWIgZm4gcHJlc3NlZCgmc2VsZikgLT4gYm9vbCB7CiAgICAgICAgc2VsZi5waW4uaXNfaGlnaCgpCiAgICB9CgogICAgLy8vIFNhbXBsZXMgdGhlIHBpbiBhbmQgcmV0dXJucyB0aGUgZWRnZSBzaW5jZSB0aGUgbGFzdCBwb2xsCiAgICBwdWIgZm4gcG9sbCgmbXV0IHNlbGYpIC0+IEV2ZW50IHsKICAgICAgICBsZXQgcHJlc3NlZCA9IHNlbGYucGluLmlzX2hpZ2goKTsKICAgICAgICBsZXQgZXZlbnQgPSBtYXRjaCAoc2VsZi5wcmV2X3ByZXNzZWQsIHByZXNzZWQpIHsKICAgICAgICAgICAgKGZhbHNlLCB0cnVlKSA9PiBFdmVudDo6UHJlc3NlZCwKICAgICAgICAgICAgKHRydWUsIGZhbHNlKSA9PiBFdmVudDo6UmVsZWFzZWQsCiAgICAgICAgICAgIF8gPT4gRXZlbnQ6Ok5vbmUsCiAgICAgICAgfTsKICAgICAgICBzZWxmLnByZXZfcHJlc3NlZCA9IHByZXNzZWQ7CiAgICAgICAgZXZlbnQKICAgIH0KCiAgICAvLy8gQ29udmVuaWVuY2U6IGRpZCBhIHByZXNzIGVkZ2UgaGFwcGVuIHNpbmNlIHRoZSBsYXN0IHBvbGw/CiAgICBwdWIgZm4ganVzdF9wcmVzc2VkKCZtdXQgc2VsZikgLT4gYm9vbCB7CiAgICAgICAgc2VsZi5wb2xsKCkgPT0gRXZlbnQ6OlByZXNzZWQKICAgIH0KCiAgICAvLy8gUm91dGUgdGhlIHBpbiB0byBFWFRJMCwgZmlyZSBvbiB0aGUgcHJlc3MgKHJpc2luZykgZWRnZSwgYW5kIHVubWFzawogICAgLy8vIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIE5WSUMg4oCUIGFmdGVyIHRoaXMgdGhlIGBFWFRJMGAgaGFuZGxlciBydW5zIG9uCiAgICAvLy8gZXZlcnkgcHJlc3MuIENhbGwgW2BjbGVhcl9pbnRlcnJ1cHRgXShTZWxmOjpjbGVhcl9pbnRlcnJ1cHQpIGluc2lkZQogICAgLy8vIHRoYXQgaGFuZGxlci4KICAgIHB1YiBmbiBsaXN0ZW4oJm11dCBzZWxmLCBzeXNjZmc6ICZtdXQgU3lzQ2ZnLCBleHRpOiAmbXV0IEVYVEkpIHsKICAgICAgICBzZWxmLnBpbi5tYWtlX2ludGVycnVwdF9zb3VyY2Uoc3lzY2ZnKTsKICAgICAgICBzZWxmLnBpbi50cmlnZ2VyX29uX2VkZ2UoZXh0aSwgRWRnZTo6UmlzaW5nKTsKICAgICAgICBzZWxmLnBpbi5lbmFibGVfaW50ZXJydXB0KGV4dGkpOwogICAgICAgIC8vIE5WSUM6OnVubWFzayBpcyBgdW5zYWZlYCBvbmx5IGJlY2F1c2UgdW5tYXNraW5nIGNhbiBicmVhawogICAgICAgIC8vIG1hc2stYmFzZWQgY3JpdGljYWwgc2VjdGlvbnM7IFBSSU1BU0stYmFzZWQgc2VjdGlvbnMgKGkuZS4KICAgICAgICAvLyBgY29ydGV4X206OmludGVycnVwdDo6ZnJlZWAsIHRoZSBvbmx5IGtpbmQgdXNlZCBvbiB0aGlzIGJvYXJkKQogICAgICAgIC8vIG1hc2sgZXZlcnl0aGluZyByZWdhcmRsZXNzLCBzbyB0aGlzIGNhbm5vdCB2aW9sYXRlIHRoZW0uCiAgICAgICAgdW5zYWZlIHsgTlZJQzo6dW5tYXNrKEludGVycnVwdDo6RVhUSTApIH07CiAgICB9CgogICAgLy8vIENsZWFycyB0aGUgcGVuZGluZyBFWFRJIGJpdCDigJQgY2FsbCB0aGlzIGluIHRoZSBgRVhUSTBgIGhhbmRsZXIKICAgIHB1YiBmbiBjbGVhcl9pbnRlcnJ1cHQoJm11dCBzZWxmKSB7CiAgICAgICAgc2VsZi5waW4uY2xlYXJfaW50ZXJydXB0X3BlbmRpbmdfYml0KCk7CiAgICB9Cn0KAAAAAAAAAACECAAAAAAAAAAAAAAAAAAAAAAAAIQIAAAAAAAAAAAAAAAAAAAAAAAAhAgAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI8CAAAAAAAAjwIAAAAAAAAAAAAAAADwvw" ] ] }, { "file": "/Users/nathanrashleigh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lsm303dlhc-0.2.0/src/lib.rs", "settings": { "buffer_size": 6702, "line_ending": "Unix" } }, { "file": "build.rs", "settings": { "buffer_size": 590, "encoding": "UTF-8", "line_ending": "Unix", "name": "use std::env;" }, "undo_stack": [ [ 3, 1, "paste", null, "AQAAAAAAAAAAAAAATgIAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvw" ] ] }, { "file": ".cargo/config.toml", "settings": { "buffer_size": 993, "encoding": "UTF-8", "line_ending": "Unix", "name": "[target.'cfg(all(target_arch = \"arm\", target_os =" }, "undo_stack": [ [ 1, 1, "paste", null, "AQAAAAAAAAAAAAAA4QMAAAAAAAAAAAAA", "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvw" ] ] } ], "build_system": "", "build_system_choices": [ ], "build_varint": "", "command_palette": { "height": 0.0, "last_filter": "", "selected_items": [ [ "diag", "LSP: Toggle Diagnostics Panel" ], [ "lsp ", "LSP: Troubleshoot Server" ], [ "lsp", "LSP: Toggle Diagnostics Panel" ], [ "json", "Pretty JSON: Format JSON" ], [ "log", "Git: Log Current File" ], [ "diff", "Git: Diff Current File" ], [ "blame", "Git: Blame" ], [ "preview", "Markdown Preview: Preview in Browser" ], [ "balme", "Git: Blame" ], [ "form", "Pretty JSON: Format JSON" ], [ "check", "Git: Checkout Current File" ], [ "mark", "Markdown Preview: Preview in Browser" ], [ "install", "Package Control: Install Package" ], [ "remove", "Package Control: Remove Package" ], [ "bl", "Git Blame: Show" ], [ "forma", "LSP: Format File" ], [ "yaml", "Set Syntax: YAML" ], [ "format", "LSP: Format File" ], [ "source", "LSP: Source Action" ], [ "xml", "Indent XML" ], [ "pretty", "Pretty JSON: Format JSON" ], [ "action", "LSP: Code Action" ], [ "diagnost", "LSP: Toggle Diagnostics Panel" ], [ "sour", "LSP: Source Action" ], [ "dia", "LSP: Toggle Diagnostics Panel" ], [ "lsp sou", "LSP: Source Action" ], [ "lsp code", "LSP: Code Action" ], [ "for", "LSP: Format File" ], [ "diagno", "LSP: Toggle Diagnostics Panel" ], [ "lsp source", "LSP: Source Action" ], [ "code", "LSP: Code Action" ], [ "inden", "Indent XML" ], [ "pyt", "Set Syntax: Python" ], [ "ac", "LSP: Code Action" ], [ "f", "LSP: Format File" ], [ "fo", "LSP: Format File" ], [ "hapro", "Set Syntax: Haproxy" ], [ "edit", "Project: Edit Project" ], [ "lsp log", "LSP: Toggle Log Panel" ], [ "trouble", "LSP: Troubleshoot Server" ], [ "diagn", "LSP: Toggle Diagnostics Panel" ], [ "troubvle", "LSP: Troubleshoot Server" ], [ "spaces", "Indentation: Convert to Spaces" ], [ "ruff", "Preferences: LSP-ruff Settings" ], [ "enable", "Package Control: Enable Package" ], [ "restart", "LSP: Restart Server" ], [ "config", "LSP-pyright: Create Pyright Configuration File" ], [ "lspyright", "LSP-pyright: Create Pyright Configuration File" ], [ "editg", "Code Folding: Fold Tag Attributes" ], [ "lsp lo", "LSP: Toggle Log Panel" ], [ "project edit", "Project: Edit Project" ], [ "settings", "Preferences: LSP-pyright Settings" ], [ "create py", "LSP-pyright: Create Pyright Configuration File" ], [ "dif", "Git: Diff Current File" ], [ "jso", "Set Syntax: JSON" ], [ "prewview", "Markdown Preview: Preview in Browser" ], [ "disable", "Package Control: Disable Package" ], [ "haproxy", "Set Syntax: Haproxy" ], [ "debugg", "Debugger: Add Configuration" ], [ "debugger", "Debugger: Open" ], [ "debug", "Debugger: Add Configuration" ], [ "ch", "Git: Checkout Current File" ], [ "bash", "Set Syntax: Bash" ], [ "dockeril", "Set Syntax: Dockerfile" ], [ "dockerfil", "Set Syntax: Dockerfile" ], [ "word", "Word Wrap: Toggle" ], [ "wor", "Word Wrap: Toggle" ], [ "redin", "Indentation: Reindent Lines" ], [ "py", "Set Syntax: Python" ], [ "terr", "Set Syntax: Terraform" ], [ "ha", "Set Syntax: Haproxy" ], [ "haxp", "Set Syntax: Haproxy" ], [ "pyth", "Set Syntax: Python" ], [ "pytho", "Set Syntax: Python" ], [ "checkout", "Git: Checkout Current File" ], [ "ja", "Set Syntax: JavaScript" ], [ "javas", "Set Syntax: JavaScript" ], [ "di", "Git: Diff Current File" ], [ "ans", "Set Syntax: Ansible" ], [ "isntall", "Package Control: Install Package" ], [ "xm", "Set Syntax: XML" ], [ "ansibl", "Set Syntax: Ansible" ], [ "gru", "gruvbox: Select Theme" ], [ "an", "Set Syntax: Ansible" ], [ "ansible", "Set Syntax: Ansible" ], [ "inst", "Package Control: Install Package" ], [ "isntal", "Package Control: Install Package" ], [ "terra", "Set Syntax: Terraform" ], [ "git log", "Git: Log Current File" ], [ "pyright", "LSP-pyright: Create Pyright Configuration File" ], [ "syn py", "Set Syntax: Python" ], [ "goto", "LSP: Goto Definition" ], [ "git bla", "Git Blame: Show" ], [ "gruv", "gruvbox: Select Theme" ] ], "width": 0.0 }, "console": { "height": 912.0, "history": [ ] }, "distraction_free": { "menu_visible": true, "show_minimap": false, "show_open_files": false, "show_tabs": false, "side_bar_visible": false, "status_bar_visible": false }, "expanded_folders": [ "/Users/nathanrashleigh/vlt/projects/ambium", "/Users/nathanrashleigh/vlt/projects/ambium/.cargo", "/Users/nathanrashleigh/vlt/projects/ambium/etc", "/Users/nathanrashleigh/vlt/projects/ambium/etc/diy", "/Users/nathanrashleigh/vlt/projects/ambium/src", "/Users/nathanrashleigh/code/f411", "/Users/nathanrashleigh/code/f411/examples", "/Users/nathanrashleigh/code/f411/src" ], "file_history": [ "/Users/nathanrashleigh/vlt/projects/ambium/README.md", "/Users/nathanrashleigh/code/f411/src/lib.rs", "/Users/nathanrashleigh/vlt/projects/ambium/justfile", "/Users/nathanrashleigh/vlt/projects/ambium/Cargo.toml", "/Users/nathanrashleigh/vlt/projects/ambium/ambium.sublime-project", "/Users/nathanrashleigh/switchdin/components/grid_services_function/justfile", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/data_plane/telemetry_api_types.py", "/Users/nathanrashleigh/switchdin/pants.toml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/external_interfaces/kafka/kal_types.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/docker-compose-monitoring.yaml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/pyproject.toml", "/Users/nathanrashleigh/terraform_aws_infra/grafana/digitalcompliance_team.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/docker-bake.hcl", "/Users/nathanrashleigh/switchdin/components/grid_services_function/.claude/settings.local.json", "/Users/nathanrashleigh/switchdin/components/aws_bedrock/deployment/prod/data-lake/main.tf", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/rmq.tf", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/batchlayer_a.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/docker-compose.yaml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/docker-compose-infra.yaml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/tests/services/aggregator.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/tests/cactus/Dockerfile", "/Users/nathanrashleigh/switchdin/components/grid_services_function/tests/cactus/dependencies/requirements.txt", "/Users/nathanrashleigh/switchdin/components/grid_services_function/tests/pki/pki.sh", "/Users/nathanrashleigh/switchdin/components/grid_services_function/docker-compose-dev.yaml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/BUILD", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/data_plane/data_plane_api_types.py", "/Users/nathanrashleigh/switchdin/components/lake/tools/telemetry_data_mapper/deployment/switchdin-main/production/main.tf", "/Users/nathanrashleigh/switchdin/.github/workflows/telemetry-data-mapper.yaml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/Dockerfile.pytest", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/derapi/entrypoints/dependencies.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/data_transfer_objects/devices_v2.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/derapi/entrypoints/derapi_app.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/derapi/entrypoints/middleware.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/derapi/use_cases/resource_request.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/entities/events/der_events.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/data_transfer_objects/oem_data.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/external_interfaces/kafka/kafka_async_listener.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/asyncapi/listeners/telemetry_listener.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/Dockerfile.base", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/common/listeners/listener_entrypoint.py", "/Users/nathanrashleigh/switchdin/tools/dev/bin/activate_component.sh", "/Users/nathanrashleigh/switchdin/tools/dev/bin/claude_pretool_check.sh", "/Users/nathanrashleigh/terraform_aws_infra/switchdin-main/route53-switchdin-com.tf", "/Users/nathanrashleigh/switchdin/components/aws_bedrock/deployment/prod/au_shared_vef_prod_1/main.tf", "/Users/nathanrashleigh/switchdin/shared/python/resolves/standard_py312/requirements.in", "/Users/nathanrashleigh/switchdin/components/grid_services_function/dependencies/requirements.in", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/test/gsf-isvt/monitoring/04_alerts.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/aws/00_hpprod_main.tf", "/Users/nathanrashleigh/switchdin/components/aws_bedrock/deployment/src/modules/aws_base/main.tf", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_rabbitmq_proxy/templates/haproxy.cfg", "/Users/nathanrashleigh/terraform_aws_infra/switchdin-main/security_groups.tf", "/Users/nathanrashleigh/switchdin/shared/ansible/environments/prod/group_vars/all/switchdin_users.yml", "/Users/nathanrashleigh/switchdin/components/stormcloud-api/deployment/production/switchdin-main/prod_inventory.ini", "/Users/nathanrashleigh/switchdin/shared/ansible/401_rabbitMQBrokers.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/environments/prod/production_inventory.ini", "/Users/nathanrashleigh/switchdin/shared/ansible/402_rabbitMQProxy.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_rabbitmq_proxy/defaults/main.yml", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/sshpi_test.tf", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_haproxy/templates/haproxy.cfg", "/Users/nathanrashleigh/code/droplet/local/haproxy/haproxy.cfg", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_rabbitmq/tasks/main.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.rabbitmq_users/tasks/main.yml", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/all/switchdin_users.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.user_management/README.md", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.sshpi/tasks/main.yml", "/Users/nathanrashleigh/switchdin/components/stormcloud-api/src/switchdin/apps/devices/services/tests/droplet_v4_schemas_sample.json", "/Users/nathanrashleigh/switchdin/tools/demo_data_copy/pyproject.toml", "/Users/nathanrashleigh/switchdin/tools/demo_data_copy/src/demo_data_copy/cli.py", "/Users/nathanrashleigh/switchdin/tools/demo_data_copy/copy.sh", "/Users/nathanrashleigh/switchdin/components/grid_services_function/.mcp.json", "/private/tmp/claude-501/-Users-nathanrashleigh-switchdin-tools-demo-data-copy/3911ef89-05ff-4a90-8aca-d86b3b7e421a/scratchpad/insert.sql", "/Users/nathanrashleigh/.claude.json", "/Users/nathanrashleigh/switchdin/components/stormcloud-api/src/switchdin/apps/devices/services/tests/test_endpoint_config_data.py", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline_v2/deployment/prod/au_shared_vef_prod_1/main.tf", "/Users/nathanrashleigh/terraform_aws_infra/switchdin-main/route53-switchdin-in.tf", "/Users/nathanrashleigh/switchdin/tools/demo_data_copy/src/progress.py", "/Users/nathanrashleigh/switchdin/tools/demo_data_copy/src/__init__.py", "/Users/nathanrashleigh/switchdin/components/stormcloud-api/deployment/src/environments/prod.env", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_haproxy_mqtt/templates/haproxy.cfg", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/prod/endeprod/aws/02_endeprod_k8s_auth.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/flexgw/03_hpprod_flexgw.tf", "/Users/nathanrashleigh/code/droplet/local/docker-compose.vef-test.yml", "/Users/nathanrashleigh/switchdin/components/stormcloud-api/src/switchdin/apps/devices/tests/test_endpoint_config.py", "/Users/nathanrashleigh/switchdin/shared/ansible/README.md", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/main.tf", "/Users/nathanrashleigh/code/droplet/droplet/droplet.py", "/Users/nathanrashleigh/code/droplet/droplet/util/networking.py", "/Users/nathanrashleigh/code/droplet/droplet/discovery/connection_agent_ip.py", "/Users/nathanrashleigh/code/gsf-pki/ende-prod/der/nepki/flexgateway-prod.endeavourenergy.com.au/key.pem", "/Users/nathanrashleigh/switchdin/shared/ansible/000_bootstrapEnvironment.yml", "/Users/nathanrashleigh/switchdin/components/sites_simulator/deployment/test/au_shared_vef_test_1/ansible/group_vars/all/switchdin_users.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/files/keys/NathanRashleigh.pub", "/Users/nathanrashleigh/switchdin/shared/ansible/environments/lab/group_vars/all/switchdin_users.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/tools/find_ssh_finger_print.py", "/Users/nathanrashleigh/switchdin/shared/ansible/files/archived_keys/README.md", "/Users/nathanrashleigh/switchdin/.github/workflows/ansible_run_common.yaml", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/RMQMain.yml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/test/endetest/gsf/terraform.tfvars", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/test/hp/flexgw/terraform.tfvars", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/flexgw/terraform.tfvars", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/prod/endeprod/gsf/terraform.tfvars", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/terraform.tfvars", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/renewal_broker.tf", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/inventory.aws_ec2.yml", "/Users/nathanrashleigh/switchdin/components/droplet-builder/deployment/src/ansible/inventory.aws_ec2.yml", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/src/control-plane/01_control_plane.tf", "/Users/nathanrashleigh/switchdin/shared/ansible/G00_PKI_Install.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/350_ProxyServers_Web.yml", "/Users/nathanrashleigh/switchdin/.github/workflows/telemetry_pipeline.yaml", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/InsecureRabbitServers.yml", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.sshpi/files/cert-renew/cert_renew_droplet.sh", "/Users/nathanrashleigh/switchdin/shared/ansible/400_rabbitServers.yml", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/src/telemetry_pipeline_tf/rabbitmq/rabbitmq_proxy.tf", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/cert_renewal_flow.md", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/cert_renewal_flow.html", "/Users/nathanrashleigh/switchdin/shared/ansible/tools/configure_shovels.py", "/Users/nathanrashleigh/switchdin/shared/ansible/roles/switchdin.docker_rabbitmq/templates/rabbitmq.conf", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/insecure_broker.tf", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/docker-compose.yml", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/src/test_concurrent.py", "/Users/nathanrashleigh/switchdin/components/grid_services_function/makefile", "/Users/nathanrashleigh/switchdin/shared/lib/droplet_certificate_util/src/lib/droplet_certificate_util/pki.py", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/README.md", "/Users/nathanrashleigh/switchdin/poc/mqtt-expired-cert-recovery/authz/poc_expiry_authz.erl", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/src/monitor/04_mimir.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/src/grid_services_function/assurance/assurance.py", "/Users/nathanrashleigh/switchdin/components/telemetry_pipeline/deployment/src/telemetry_pipeline_tf/variables.tf", "/Users/nathanrashleigh/switchdin/components/grid_services_function/deployment/src/monitor/04_redpanda.tf" ], "find": { "height": 29.0 }, "find_in_files": { "height": 188.0, "where_history": [ ] }, "find_state": { "case_sensitive": false, "find_history": [ "1N4148", "SB140", "2 k", "2k", "block", "NOISE", "flat", "re", "rf1", "rin1", "uf", "noise", "vref" ], "highlight": true, "in_selection": false, "preserve_case": false, "regex": false, "replace_history": [ ], "reverse": false, "scrollbar_highlights": true, "show_context": true, "use_buffer2": true, "use_gitignore": true, "whole_word": false, "wrap": true }, "groups": [ { "sheets": [ { "buffer": 0, "file": "src/main.rs", "semi_transient": false, "settings": { "buffer_size": 5364, "regions": { }, "selection": [ [ 0, 4080 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" }, { "characters": ":.'(", "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", "server": "LSP-rust-analyzer" } ], "lsp_active": true, "lsp_uri": "file:///Users/nathanrashleigh/vlt/projects/ambium/src/main.rs", "show_definitions": false, "syntax": "Packages/Rust/Rust.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 1536.0, "zoom_level": 1.0 }, "stack_index": 3, "stack_multiselect": false, "type": "text" }, { "buffer": 1, "file": "etc/inventory.md", "semi_transient": false, "settings": { "buffer_size": 3092, "regions": { }, "selection": [ [ 1674, 1674 ] ], "settings": { "lsp_uri": "file:///Users/nathanrashleigh/vlt/projects/ambium/etc/inventory.md", "syntax": "Packages/Markdown/Markdown.sublime-syntax" }, "translation.x": 0.0, "translation.y": 1042.0, "zoom_level": 1.0 }, "stack_index": 1, "stack_multiselect": false, "type": "text" }, { "buffer": 2, "file": "etc/diy/diy-bom.md", "selected": true, "semi_transient": true, "settings": { "buffer_size": 6094, "regions": { }, "selection": [ [ 5074, 5074 ] ], "settings": { "lsp_uri": "file:///Users/nathanrashleigh/vlt/projects/ambium/etc/diy/diy-bom.md", "syntax": "Packages/Markdown/Markdown.sublime-syntax" }, "translation.x": 0.0, "translation.y": 2806.0, "zoom_level": 1.0 }, "stack_index": 0, "stack_multiselect": false, "type": "text" }, { "buffer": 3, "file": "/Users/nathanrashleigh/code/f411/src/lib.rs", "semi_transient": false, "settings": { "buffer_size": 588, "regions": { }, "selection": [ [ 588, 588 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" }, { "characters": ":.'(", "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", "server": "LSP-rust-analyzer" } ], "lsp_active": true, "lsp_uri": "file:///Users/nathanrashleigh/code/f411/src/lib.rs", "show_definitions": false, "syntax": "Packages/Rust/Rust.sublime-syntax" }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, "stack_index": 2, "stack_multiselect": false, "type": "text" }, { "buffer": 4, "file": "/Users/nathanrashleigh/code/f411/src/button.rs", "semi_transient": false, "settings": { "buffer_size": 2180, "regions": { }, "selection": [ [ 655, 655 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" }, { "characters": ":.'(", "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", "server": "LSP-rust-analyzer" } ], "lsp_active": true, "lsp_uri": "file:///Users/nathanrashleigh/code/f411/src/button.rs", "show_definitions": false, "syntax": "Packages/Rust/Rust.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, "stack_index": 4, "stack_multiselect": false, "type": "text" }, { "buffer": 5, "file": "/Users/nathanrashleigh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lsm303dlhc-0.2.0/src/lib.rs", "semi_transient": false, "settings": { "buffer_size": 6702, "regions": { }, "selection": [ [ 6231, 6231 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" }, { "characters": ":.'(", "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", "server": "LSP-rust-analyzer" } ], "lsp_active": true, "lsp_uri": "file:///Users/nathanrashleigh/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lsm303dlhc-0.2.0/src/lib.rs", "show_definitions": false, "syntax": "Packages/Rust/Rust.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 917.0, "zoom_level": 1.0 }, "stack_index": 5, "stack_multiselect": false, "type": "text" }, { "buffer": 6, "file": "build.rs", "semi_transient": false, "settings": { "buffer_size": 590, "regions": { }, "selection": [ [ 590, 590 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" }, { "characters": ":.'(", "selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc", "server": "LSP-rust-analyzer" } ], "auto_name": "use std::env;", "lsp_active": true, "lsp_uri": "file:///Users/nathanrashleigh/vlt/projects/ambium/build.rs", "show_definitions": false, "syntax": "Packages/Rust/Rust.sublime-syntax", "tab_size": 4, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, "stack_index": 7, "stack_multiselect": false, "type": "text" }, { "buffer": 7, "file": ".cargo/config.toml", "semi_transient": false, "settings": { "buffer_size": 993, "regions": { }, "selection": [ [ 993, 993 ] ], "settings": { "auto_complete_triggers": [ { "characters": "<", "selector": "text.html, text.xml" }, { "rhs_empty": true, "selector": "punctuation.accessor" } ], "auto_name": "[target.'cfg(all(target_arch = \"arm\", target_os =", "lsp_uri": "file:///Users/nathanrashleigh/vlt/projects/ambium/.cargo/config.toml", "syntax": "Packages/TOML/TOML.sublime-syntax", "tab_size": 2, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 0.0, "zoom_level": 1.0 }, "stack_index": 6, "stack_multiselect": false, "type": "text" } ] } ], "incremental_find": { "height": 84.0 }, "input": { "height": 69.0 }, "layout": { "cells": [ [ 0, 0, 1, 1 ] ], "cols": [ 0.0, 1.0 ], "rows": [ 0.0, 1.0 ] }, "menu_visible": true, "output.Debugger": { "height": 324.0 }, "output.Debugger Console": { "height": 324.0 }, "output.LSP Log Panel": { "height": 927.0, "history": [ ] }, "output.diagnostics": { "height": 1046.0, "history": [ ] }, "output.exec": { "height": 174.0, "history": [ ] }, "output.find_results": { "height": 0.0, "history": [ ] }, "output.git": { "height": 198.0, "history": [ ] }, "output.mdpopups": { "height": 0.0, "history": [ ] }, "output.mdpopups-dummy": { "height": 0.0, "history": [ ] }, "output.rename": { "height": 882.0 }, "pinned_build_system": "", "project": "ambium.sublime-project", "replace": { "height": 136.0 }, "save_all_on_build": true, "select_file": { "height": 0.0, "last_filter": "", "selected_items": [ [ "main.r", "src/main.rs" ], [ "justfile", "switchdin/components/grid_services_function/justfile" ], [ "telem", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/telemetry_api_types.py" ], [ "compose-inf", "switchdin/components/grid_services_function/docker-compose-infra.yaml" ], [ "aggregator.py", "switchdin/components/grid_services_function/tests/services/aggregator.py" ], [ "compose-dev", "switchdin/components/grid_services_function/docker-compose-dev.yaml" ], [ "composeinf", "switchdin/components/grid_services_function/docker-compose-infra.yaml" ], [ "dockerco", "switchdin/components/grid_services_function/docker-compose.yaml" ], [ "dataplaneapity", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/data_plane_api_types.py" ], [ "telemet", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/telemetry_api_types.py" ], [ "derevent", "switchdin/components/grid_services_function/src/grid_services_function/common/entities/events/der_events.py" ], [ "oemdata", "switchdin/components/grid_services_function/src/grid_services_function/common/data_transfer_objects/oem_data.py" ], [ "depende", "switchdin/components/grid_services_function/src/grid_services_function/derapi/entrypoints/dependencies.py" ], [ "activatecomp", "switchdin/tools/dev/bin/activate_component.sh" ], [ "claudepr", "switchdin/tools/dev/bin/claude_pretool_check.sh" ], [ "listener", "switchdin/components/grid_services_function/src/grid_services_function/common/listeners/listener_entrypoint.py" ], [ "telemetrylis", "switchdin/components/grid_services_function/src/grid_services_function/asyncapi/listeners/telemetry_listener.py" ], [ "requirements.in", "switchdin/components/grid_services_function/dependencies/requirements.in" ], [ "awsbasemain", "switchdin/components/aws_bedrock/deployment/src/modules/aws_base/main.tf" ], [ "hpprodmain", "switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/aws/00_hpprod_main.tf" ], [ "haproxy", "switchdin/shared/ansible/roles/switchdin.docker_rabbitmq_proxy/templates/haproxy.cfg" ], [ "haprox", "switchdin/shared/ansible/roles/switchdin.docker_haproxy/templates/haproxy.cfg" ], [ "dockerrabbitmqproxy", "switchdin/shared/ansible/roles/switchdin.docker_rabbitmq_proxy/defaults/main.yml" ], [ "402", "switchdin/shared/ansible/402_rabbitMQProxy.yml" ], [ "rabbitmqusers", "switchdin/shared/ansible/roles/switchdin.rabbitmq_users/tasks/main.yml" ], [ "dockerrabbitmq", "switchdin/shared/ansible/roles/switchdin.docker_rabbitmq/tasks/main.yml" ], [ "rabbitbro", "switchdin/shared/ansible/401_rabbitMQBrokers.yml" ], [ "switchdinuser", "switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/all/switchdin_users.yml" ], [ "usermanagement", "switchdin/shared/ansible/roles/switchdin.user_management/README.md" ], [ "inventori", "switchdin/components/stormcloud-api/deployment/production/switchdin-main/prod_inventory.ini" ], [ "components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/sshpi_test.tf", "switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/sshpi_test.tf" ], [ "copy.sh", "switchdin/tools/demo_data_copy/copy.sh" ], [ "mcp.json", "switchdin/components/grid_services_function/.mcp.json" ], [ "docker_rabbitmq_proxy", "switchdin/shared/ansible/roles/switchdin.docker_rabbitmq_proxy/templates/haproxy.cfg" ], [ "haproxy.cf", "switchdin/shared/ansible/roles/switchdin.docker_haproxy/templates/haproxy.cfg" ], [ "haproxy.cfg", "switchdin/shared/ansible/roles/switchdin.docker_haproxy_mqtt/templates/haproxy.cfg" ], [ "components/stormcloud-api/deployment/src/environments/prod.env", "switchdin/components/stormcloud-api/deployment/src/environments/prod.env" ], [ "alerts", "switchdin/components/grid_services_function/deployment/test/gsf-isvt/monitoring/04_alerts.tf" ], [ "haproxy.", "droplet/local/haproxy/haproxy.cfg" ], [ "hpprod", "switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/flexgw/03_hpprod_flexgw.tf" ], [ "endeprod", "switchdin/components/grid_services_function/deployment/prod/endeprod/aws/02_endeprod_k8s_auth.tf" ], [ "productioninv", "switchdin/shared/ansible/environments/prod/production_inventory.ini" ], [ "components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/all/switchdin_users.yml", "switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/ansible/group_vars/all/switchdin_users.yml" ], [ "hpprodtfvs", "switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/terraform.tfvars" ], [ "hptesttfvar", "switchdin/components/grid_services_function/deployment/test/hp/flexgw/terraform.tfvars" ], [ "endetesttfvars", "switchdin/components/grid_services_function/deployment/test/endetest/gsf/terraform.tfvars" ], [ "renewalb", "switchdin/components/telemetry_pipeline/deployment/test/au_shared_vef_test_1/renewal_broker.tf" ], [ "400_rabbitServers.yml", "switchdin/shared/ansible/400_rabbitServers.yml" ], [ "pkiinsta", "switchdin/shared/ansible/G00_PKI_Install.yml" ], [ "certrenew", "switchdin/poc/mqtt-expired-cert-recovery/cert_renewal_flow.md" ], [ "certre", "switchdin/poc/mqtt-expired-cert-recovery/cert_renewal_flow.html" ], [ "cert_renew_droplet.sh", "switchdin/shared/ansible/roles/switchdin.sshpi/files/cert-renew/cert_renew_droplet.sh" ], [ "productioninvn", "switchdin/shared/ansible/environments/prod/production_inventory.ini" ], [ "400rabbi", "switchdin/shared/ansible/400_rabbitServers.yml" ], [ "makefile", "switchdin/components/grid_services_function/makefile" ], [ "configuresho", "switchdin/shared/ansible/tools/configure_shovels.py" ], [ "insecure", "switchdin/components/telemetry_pipeline/deployment/prod/switchdin_main/insecure_broker.tf" ], [ "mimir", "switchdin/components/grid_services_function/deployment/src/monitor/04_mimir.tf" ], [ "shared/ansible/roles/switchdin.docker_haproxy_mqtt/templates/haproxy.cfg", "switchdin/shared/ansible/roles/switchdin.docker_haproxy_mqtt/templates/haproxy.cfg" ], [ "droplet_certificate_util/pki.py", "switchdin/shared/lib/droplet_certificate_util/src/lib/droplet_certificate_util/pki.py" ], [ "genlimit", "switchdin/components/grid_services_function/src/grid_services_function/assurance/assurance_sitect_genlimit.py" ], [ "alerts.tf", "switchdin/components/grid_services_function/deployment/test/gsf-isvt/monitoring/04_alerts.tf" ], [ "grafa", "switchdin/components/grid_services_function/deployment/src/monitor/03_grafana.tf" ], [ "redpand", "switchdin/components/grid_services_function/deployment/src/monitor/04_redpanda.tf" ], [ "hptesttfvars", "switchdin/components/grid_services_function/deployment/test/hp/flexgw/terraform.tfvars" ], [ "teleme", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/telemetry_api_types.py" ], [ "endetest", "switchdin/components/grid_services_function/deployment/test/endetest/gsf/terraform.tfvars" ], [ "mcp.", "switchdin/components/grid_services_function/.mcp.json" ], [ "grafana.tf", "switchdin/components/grid_services_function/deployment/src/monitor/03_grafana.tf" ], [ "mimir.", "switchdin/components/grid_services_function/deployment/src/monitor/04_mimir.tf" ], [ "mimirin", "switchdin/components/grid_services_function/deployment/src/monitor/04_mimir_ingest.tf" ], [ "redpanda", "switchdin/components/grid_services_function/deployment/src/monitor/04_redpanda.tf" ], [ "setplib", "switchdin/components/grid_services_function/src/grid_services_function/common/entities/seplib.py" ], [ "telemetry", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/telemetry_api_types.py" ], [ "costs.py", "switchdin/components/grid_services_function/tools/boto3_tools/costs.py" ], [ "monitor.tf", "switchdin/components/grid_services_function/deployment/src/monitor/02_monitor.tf" ], [ "monitordeplo", "switchdin/components/grid_services_function/deployment/src/otel-collector/monitor-deployment.yaml" ], [ "warpst", "switchdin/components/grid_services_function/deployment/test/gsf-isvt/lgtm/01_warpstream.tf" ], [ "isvtmain", "switchdin/components/aws_bedrock/deployment/test/gsf-isvt/main.tf" ], [ "vulnera", "switchdin/.github/workflows/vulnerability-scanner.yml" ], [ "loadtester", "switchdin/components/gsf_load_tester/dependencies/requirements.in" ], [ "dropletv4require", "switchdin/components/droplet_v4/dependencies/requirements.txt" ], [ "312re", "switchdin/shared/python/resolves/standard_py312/requirements.in" ], [ "loadtesterrequirement", "switchdin/components/gsf_load_tester/dependencies/requirements.in" ], [ "requirement", "switchdin/components/grid_services_function/dependencies/requirements.in" ], [ "msk.tf", "switchdin/components/grid_services_function/deployment/src/infra/msk.tf" ], [ "devicesredi", "switchdin/components/grid_services_function/src/grid_services_function/common/adaptors/devices_redis.py" ], [ "controlsser", "switchdin/components/grid_services_function/src/grid_services_function/common/services/controls_service_gsf.py" ], [ "dercontrolli", "switchdin/components/grid_services_function/src/grid_services_function/derapi/use_cases/der_control_list_get_use_case.py" ], [ ".env", "switchdin/components/grid_services_function/.env.dev" ], [ "mirror", "switchdin/components/grid_services_function/.mirrord/mirrord.json" ], [ "testass", "switchdin/components/grid_services_function/tests/grid_services_function_tests/integration/assurance/test_assurance_sitect.py" ], [ "instr", "switchdin/components/grid_services_function/src/grid_services_function/common/services/instrumented_service_gsf.py" ], [ "instrumente", "switchdin/components/grid_services_function/src/grid_services_function/common/services/instrumented_service_gsf.py" ], [ "usagepointuse", "switchdin/components/grid_services_function/src/grid_services_function/derapi/use_cases/mirror_usage_point_use_cases.py" ], [ "tsdb.t", "switchdin/components/grid_services_function/deployment/test/swdutsrvdev/acp/02_tsdb.tf" ], [ "infra.tf", "switchdin/components/grid_services_function/deployment/prod/au-horizonpower-flexgw-prod-1/aws/02_hpprod_infra.tf" ], [ "lakeprod", "switchdin/components/lake/deployment/production/main.tf" ], [ "collectrodeploy", "switchdin/components/grid_services_function/deployment/src/otel-collector/monitor-deployment.yaml" ], [ "test/endetest/aws/03_endetest_nodepool.tf", "switchdin/components/grid_services_function/deployment/test/endetest/aws/03_endetest_nodepool.tf" ], [ "eksnode", "switchdin/components/grid_services_function/deployment/src/t1-eks/02_eks_nodepools.tf" ], [ "mk3", "switchdin/components/grid_services_function/deployment/test/gsf-isvt/monitoring/dashboards/gsf_overview_mk3.json" ], [ "t1eks", "switchdin/components/grid_services_function/deployment/src/t1-eks/02_eks_nodepools.tf" ], [ "networkallocatmain", "switchdin/tools/network_allocator/src/network_allocator/main.py" ], [ "awsnetworkmain", "switchdin/components/aws_bedrock/deployment/src/modules/aws_networking/main.tf" ], [ "grafna.tf", "switchdin/components/grid_services_function/deployment/test/gsf-isvt/monitoring/01_grafana.tf" ], [ "kafkaasync", "switchdin/components/grid_services_function/src/grid_services_function/common/external_interfaces/kafka/kafka_async_listener.py" ], [ "telemetryli", "switchdin/components/grid_services_function/src/grid_services_function/asyncapi/listeners/telemetry_listener.py" ], [ "tsdblist", "switchdin/components/grid_services_function/src/grid_services_function/tsdb/tsdb_listener.py" ], [ "vpn.tf", "switchdin/components/grid_services_function/deployment/src/ende-vpn/ende_vpn.tf" ], [ "endevpn", "switchdin/components/grid_services_function/deployment/src/ende-vpn/ende_vpn.tf" ], [ "derapi", "switchdin/components/grid_services_function/deployment/src/gsf/04_derapi.tf" ], [ "endetestexte", "switchdin/components/grid_services_function/deployment/test/endetest/aws/01_endetest_extsubnets.tf" ], [ "endeexte", "switchdin/components/grid_services_function/deployment/test/endetest/aws/01_endetest_extsubnets.tf" ], [ "allocatorma", "switchdin/tools/network_allocator/src/network_allocator/main.py" ], [ "testmirror", "switchdin/components/grid_services_function/tests/grid_services_function_tests/derapi/test_mirror_usage_point.py" ], [ "dataplanelis", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/listeners/dataplane_listener.py" ], [ "oem", "switchdin/components/grid_services_function/src/grid_services_function/common/data_transfer_objects/oem_data.py" ], [ "tsdbli", "switchdin/components/grid_services_function/src/grid_services_function/tsdb/tsdb_listener.py" ], [ "tsdb", "switchdin/components/grid_services_function/src/grid_services_function/tsdb/tsdb_listener.py" ], [ "extension", "switchdin/components/grid_services_function/deployment/test/swdutsrvdev/aws/01_extension_subnets.tf" ], [ "dataplanemet", "switchdin/components/grid_services_function/src/grid_services_function/data_plane/upstream/dataplane_metrics.py" ], [ "codeow", "switchdin/CODEOWNERS" ], [ "acptfvars", "switchdin/components/grid_services_function/deployment/test/swdutsrvdev/acp/terraform.tfvars" ], [ "endetestfvars", "switchdin/components/grid_services_function/deployment/test/endetest/gsf/terraform.tfvars" ], [ "allocator.py", "switchdin/tools/network_allocator/src/network_allocator/main.py" ], [ "extensionsubn", "switchdin/components/grid_services_function/deployment/test/swdutsrvdev/aws/01_extension_subnets.tf" ], [ "networkallo", "switchdin/.github/workflows/network_allocator.yaml" ] ], "width": 0.0 }, "select_project": { "height": 628.0, "last_filter": "swi", "selected_items": [ [ "swi", "~/code/switchdin.sublime-project" ], [ "sw", "~/code/switchdin.sublime-project" ], [ "maple", "~/code/maple/maple.sublime-project" ], [ "map", "~/code/maple/maple.sublime-project" ], [ "dc", "~/sublime/dc.sublime-project" ], [ "dev", "~/code/devops.sublime-project" ], [ "", "~/code/ee.sublime-project" ], [ "pod", "~/code/podowl/podowl.sublime-project" ], [ "de", "~/code/devops.sublime-project" ], [ "ee", "~/code/ee.sublime-project" ], [ "dr", "~/code/devops.sublime-project" ], [ "isv", "~/code/isvt.sublime-project" ], [ "devops", "~/code/devops.sublime-project" ], [ "gsf", "~/code/gsf.sublime-project" ], [ "gs", "~/code/gsf.sublime-project" ], [ "is", "~/code/isvt.sublime-project" ] ], "width": 476.0 }, "select_symbol": { "height": 525.0, "last_filter": "", "selected_items": [ ], "width": 598.0 }, "selected_group": 0, "settings": { "lsp_show_inlay_hints": false }, "show_minimap": true, "show_open_files": false, "show_tabs": true, "side_bar_visible": true, "side_bar_width": 614.0, "status_bar_visible": true, "template_settings": { } }