<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>109908</bug_id>
          
          <creation_ts>2013-02-15 00:29:41 -0800</creation_ts>
          <short_desc>Web Inspector: support stable remote object ids</short_desc>
          <delta_ts>2026-01-12 09:01:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29714</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>graouts</cc>
    
    <cc>haraken</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>japhet</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rafaelw</cc>
    
    <cc>sandipchitale</cc>
    
    <cc>vivekg</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833768</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-15 00:29:41 -0800</bug_when>
    <thetext>At the moment inspector backend will generate new remote object id even though the object may have already been requested before and its id hasn&apos;t been released yet. Having stable remote object ids would improve debugging experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834001</commentid>
    <comment_count>1</comment_count>
    <who name="Sandip Chitale">sandipchitale</who>
    <bug_when>2013-02-15 07:22:00 -0800</bug_when>
    <thetext>This will be useful in implementing the enhancement: id=29714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847612</commentid>
    <comment_count>2</comment_count>
      <attachid>191482</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-05 06:25:31 -0800</bug_when>
    <thetext>Created attachment 191482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848840</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-06 07:21:00 -0800</bug_when>
    <thetext>Committed r144924: &lt;http://trac.webkit.org/changeset/144924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849055</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-06 10:46:34 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r144924: &lt;http://trac.webkit.org/changeset/144924&gt;

It made zillion inspector tests crash/assert everywhere:
- Mac: http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20%28Tests%29/r144928%20%287239%29/results.html
- Qt: http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Debug/r144931%20%2828011%29/results.html

Could you check and fix it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849093</commentid>
    <comment_count>5</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-03-06 11:07:02 -0800</bug_when>
    <thetext>Reverted r144924 for reason:

caused multiple crashes in inspector/debugger tests

Committed r144950: &lt;http://trac.webkit.org/changeset/144950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849095</commentid>
    <comment_count>6</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-03-06 11:07:36 -0800</bug_when>
    <thetext>FYI. All the stack traces looked like this:

crash log for DumpRenderTree (pid 2718):
STDOUT: &lt;empty&gt;
STDERR: objc[2718]: Class MockCrApp is implemented in both /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/libwebkit.dylib and /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/DumpRenderTree.app/Contents/MacOS/DumpRenderTree. One of the two will be used. Which one is undefined.
STDERR: ASSERTION FAILED: !isDeletedBucket(*(lookupForWriting(Extractor::extract(entry)).first))
STDERR: ../../third_party/WebKit/Source/WTF/wtf/HashTable.h(953) : void WTF::HashTable&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt;::reinsert(ValueType &amp;) [Key = WebCore::ScriptObject, Value = WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, HashFunctions = WTF::ScriptObjectHash, Traits = WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, KeyTraits = WTF::HashTraits&lt;WebCore::ScriptObject&gt;]
STDERR: 1   0x92dd7e4 WTF::HashTable&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt;::reinsert(WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;&amp;)
STDERR: 2   0x92dd4da WTF::HashTable&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt;::rehash(int)
STDERR: 3   0x92df9e8 WTF::HashTable&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt;::expand()
STDERR: 4   0x92df61d WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt; &gt; WTF::HashTable&lt;WebCore::ScriptObject, WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ScriptObject, unsigned int&gt; &gt;, WTF::ScriptObjectHash, WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::HashTraits&lt;WebCore::ScriptObject&gt; &gt;::add&lt;WTF::HashMapTranslator&lt;WTF::HashMapValueTraits&lt;WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;, WTF::ScriptObjectHash&gt;, WebCore::ScriptObject, unsigned int&gt;(WebCore::ScriptObject const&amp;, unsigned int const&amp;)
STDERR: 5   0x92df32f WTF::HashMap&lt;WebCore::ScriptObject, unsigned int, WTF::ScriptObjectHash, WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;::inlineAdd(WebCore::ScriptObject const&amp;, unsigned int const&amp;)
STDERR: 6   0x92df1af WTF::HashMap&lt;WebCore::ScriptObject, unsigned int, WTF::ScriptObjectHash, WTF::HashTraits&lt;WebCore::ScriptObject&gt;, WTF::HashTraits&lt;unsigned int&gt; &gt;::add(WebCore::ScriptObject const&amp;, unsigned int const&amp;)
STDERR: 7   0x92cedc0 WebCore::InjectedScriptManager::ObjectIdMap::objectId(WebCore::ScriptObject const&amp;)
STDERR: 8   0x92ccf4c WebCore::InjectedScriptManager::objectId(WebCore::ScriptObject const&amp;)
STDERR: 9   0x92c910b WebCore::InjectedScriptHost::objectId(WebCore::ScriptObject const&amp;)
STDERR: 10  0x8de2d4e WebCore::V8InjectedScriptHost::objectIdMethodCustom(v8::Arguments const&amp;)
STDERR: 11  0x7b5792c _ZN7WebCore28InjectedScriptHostV8InternalL22objectIdMethodCallbackERKN2v89ArgumentsE
STDERR: 12  0x47a51634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053937</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-12-09 14:06:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/19195609&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191482</attachid>
            <date>2013-03-05 06:25:31 -0800</date>
            <delta_ts>2014-12-09 14:11:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109908-20130305182137.patch</filename>
            <type>text/plain</type>
            <size>23225</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZjMTI2YmNmMTRlYmM0
ZmQ1OTIzYzc3MTg3YmZiODQ5NzE4OGFjNS4uNzkzMzc5ZDdkNTkxZjNjMjk4NzYwOGEzNTEyNzM0
ZTU3NmFjODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTA1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgc3RhYmxlIHJlbW90ZSBvYmplY3QgaWRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIGEgbWFwIGZyb20gamF2YXNj
cmlwdCBvYmplY3QgdG8gaXRzIGlkLiBJdCBndWFyYW50ZWVzCisgICAgICAgIHRoYXQgb2JqZWN0
IGlzIGFzc2luZWQgaWQgb25seSBvbmNlICh1bmxlc3MgaXQgaXMgZXhwbGljaXRlbHkKKyAgICAg
ICAgcmVsZWFzZWQpLiBUaGUgbWFwIGlzIHBlciBleGVjdXRpb24gY29udGV4dCBhbmQgaXMgc3Rv
cmVkIGluCisgICAgICAgIEluamVjdGVkU2NyaXB0TWFuYWdlci4KKworICAgICAgICBUZXN0OiBp
bnNwZWN0b3ItcHJvdG9jb2wvcGVyc2lzdGVudC1pZC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luamVjdGVkU2NyaXB0SG9zdDo6b2JqZWN0SWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6cmVsZWFzZU9iamVjdElkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaDoKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6OlNjcmlwdE9iamVjdEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpTY3JpcHRP
YmplY3RIYXNoOjplcXVhbCk6CisgICAgICAgIChTY3JpcHRPYmplY3RIYXNoKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChX
VEY6OlNjcmlwdE9iamVjdEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpTY3JpcHRPYmplY3RI
YXNoOjplcXVhbCk6CisgICAgICAgIChTY3JpcHRPYmplY3RIYXNoKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Om9iamVjdElkTWV0aG9kQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6
OnJlbGVhc2VPYmplY3RJZE1ldGhvZEN1c3RvbSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OkluamVjdGVk
U2NyaXB0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpvYmplY3RJZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9z
dDo6cmVsZWFzZU9iamVjdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0SG9zdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGw6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChJbmplY3RlZFNj
cmlwdE1hbmFnZXI6Ok9iamVjdElkTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6T2JqZWN0SWRNYXA6Ok9iamVjdElkTWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6T2JqZWN0SWRNYXA6Om9iamVjdElkKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6T2JqZWN0SWRNYXA6OnJlbGVhc2VPYmpl
Y3RJZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpvYmplY3RJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OnJlbGVhc2VPYmplY3RJZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOgorICAgICAgICAo
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanM6CisgICAgICAgICguKToKKwogMjAxMy0wMy0wNCAgQnJhbmRvbiBKb25lcyAg
PGJham9uZXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggMGYxNWU0YmUwZTBjZTlj
MTUwZWQ4YWZkMGZlMmY1M2JiNmYzOWNhYy4uZjMwYTdjOTM2NTdlZGExYzE5ODc0YTRjNWY2YjJj
YzdmYTUyNDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMjYzLDYgKzI2MywzMSBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6
b2JqZWN0SWQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU09iamVjdCoganNP
YmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKKyAgICBpZiAoIWpzT2JqZWN0
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBFeGVjU3RhdGUqIGdsb2JhbEV4
ZWMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBTY3Jp
cHRPYmplY3Qgb2JqZWN0KGdsb2JhbEV4ZWMsIGpzT2JqZWN0KTsKKyAgICByZXR1cm4ganNOdW1i
ZXIoaW1wbCgpLT5vYmplY3RJZChvYmplY3QpKTsKK30KKworSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6cmVsZWFzZU9iamVjdElkKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCk7Cisg
ICAgaWYgKCFqc09iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgRXhl
Y1N0YXRlKiBnbG9iYWxFeGVjID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCk7CisgICAgU2NyaXB0T2JqZWN0IG9iamVjdChnbG9iYWxFeGVjLCBqc09iamVjdCk7Cisg
ICAgaW1wbCgpLT5yZWxlYXNlT2JqZWN0SWQob2JqZWN0KTsKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKwogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oCmluZGV4IDA5MTMzYjcwYWI1Zjll
MDgzMjU3NmZkZGJiNWI0YjEwZGM5NmRhZWEuLjI0ZDQ2YjFmZDg1MjhjYjczNjhkMGQxNmMzYWU2
MWNkMjEwNDM4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5o
CkBAIC02OCw0ICs2OCwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0KIAorbmFtZXNwYWNl
IFdURiB7CisKK3N0cnVjdCBTY3JpcHRPYmplY3RIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBXZWJDb3JlOjpTY3JpcHRPYmplY3QmIGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2goa2V5LmpzT2JqZWN0
KCkpOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTY3JpcHRP
YmplY3QmIGEsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdE9iamVjdCYgYikKKyAgICB7CisgICAgICAg
IHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpTY3JpcHRPYmplY3Q+IHsKKyAgICB0eXBlZGVmIFNjcmlwdE9iamVjdEhh
c2ggSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2Ny
aXB0T2JqZWN0PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNjcmlwdE9iamVjdD4gewor
ICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTY3JpcHRPYmplY3QmIHNsb3QpIHsgbmV3IChO
b3ROdWxsLCAmc2xvdCkgV2ViQ29yZTo6U2NyaXB0T2JqZWN0KCk7IH0KKyAgICBzdGF0aWMgYm9v
bCBpc0RlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTY3JpcHRPYmplY3QgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmhhc05vVmFsdWUoKTsgfQorfTsKKworfQorCiAjZW5kaWYgLy8gU2NyaXB0T2JqZWN0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgKaW5kZXggMWM0N2E2MGMw
ZjNlN2VlODg5Zjk5NjBmM2JkYTEwZjFhMWM4MjM5My4uZWExNTc5YzUyNTgxMWNjNzc3NTU4MDIx
OGY1MWQ2YWU3ZWUwZTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2Jq
ZWN0LmgKQEAgLTY2LDQgKzY2LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfQogCituYW1l
c3BhY2UgV1RGIHsKKworc3RydWN0IFNjcmlwdE9iamVjdEhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlNjcmlwdE9iamVjdCYga2V5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGtleS52OE9iamVjdCgpLT5HZXRJZGVudGl0eUhhc2goKTsKKyAgICB9CisgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2NyaXB0T2JqZWN0JiBhLCBjb25zdCBX
ZWJDb3JlOjpTY3JpcHRPYmplY3QmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOwor
ICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2Ny
aXB0T2JqZWN0PiB7CisgICAgdHlwZWRlZiBTY3JpcHRPYmplY3RIYXNoIEhhc2g7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNjcmlwdE9iamVjdD4gOiBHZW5l
cmljSGFzaFRyYWl0czxXZWJDb3JlOjpTY3JpcHRPYmplY3Q+IHsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoV2ViQ29yZTo6U2NyaXB0T2JqZWN0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIFdl
YkNvcmU6OlNjcmlwdE9iamVjdCgpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
V2ViQ29yZTo6U2NyaXB0T2JqZWN0IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5oYXNOb1ZhbHVlKCk7
IH0KK307CisKK30KKworCiAjZW5kaWYgLy8gU2NyaXB0T2JqZWN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IGU2MzY5OGYyNTk3OTE2YjM2MDdmMGIwNGExZmRmZTNkYjNk
YmMyZTUuLjY4Y2Q4MTg5ZmE5NDNmYjdmZTIyYjY2M2NmMjY4N2FiMWUzMWYzYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMjgyLDYgKzI4MiwzMCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6b2JqZWN0SWRNZXRob2RDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QgPSBhcmdzWzBdLT5Ub09iamVjdCgpOworICAgIGlmIChvYmplY3QuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIEluamVjdGVkU2NyaXB0
SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKKyAgICB1bnNpZ25lZCBpZCA9IGhvc3QtPm9iamVjdElkKFNjcmlwdE9iamVjdChTY3JpcHRT
dGF0ZTo6Y3VycmVudCgpLCBvYmplY3QpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGlk
KTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpyZWxl
YXNlT2JqZWN0SWRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSBhcmdzWzBdLT5Ub09iamVjdCgp
OworICAgIGlmIChvYmplY3QuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB1bnNpZ25lZCBpZCA9IGhvc3QtPnJlbGVh
c2VPYmplY3RJZChTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgb2JqZWN0KSk7
CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpZCk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZE1ldGhvZEN1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMmU2
MzRkNDRiNmNhODU3NTMzMzE3YTVjOTY0ZjEyMDUyYzM1M2IyYi4uMTQ0MjVhZmRhMzQ5MDBlNTM2
YmIyN2NjMDFjMTFlMGRmZTZiM2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTY0LDEzICs2NCwxNCBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRTY3Jp
cHRIb3N0PiBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPEluamVjdGVk
U2NyaXB0SG9zdD4gSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBtYW5hZ2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRTY3JpcHRI
b3N0KCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRTY3JpcHRIb3N0KG1hbmFn
ZXIpKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlwdEhvc3QoKQotICAg
IDogbV9pbnNwZWN0b3JBZ2VudCgwKQorSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlw
dEhvc3QoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIDogbV9tYW5hZ2VyKG1h
bmFnZXIpCisgICAgLCBtX2luc3BlY3RvckFnZW50KDApCiAgICAgLCBtX2NvbnNvbGVBZ2VudCgw
KQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoMCkKQEAg
LTg3LDYgKzg4LDcgQEAgSW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3JpcHRIb3N0KCkK
IAogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQogeworICAgIG1fbWFuYWdl
ciA9IDA7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IDA7CiAgICAgbV9jb25zb2xlQWdlbnQgPSAw
OwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0xMjMsNiArMTI1LDIwIEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2Fy
ZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIAordW5zaWduZWQgSW5qZWN0ZWRTY3JpcHRIb3N0
OjpvYmplY3RJZChjb25zdCBTY3JpcHRPYmplY3QmIG9iamVjdCkKK3sKKyAgICBpZiAoIW1fbWFu
YWdlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbWFuYWdlci0+b2JqZWN0SWQo
b2JqZWN0KTsKK30KKwordW5zaWduZWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpyZWxlYXNlT2JqZWN0
SWQoY29uc3QgU2NyaXB0T2JqZWN0JiBvYmplY3QpCit7CisgICAgaWYgKCFtX21hbmFnZXIpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX21hbmFnZXItPnJlbGVhc2VPYmplY3RJZChv
YmplY3QpOworfQorCiBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxl
T2JqZWN0OjpnZXQoU2NyaXB0U3RhdGUqKQogewogICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IGFm
NjZiMjhiMzE4ZWE5ZWY5YzcxNDhmZTdlMGY4NDZhNmY1Yzg2ZDYuLmYwYWFkMzIxN2VlYmRjM2U4
MDM0OTYxZjAxZmUxYTlhMTEyY2ViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0OworY2xhc3MgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKQEAgLTU5LDcgKzYwLDcgQEAg
c3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvOwogCiBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxJbmplY3RlZFNjcmlwdEhvc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gY3JlYXRlKEluamVjdGVkU2NyaXB0TWFuYWdl
ciopOwogICAgIH5JbmplY3RlZFNjcmlwdEhvc3QoKTsKIAogICAgIHZvaWQgaW5pdChJbnNwZWN0
b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQKQEAgLTEwNiw2ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAgICAgdm9pZCBjb3B5VGV4dChjb25zdCBT
dHJpbmcmIHRleHQpOworICAgIHVuc2lnbmVkIG9iamVjdElkKGNvbnN0IFNjcmlwdE9iamVjdCYp
OworICAgIHVuc2lnbmVkIHJlbGVhc2VPYmplY3RJZChjb25zdCBTY3JpcHRPYmplY3QmKTsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFN0cmluZyBkYXRhYmFzZUlkSW1wbChEYXRhYmFz
ZSopOwogI2VuZGlmCkBAIC0xMTYsOCArMTE5LDkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisgICAgZXhwbGljaXQgSW5qZWN0ZWRTY3Jp
cHRIb3N0KEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCisgICAgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBtX21hbmFnZXI7CiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAg
ICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbAppbmRleCBiZWMzNDg1ZWVmN2VkY2I2ZWEzNjFjNjk4MjNjMzM3NjBmZGMxMjIwLi5k
ZWFhYWExODQ1Yjk2NjYwZDFmNjY0MGIzMDI4MjFjYWJjNGE3NjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtNDYsNiArNDYsOCBA
QAogICAgIFtDdXN0b21dIEFycmF5IGdldEludGVybmFsUHJvcGVydGllcyhpbiBhbnkgb2JqZWN0
KTsKICAgICBbQ3VzdG9tXSBBcnJheSBnZXRFdmVudExpc3RlbmVycyhpbiBOb2RlIG5vZGUpOwog
CisgICAgW0N1c3RvbV0gdW5zaWduZWQgaW50IG9iamVjdElkKGluIGFueSBvYmplY3QpOworICAg
IFtDdXN0b21dIHZvaWQgcmVsZWFzZU9iamVjdElkKGluIGFueSBvYmplY3QpOwogICAgIFtDdXN0
b21dIERPTVN0cmluZyBkYXRhYmFzZUlkKGluIGFueSBkYXRhYmFzZSk7CiAgICAgW0N1c3RvbV0g
RE9NU3RyaW5nIHN0b3JhZ2VJZChpbiBhbnkgc3RvcmFnZSk7CiAgICAgW0N1c3RvbV0gYW55IGV2
YWx1YXRlKGluIERPTVN0cmluZyB0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggMWQ1ZTMxNzU3Y2Q4NmIzYjIyYjhm
ZWRiMzFhYmNkNWUwMmVmZjQ3NC4uODEyMTM0MTgzNThkMjI3MjAxZWZlMGNjYTY4MDMwMjYwODJi
N2NmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKQEAgLTQ2LDYgKzQ2LDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpPYmplY3RJ
ZE1hcCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0SWRNYXApOworcHVibGljOgor
ICAgIE9iamVjdElkTWFwKCkgOiBtX25leHRJZCgxKSB7IH0KKworICAgIHVuc2lnbmVkIG9iamVj
dElkKGNvbnN0IFNjcmlwdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9vYmplY3RUb0lkLmFkZChvYmplY3QsIG1fbmV4dElkKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgKyttX25leHRJZDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgfQorCisgICAgdW5zaWduZWQg
cmVsZWFzZU9iamVjdElkKGNvbnN0IFNjcmlwdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fb2JqZWN0VG9JZC50YWtlKG9iamVjdCk7CisgICAgfQorCitwcml2YXRlOgor
CisgICAgdHlwZWRlZiBIYXNoTWFwPFNjcmlwdE9iamVjdCwgdW5zaWduZWQ+IE1hcDsKKyAgICBN
YXAgbV9vYmplY3RUb0lkOworICAgIHVuc2lnbmVkIG1fbmV4dElkOworfTsKKwogUGFzc093blB0
cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9y
UGFnZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmplY3RlZFNjcmlwdE1hbmFnZXIo
JkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KSk7CkBAIC01
OCw3ICs4Myw3IEBAIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNyZWF0ZUZvcldvcmtlcigpCiAKIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sgYWNjZXNzQ2hl
Y2spCiAgICAgOiBtX25leHRJbmplY3RlZFNjcmlwdElkKDEpCi0gICAgLCBtX2luamVjdGVkU2Ny
aXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKQorICAgICwgbV9pbmplY3RlZFNj
cmlwdEhvc3QoSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2luc3Bl
Y3RlZFN0YXRlQWNjZXNzQ2hlY2soYWNjZXNzQ2hlY2spCiB7CiB9CkBAIC0xMTYsNiArMTQxLDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKQog
ewogICAgIG1faWRUb0luamVjdGVkU2NyaXB0LmNsZWFyKCk7CiAgICAgbV9zY3JpcHRTdGF0ZVRv
SWQuY2xlYXIoKTsKKyAgICBtX3NjcmlwdFN0YXRlVG9PYmplY3RJZE1hcC5jbGVhcigpOwogfQog
CiB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihE
T01XaW5kb3cqIHdpbmRvdykKQEAgLTEyMyw2ICsxNDksMTYgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCiAg
ICAgaWYgKG1fc2NyaXB0U3RhdGVUb0lkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gRGVzdHJveSBvYmplY3QgaWQgbWFwcy4KKyAgICBWZWN0b3I8U2NyaXB0U3RhdGUqPiBz
Y3JpcHRTdGF0ZXNUb1JlbW92ZTsKKyAgICBmb3IgKFNjcmlwdFN0YXRlVG9PYmplY3RJZE1hcDo6
aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9PYmplY3RJZE1hcC5iZWdpbigpOyBpdCAhPSBt
X3NjcmlwdFN0YXRlVG9PYmplY3RJZE1hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUgPSBpdC0+a2V5OworICAgICAgICBpZiAod2luZG93ID09IGRvbVdp
bmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCisgICAgICAgICAgICBzY3JpcHRTdGF0
ZXNUb1JlbW92ZS5hcHBlbmQoc2NyaXB0U3RhdGUpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNjcmlwdFN0YXRlc1RvUmVtb3ZlLnNpemUoKTsgaSsrKQorICAgICAgICBtX3Nj
cmlwdFN0YXRlVG9PYmplY3RJZE1hcC5yZW1vdmUoc2NyaXB0U3RhdGVzVG9SZW1vdmVbaV0pOwor
CiAgICAgVmVjdG9yPGxvbmc+IGlkc1RvUmVtb3ZlOwogICAgIElkVG9JbmplY3RlZFNjcmlwdE1h
cDo6aXRlcmF0b3IgZW5kID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZW5kKCk7CiAgICAgZm9yIChJ
ZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xMzcsNyArMTczLDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3
aW5kb3cpCiAgICAgICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZShpZHNUb1JlbW92ZVtp
XSk7CiAKICAgICAvLyBOb3cgcmVtb3ZlIHNjcmlwdCBzdGF0ZXMgdGhhdCBoYXZlIGlkIGJ1dCBu
byBpbmplY3RlZCBzY3JpcHQuCi0gICAgVmVjdG9yPFNjcmlwdFN0YXRlKj4gc2NyaXB0U3RhdGVz
VG9SZW1vdmU7CisgICAgc2NyaXB0U3RhdGVzVG9SZW1vdmUuY2xlYXIoKTsKICAgICBmb3IgKFNj
cmlwdFN0YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5iZWdpbigpOyBp
dCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKTsgKytpdCkgewogICAgICAgICBTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUgPSBpdC0+a2V5OwogICAgICAgICBpZiAod2luZG93ID09IGRvbVdpbmRv
d0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCkBAIC0xNTgsNiArMTk0LDMwIEBAIHZvaWQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCkKICAgICAgICAgaXQtPnZhbHVlLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RH
cm91cCk7CiB9CiAKK3Vuc2lnbmVkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6b2JqZWN0SWQoY29u
c3QgU2NyaXB0T2JqZWN0JiBvYmplY3QpCit7CisgICAgaWYgKG9iamVjdC5oYXNOb1ZhbHVlKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IG9iamVjdC5zY3Jp
cHRTdGF0ZSgpOworICAgIE9iamVjdElkTWFwKiBtYXAgPSBtX3NjcmlwdFN0YXRlVG9PYmplY3RJ
ZE1hcC5nZXQoc3RhdGUpOworICAgIGlmICghbWFwKSB7CisgICAgICAgIFNjcmlwdFN0YXRlVG9P
YmplY3RJZE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fc2NyaXB0U3RhdGVUb09iamVjdElkTWFw
LnNldChzdGF0ZSwgYWRvcHRQdHIobmV3IE9iamVjdElkTWFwKCkpKTsKKyAgICAgICAgbWFwID0g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG1hcC0+b2Jq
ZWN0SWQob2JqZWN0KTsKK30KKwordW5zaWduZWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxl
YXNlT2JqZWN0SWQoY29uc3QgU2NyaXB0T2JqZWN0JiBvYmplY3QpCit7CisgICAgaWYgKG9iamVj
dC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0
ZSA9IG9iamVjdC5zY3JpcHRTdGF0ZSgpOworICAgIE9iamVjdElkTWFwKiBtYXAgPSBtX3Njcmlw
dFN0YXRlVG9PYmplY3RJZE1hcC5nZXQoc3RhdGUpOworICAgIGlmICghbWFwKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbWFwLT5yZWxlYXNlT2JqZWN0SWQob2JqZWN0KTsKK30KKwog
U3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQogewog
ICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oSW5qZWN0ZWRT
Y3JpcHRTb3VyY2VfanMpLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCAx
MTFlMmIyYjgzNzMyNWJmMjEyMTU4MDMzZTQ5ODc4OGVhM2UyNTgxLi41MjU3MTFkOTg1MjVmZTE1
OGFlNDIyY2Y0MTlhOTE0NDRlOTgxMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93Kik7CiAgICAgdm9pZCBy
ZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAKKyAgICB1bnNp
Z25lZCBvYmplY3RJZChjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICB1bnNpZ25lZCByZWxlYXNl
T2JqZWN0SWQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CisKICAgICB0eXBlZGVmIGJvb2wgKCpJbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKShTY3JpcHRTdGF0ZSopOwogICAgIEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2sgaW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsgfQogCkBAIC04Miw2ICs4NSw5IEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2s7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFNjcmlwdFN0YXRlKiwgaW50PiBTY3JpcHRTdGF0ZVRv
SWQ7CiAgICAgU2NyaXB0U3RhdGVUb0lkIG1fc2NyaXB0U3RhdGVUb0lkOworICAgIGNsYXNzIE9i
amVjdElkTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTY3JpcHRTdGF0ZSosIE93blB0cjxPYmpl
Y3RJZE1hcD4gPiBTY3JpcHRTdGF0ZVRvT2JqZWN0SWRNYXA7CisgICAgU2NyaXB0U3RhdGVUb09i
amVjdElkTWFwIG1fc2NyaXB0U3RhdGVUb09iamVjdElkTWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
U291cmNlLmpzCmluZGV4IDg2MTMwNzQwOTQyMzExYjk4NmY0Y2RmNjJhNTQ1ZGQwY2RhZWUyOWUu
LmZiZjk2YWE2NDVmZmJiYzkwZWVlZGY5YzA3YmIxYzJkZmVmOGRjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTc3LDcgKzc3
LDYgQEAgZnVuY3Rpb24gYmluZChmdW5jLCB0aGlzT2JqZWN0LCB2YXJfYXJncykKICAqLwogdmFy
IEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2xhc3RCb3VuZE9iamVj
dElkID0gMTsKICAgICB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdCA9IHt9OwogICAgIHRoaXMuX2lk
VG9PYmplY3RHcm91cE5hbWUgPSB7fTsKICAgICB0aGlzLl9vYmplY3RHcm91cHMgPSB7fTsKQEAg
LTIyMyw3ICsyMjIsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX2JpbmQ6IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lKQogICAgIHsKLSAgICAg
ICAgdmFyIGlkID0gdGhpcy5fbGFzdEJvdW5kT2JqZWN0SWQrKzsKKyAgICAgICAgdmFyIGlkID0g
SW5qZWN0ZWRTY3JpcHRIb3N0Lm9iamVjdElkKG9iamVjdCk7CiAgICAgICAgIHRoaXMuX2lkVG9X
cmFwcGVkT2JqZWN0W2lkXSA9IG9iamVjdDsKICAgICAgICAgdmFyIG9iamVjdElkID0gIntcImlu
amVjdGVkU2NyaXB0SWRcIjoiICsgaW5qZWN0ZWRTY3JpcHRJZCArICIsXCJpZFwiOiIgKyBpZCAr
ICJ9IjsKICAgICAgICAgaWYgKG9iamVjdEdyb3VwTmFtZSkgewpAQCAtMzcxLDYgKzM3MCw5IEBA
IEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcmVsZWFzZU9iamVj
dDogZnVuY3Rpb24oaWQpCiAgICAgeworICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5faWRUb1dy
YXBwZWRPYmplY3RbaWRdOworICAgICAgICBpZiAob2JqZWN0KQorICAgICAgICAgICAgSW5qZWN0
ZWRTY3JpcHRIb3N0LnJlbGVhc2VPYmplY3RJZChvYmplY3QpOwogICAgICAgICBkZWxldGUgdGhp
cy5faWRUb1dyYXBwZWRPYmplY3RbaWRdOwogICAgICAgICBkZWxldGUgdGhpcy5faWRUb09iamVj
dEdyb3VwTmFtZVtpZF07CiAgICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhY2ZiOGI2OWUyNjkwMWU3ZjExZWY0ODMz
MmNiMWE5NTE3ZTk3NDA4Li4xNDEzMmQ4ZjljMjI5YWI3NjM2OTJjMzAwZTNmM2I0MDY4OGQ2MTk1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBzdGFi
bGUgcmVtb3RlIG9iamVjdCBpZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTkwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3QgdGhhdCBzYW1lIG9iamVjdCB3aWxsIGhhdmUgc2FtZSBpZCBpZiBy
ZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4KKworICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9w
ZXJzaXN0ZW50LWlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXBy
b3RvY29sL3BlcnNpc3RlbnQtaWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nv
bnNvbGUvY29tbWFuZC1saW5lLWFwaS1leHBlY3RlZC50eHQ6CisKIDIwMTMtMDMtMDQgIEJyYW5k
b24gSm9uZXMgIDxiYWpvbmVzQGdvb2dsZS5jb20+CiAKICAgICAgICAgV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX2F0YyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL3BlcnNpc3RlbnQtaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL3BlcnNpc3RlbnQtaWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY0NWNmNTQwNGIzNGYwNmNkOTQyYTYzZGI4NTNhZDUzMDdkN2VjNjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcGVyc2lzdGVudC1pZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgZXZhbHVhdGluZyBzYW1lIG9iamVjdCB3
aWxsIHJlc3VsdCBpbiBzYW1lIHJlbW90ZSBvYmplY3QgaWQuQnVnIDEwOTkwOC4KKworIFNVQ0NF
U1M6IGV2YWx1YXRlZCB0byBhbiBvYmplY3Qgd2l0aCBzYW1lIGlkCitTVUNDRVNTOiBldmFsdWF0
ZWQgdG8gYW4gb2JqZWN0IHdpdGggaWQgZGlmZmVyZW50IGZyb20gcmVsZWFzZWQgb25lCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9wZXJzaXN0ZW50LWlkLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcGVyc2lzdGVudC1pZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM3YjAxNDE1NDIzODI2YTQ2YmRjYjY3YWY0NDNiMjFhZTdlNzA3MGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcGVyc2lzdGVudC1p
ZC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNv
dXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGFHbG9iYWxP
YmplY3QgPSB7fTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICBJbnNwZWN0b3JUZXN0LnNl
bmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwgeyAiZXhwcmVzc2lvbiI6ICJhR2xvYmFsT2Jq
ZWN0IiB9LCBkaWRFdmFsdWF0ZTEuYmluZCh0aGlzKSk7CisKKyAgICBmdW5jdGlvbiBkaWRFdmFs
dWF0ZTEobWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBvYmplY3RJZCA9IG1lc3Nh
Z2VPYmplY3QucmVzdWx0LnJlc3VsdC5vYmplY3RJZDsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5z
ZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHsgImV4cHJlc3Npb24iOiAiYUdsb2JhbE9i
amVjdCIgfSwgZGlkRXZhbHVhdGUyLmJpbmQodGhpcywgb2JqZWN0SWQpKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBkaWRFdmFsdWF0ZTIoZXhwZWN0ZWRPYmplY3RJZCwgbWVzc2FnZU9iamVjdCkK
KyAgICB7CisgICAgICAgIHZhciBvYmplY3RJZCA9IG1lc3NhZ2VPYmplY3QucmVzdWx0LnJlc3Vs
dC5vYmplY3RJZDsKKyAgICAgICAgaWYgKGV4cGVjdGVkT2JqZWN0SWQgPT09IG9iamVjdElkKQor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNVQ0NFU1M6IGV2YWx1YXRlZCB0byBhbiBv
YmplY3Qgd2l0aCBzYW1lIGlkIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkZBSUw6IG9iamVjdCBpZHMgYXJlIGRpZmZlcmVudCwgZXhwZWN0ZWQgIiAr
IGV4cGVjdGVkT2JqZWN0SWQgKyAiIGZvdW5kICIgKyBvYmplY3RJZCk7CisgICAgICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLnJlbGVhc2VPYmplY3QiLCB7ICJvYmpl
Y3RJZCI6IG9iamVjdElkIH0sIGRpZFJlbGVhc2VPYmplY3RJZC5iaW5kKHRoaXMsIG9iamVjdElk
KSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZGlkUmVsZWFzZU9iamVjdElkKHJlbGVhc2VkT2Jq
ZWN0SWQsIG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRD
b21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwgeyAiZXhwcmVzc2lvbiI6ICJhR2xvYmFsT2JqZWN0
IiB9LCBkaWRFdmFsdWF0ZTMuYmluZCh0aGlzLCByZWxlYXNlZE9iamVjdElkKSk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIGRpZEV2YWx1YXRlMyhyZWxlYXNlZE9iamVjdElkLCBtZXNzYWdlT2JqZWN0
KQorICAgIHsKKyAgICAgICAgdmFyIG9iamVjdElkID0gbWVzc2FnZU9iamVjdC5yZXN1bHQucmVz
dWx0Lm9iamVjdElkOworICAgICAgICBpZiAocmVsZWFzZWRPYmplY3RJZCA9PT0gb2JqZWN0SWQp
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiBvYmplY3QgaWQgaXMgdGhl
IHNhbWUgYXMgd2FzIHJlbGVhc2VkIik7CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiU1VDQ0VTUzogZXZhbHVhdGVkIHRvIGFuIG9iamVjdCB3aXRoIGlkIGRpZmZlcmVu
dCBmcm9tIHJlbGVhc2VkIG9uZSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KKworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD5UZXN0IHRoYXQgZXZhbHVhdGluZyBzYW1lIG9iamVjdCB3aWxsIHJlc3VsdCBp
biBzYW1lIHJlbW90ZSBvYmplY3QgaWQuPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTkwOCI+QnVnIDEwOTkwOC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUt
YXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQt
bGluZS1hcGktZXhwZWN0ZWQudHh0CmluZGV4IGIwZWM4NzlkMDQ2YTlkMzI2NjVmMDYxNzA4NDBl
OWM1MDFiYmJiMmQuLjA5NjRlNzY5OWZmZWIwMzA3MjU1ODVjY2UxZmZjMDNkMWVlYjZiODUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQt
bGluZS1hcGktZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDExODI6IFRoZSBjb25zb2xlIGZ1bmN0aW9uICQoKSBoYXMgY2hhbmdlZCBmcm9tICQ9Z2V0
RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3RvcihzZWxlY3RvcikuIFlvdSBtaWdodCB0
cnkgJCgiIyVzIikKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMTg0OiBUaGUgY29uc29sZSBmdW5j
dGlvbiAkKCkgaGFzIGNoYW5nZWQgZnJvbSAkPWdldEVsZW1lbnRCeUlkKGlkKSB0byAkPXF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWlnaHQgdHJ5ICQoIiMlcyIpCiBUZXN0cyB0aGF0IGNv
bW1hbmQgbGluZSBhcGkgd29ya3MuCiAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>