<?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>131341</bug_id>
          
          <creation_ts>2014-04-07 19:04:27 -0700</creation_ts>
          <short_desc>Web Replay: memoize plugin data for navigator.mimeTypes and navigator.plugins</short_desc>
          <delta_ts>2014-04-10 13:53:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998371</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-07 19:04:27 -0700</bug_when>
    <thetext>It should be pretty straightforward to make a new EncodedValue specialization for PluginData, then memoize inside PluginData where it calls out to the platform-specific implementation of getPluginInfo(). This should only happen once per page and when Page::refreshPlugins blows away cached info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998374</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-07 19:09:08 -0700</bug_when>
    <thetext>BTW: this API is being addressed now, because it is used by the google analytics urchin. So, basically every page hits it once, then makes a network request with a URL based on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999385</commentid>
    <comment_count>2</comment_count>
      <attachid>229012</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-09 18:57:56 -0700</bug_when>
    <thetext>Created attachment 229012
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999387</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-09 18:59:25 -0700</bug_when>
    <thetext>Attachment 229012 did not pass style-queue:


ERROR: Source/WebCore/replay/SerializationMethods.h:103:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:485:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999590</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-10 11:47:19 -0700</bug_when>
    <thetext>Before landing I&apos;m going to fix alphabetical sorting in SerializationMethods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999617</commentid>
    <comment_count>5</comment_count>
      <attachid>229070</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-10 12:24:51 -0700</bug_when>
    <thetext>Created attachment 229070
reordered encode/decode methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999618</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-10 12:27:30 -0700</bug_when>
    <thetext>Attachment 229070 did not pass style-queue:


ERROR: Source/WebCore/replay/SerializationMethods.h:103:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:456:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999638</commentid>
    <comment_count>7</comment_count>
      <attachid>229070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-10 13:53:03 -0700</bug_when>
    <thetext>Comment on attachment 229070
reordered encode/decode methods

Clearing flags on attachment: 229070

Committed r167085: &lt;http://trac.webkit.org/changeset/167085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999639</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-10 13:53:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229012</attachid>
            <date>2014-04-09 18:57:56 -0700</date>
            <delta_ts>2014-04-10 12:24:48 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-131341-20140409185735.patch</filename>
            <type>text/plain</type>
            <size>23213</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZjU2M2QwNTg3N2VlZDZhZWM4YjE4YjIwZWYwZjhlYzVkNzc5OTBmLi4wZDI3M2NjMjRlMzQ3MjEw
MjMwMjJjNGNhM2RlNDljOTcyYzJjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wNC0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIFJlcGxheTogbWVtb2l6ZSBwbHVnaW4gZGF0YSBmb3IgbmF2
aWdhdG9yLm1pbWVUeXBlcyBhbmQgbmF2aWdhdG9yLnBsdWdpbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTM0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBlbmNvZGluZy9k
ZWNvZGluZyB1bnNpZ25lZCBsb25nIHdpdGggRW5jb2RlZFZhbHVlLgorICAgICAgICBJdCBpcyBh
IGRpc3RpbmN0IHR5cGUgZnJvbSB1aW50MzJfdCBhbmQgdWludDY0X3QuCisKKyAgICAgICAgKiBy
ZXBsYXkvRW5jb2RlZFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpjb252
ZXJ0VG88dW5zaWduZWQgbG9uZz4pOgorICAgICAgICAqIHJlcGxheS9FbmNvZGVkVmFsdWUuaDoK
KwogMjAxNC0wNC0wOSAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlQGNpc2NvLmNvbT4KIAog
ICAgICAgICBHZXQgcmlkIG9mIEpJVE9wZXJhdGlvbldyYXBwZXJzLmggaGVhZGVyIGZpbGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzQ3YmEyYWVkZDFlMGZiZDA2ZDQxMmY0MjA0MmU4NmQzMWM0NmQ0Mi4uZDUy
NWNiYmJlNWZjNDdiNmRmZjM0YzNmMjY0M2U3YTRhN2UyMjZkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ2IEBACisyMDE0LTA0LTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9u
LmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5OiBtZW1vaXplIHBsdWdpbiBkYXRhIGZvciBuYXZp
Z2F0b3IubWltZVR5cGVzIGFuZCBuYXZpZ2F0b3IucGx1Z2lucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMzQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgcGx1Z2lucyBh
bmQgbWltZSB0eXBlcyBpcyBub25kZXRlcm1pbmlzdGljIGFuZCBjYW4gY2hhbmdlCisgICAgICAg
IGF0IGFueSB0aW1lLCB3aGV0aGVyIGJ5IHN5c3RlbSBldmVudHMsIGJyb3dzZXIgc2V0dGluZ3Mg
Y2hhbmdlcywgb3IKKyAgICAgICAgdHJpZ2dlcmVkIGJ5IHNjcmlwdC4gVG8gYXZvaWQgaW50ZXJw
b3Npbmcgb24gYWxsIHRob3NlIGNvZGUgcGF0aHMsIGp1c3QKKyAgICAgICAgbWVtb2l6ZSB0aGUg
cGx1Z2luIGRhdGEgdXNlZCBieSBET01QbHVnaW5BcnJheSBhbmQgRE9NTWltZVR5cGVBcnJheS4K
KworICAgICAgICBUaGlzIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gY29udHJvbGxpbmcgbXV0YXRp
b25zIHRvIHRoZSB1bmRlcmx5aW5nIFBsdWdpbkRhdGEKKyAgICAgICAgb2YgYSBQYWdlLCBidXQg
dGhhdCBjYW4gYmUgZG9uZSBsYXRlciBpZiBiZXR0ZXIgcGx1Z2luIHN1cHBvcnQgaXMgZGVzaXJl
ZC4KKyAgICAgICAgVGhlIHBvaW50IG9mIHRoaXMgY2hhbmdlIGlzIHRvIG1ha2UgYW5hbHl0aWNz
IHRyYWNrZXJzIGRldGVybWluaXN0aWMgYWNyb3NzCisgICAgICAgIGVuYWJsaW5nL2Rpc2FibGlu
ZyBvZiBwbHVnaW5zLgorCisgICAgICAgIFRlc3Q6IExheW91dFRlc3RzL2luc3BlY3Rvci93aW5k
b3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQuaG1sCisKKyAgICAgICAgKiBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGVBcnJheTo6
Z2V0UGx1Z2luRGF0YSk6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0YSk6IFNhdmUgb3IgcmVz
dG9yZSBtZW1vaXplZCBwbHVnaW4KKyAgICAgICAgZGF0YSBkdXJpbmcgY2FwdHVyZSBhbmQgcmVw
bGF5LCByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OlBsdWdpbkRhdGEpOiBBZGQgYSBjb25zdHJ1Y3Rv
ciB0aGF0IHVzZXMgdGhlCisgICAgICAgIHByb3ZpZGVkIHBsdWdpbiBkYXRhIHJhdGhlciB0aGFu
IGZldGNoaW5nIGxpdmUgcGx1Z2luIGRhdGEuIFRoaXMgaXMKKyAgICAgICAgbWFya2VkIHByb3Rl
Y3RlZCBzbyBpdCdzIG9ubHkgdXNlZCBieSBhIHN1YmNsYXNzIHNwZWNpZmljYWxseSBmb3IKKyAg
ICAgICAgZGVzZXJpYWxpemF0aW9uLgorCisgICAgICAgICogcmVwbGF5L1NlcmlhbGl6YXRpb25N
ZXRob2RzLmNwcDogQWRkIGVuY29kZXIgc3BlY2lhbGl6YXRpb25zLgorICAgICAgICAoSlNDOjpF
bmNvZGluZ1RyYWl0czxNaW1lQ2xhc3NJbmZvPjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlND
OjpFbmNvZGluZ1RyYWl0czxNaW1lQ2xhc3NJbmZvPjo6ZGVjb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZGVjb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGluZ1RyYWl0czxQbHVnaW5EYXRhPjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpEZXNlcmlhbGl6ZWRQbHVnaW5EYXRhOjpEZXNlcmlhbGl6ZWRQbHVnaW5EYXRhKTogQWRk
IGEgY3VzdG9tCisgICAgICAgIHN1YmNsYXNzIG9mIFBsdWdpbkRhdGEgdGhhdCBjYW4gYmUgaW5p
dGlhbGl6ZWQgZnJvbSBkZXNlcmlhbGl6ZWQgZGF0YS4KKyAgICAgICAgKEpTQzo6RW5jb2RpbmdU
cmFpdHM8UGx1Z2luRGF0YT46OmRlY29kZVZhbHVlKToKKyAgICAgICAgKiByZXBsYXkvU2VyaWFs
aXphdGlvbk1ldGhvZHMuaDoKKyAgICAgICAgKiByZXBsYXkvV2ViSW5wdXRzLmpzb246IEFkZCBu
ZXcgaW5wdXQgRmV0Y2hQbHVnaW5EYXRhLgorCiAyMDE0LTA0LTA5ICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTY3MDQ1CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKaW5kZXggNGM4MGJkMmU4NTM1YWU4MTA1
NGJjMzE4YzVmMmZhNTM2ZjAyOTE0OC4uMDE5MWQ0MTQ4ZWZiZjRkZmY5NjYzY2NkOTllNmFjNjE1
MjVjM2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVk
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVl
LmNwcApAQCAtMTU4LDYgKzE1OCwxNSBAQCB0ZW1wbGF0ZTw+IHVpbnQ2NF90IEVuY29kZWRWYWx1
ZTo6Y29udmVydFRvPHVpbnQ2NF90PigpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxh
dGU8PiB1bnNpZ25lZCBsb25nIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVuc2lnbmVkIGxvbmc+
KCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJlc3VsdDsKKyAgICBib29sIGNhc3RTdWNjZWVkZWQg
PSBtX3ZhbHVlLT5hc051bWJlcigmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNj
ZWVkZWQsIGNhc3RTdWNjZWVkZWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdGVtcGxh
dGU8PiBTdHJpbmcgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88U3RyaW5nPigpCiB7CiAgICAgU3Ry
aW5nIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5j
b2RlZFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5o
CmluZGV4IGZjNzRmMTM1M2UyMDY3MGZhZTg4MDJjZDY0MDBjZmQ2ZWM3NDM2MGYuLmYxNDc3YWE1
MzVhZWZiMzA5MmJjMDVmYjM1NDI4NmMxZmFmZmZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuaApAQCAtOTIsMTMgKzkyLDEzIEBAIHRlbXBsYXRlPD4g
SlNfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxpbnQzMl90
PigpOwogdGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSBpbnQ2NF90IEVuY29kZWRWYWx1ZTo6
Y29udmVydFRvPGludDY0X3Q+KCk7CiB0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIHVpbnQz
Ml90IEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPHVpbnQzMl90PigpOwogdGVtcGxhdGU8PiBKU19F
WFBPUlRfUFJJVkFURSB1aW50NjRfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzx1aW50NjRfdD4o
KTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbG9uZyBFbmNvZGVkVmFs
dWU6OmNvbnZlcnRUbzx1bnNpZ25lZCBsb25nPigpOwogdGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88U3RyaW5nPigpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogc3RydWN0IEVuY29kaW5nVHJhaXRzIHsKICAgICB0eXBlZGVmIFQgRGVj
b2RlZFR5cGU7CiAKLSAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKERlY29kZWRU
eXBlKTsKICAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0IERlY29kZWRU
eXBlJik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBEZWNv
ZGVkVHlwZSYpOwpAQCAtMTU2LDYgKzE1Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5n
VHJhaXRzPGludDMyX3Q+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJhaXRzPGludDMyX3Q+CiB0
ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxpbnQ2NF90PiA6IHB1YmxpYyBTY2FsYXJF
bmNvZGluZ1RyYWl0czxpbnQ2NF90PiB7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1Ry
YWl0czx1aW50MzJfdD4gOiBwdWJsaWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8dWludDMyX3Q+IHsg
fTsKIHRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPHVpbnQ2NF90PiA6IHB1YmxpYyBT
Y2FsYXJFbmNvZGluZ1RyYWl0czx1aW50NjRfdD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8
dW5zaWduZWQgbG9uZz4geyB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxT
dHJpbmc+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRp
YyBFbmNvZGVkVmFsdWUgZW5jb2RlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCmluZGV4IGQ2NDM4MjU2Njc5OGI2
Yjg1ZTM0NDRkODFmYmJkODc1Y2M2MDE4NjIuLjdkMjEyMGRmZjlhY2FiN2EwZWQ0ZGM3NmJlMzEw
ZjE3NTNjZGQzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5
cGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5
LmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlJlcGxheUlucHV0cy5oIgorI2luY2x1
ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRE9NTWltZVR5cGVBcnJheTo6RE9NTWltZVR5cGVBcnJheShGcmFtZSogZnJhbWUpCkBAIC04
NSwxMSArOTEsMjggQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHkKIFBsdWdpbkRhdGEqIERPTU1p
bWVUeXBlQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiAmcGFnZS0+cGx1Z2luRGF0YSgpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSAmcGFnZS0+cGx1Z2luRGF0YSgpOwor
CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpKQor
ICAgICAgICByZXR1cm4gcGx1Z2luRGF0YTsKKworICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEN1cnNvcigpOworICAgIGlmIChjdXJzb3IuaXNDYXB0
dXJpbmcoKSkKKyAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEZldGNoUGx1Z2luRGF0YT4ocGx1
Z2luRGF0YSk7CisgICAgZWxzZSBpZiAoY3Vyc29yLmlzUmVwbGF5aW5nKCkpIHsKKyAgICAgICAg
aWYgKEZldGNoUGx1Z2luRGF0YSogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxGZXRjaFBsdWdp
bkRhdGE+KCkpCisgICAgICAgICAgICBwbHVnaW5EYXRhID0gaW5wdXQtPnBsdWdpbkRhdGEoKS5n
ZXQoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBwbHVnaW5EYXRhOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RP
TVBsdWdpbkFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXku
Y3BwCmluZGV4IGNjYTk0YjI4MWYzNjlhYjI0YzAzYzllMzNmMGM2ODcwN2YwOGQzMGIuLmQzYTYz
Nzc2YmVlZWJkM2E5ODQzZjlmOWJmNWYyZDRiYmEzN2YxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgIlBs
dWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAorI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViUmVw
bGF5SW5wdXRzLmgiCisjaW5jbHVkZSA8cmVwbGF5L0lucHV0Q3Vyc29yLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01QbHVnaW5BcnJheTo6RE9NUGx1Z2luQXJyYXkoRnJh
bWUqIGZyYW1lKQpAQCAtOTAsMTEgKzk2LDI4IEBAIHZvaWQgRE9NUGx1Z2luQXJyYXk6OnJlZnJl
c2goYm9vbCByZWxvYWQpCiBQbHVnaW5EYXRhKiBET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0YSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAg
IGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuICZwYWdlLT5wbHVnaW5E
YXRhKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUGx1Z2luRGF0YSogcGx1Z2lu
RGF0YSA9ICZwYWdlLT5wbHVnaW5EYXRhKCk7CisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAg
ICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBwbHVnaW5EYXRhOwor
CisgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmlucHV0Q3Vy
c29yKCk7CisgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKQorICAgICAgICBjdXJzb3IuYXBw
ZW5kSW5wdXQ8RmV0Y2hQbHVnaW5EYXRhPihwbHVnaW5EYXRhKTsKKyAgICBlbHNlIGlmIChjdXJz
b3IuaXNSZXBsYXlpbmcoKSkgeworICAgICAgICBpZiAoRmV0Y2hQbHVnaW5EYXRhKiBpbnB1dCA9
IGN1cnNvci5mZXRjaElucHV0PEZldGNoUGx1Z2luRGF0YT4oKSkKKyAgICAgICAgICAgIHBsdWdp
bkRhdGEgPSBpbnB1dC0+cGx1Z2luRGF0YSgpLmdldCgpOworICAgIH0KKyNlbmRpZgorCisgICAg
cmV0dXJuIHBsdWdpbkRhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggZmVjN2FjZTc0NjRiMWRiNWE5MmNiODZkMzVlODMw
MGEzZjYyYzE1My4uNWFkZTQxNmYxMTRkYTVkMzZjM2MzMTE0NzdhOGVjZDU4ZWJhMTQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTczLDYgKzczLDE2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0UGx1Z2lucyhjb25zdCBQYWdlKik7CiAgICAgY29uc3QgUGx1Z2luSW5m
byogcGx1Z2luSW5mb0Zvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0Owog
Citwcm90ZWN0ZWQ6CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgUGx1Z2luRGF0YShWZWN0
b3I8UGx1Z2luSW5mbz4gcGx1Z2lucywgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzLCBWZWN0
b3I8c2l6ZV90PiBpbmRpY2VzKQorICAgICAgICA6IG1fcGx1Z2lucyhwbHVnaW5zKQorICAgICAg
ICAsIG1fbWltZXMobWltZXMpCisgICAgICAgICwgbV9taW1lUGx1Z2luSW5kaWNlcyhpbmRpY2Vz
KQorICAgIHsKKyAgICB9CisjZW5kaWYKKwogICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdp
bnM7CiAgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1fbWltZXM7CiAgICAgVmVjdG9yPHNpemVf
dD4gbV9taW1lUGx1Z2luSW5kaWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFs
aXphdGlvbk1ldGhvZHMuY3BwCmluZGV4IDE3OWI0MTJiNjliYzk5N2M3ZjFlMDM4MmQxMzQyZWVi
YTU0ZmJiMjAuLjljMGI2YzY4NjNkOTVhMTYzZDZlYTEzYzM3YjU4MzI2Y2EzOWVlOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgor
I2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJSZXBsYXlJbnB1dFR5cGVzLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQ2LDEyICs0
NywxNSBAQAogCiB1c2luZyBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ7CiB1c2luZyBXZWJDb3Jl
OjpJbnRQb2ludDsKK3VzaW5nIFdlYkNvcmU6Ok1pbWVDbGFzc0luZm87CiB1c2luZyBXZWJDb3Jl
OjpNb3VzZUJ1dHRvbjsKIHVzaW5nIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ7CiB1c2luZyBXZWJD
b3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ7CiB1c2luZyBXZWJDb3Jl
OjpQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eTsKK3VzaW5nIFdlYkNvcmU6OlBsdWdpbkRh
dGE7Cit1c2luZyBXZWJDb3JlOjpQbHVnaW5JbmZvOwogdXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW47CiB1c2luZyBXZWJDb3JlOjpVUkw7CiB1c2luZyBXZWJDb3JlOjppbnB1dFR5cGVzOwpA
QCAtNDI0LDYgKzQyOCw5MCBAQCBib29sIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVu
dD46OmRlY29kZVZhbHVlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZERhdGEsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3RlbXBsYXRlPD4KK0VuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxNaW1lQ2xh
c3NJbmZvPjo6ZW5jb2RlVmFsdWUoY29uc3QgTWltZUNsYXNzSW5mbyYgaW5wdXQpCit7CisgICAg
RW5jb2RlZFZhbHVlIGVuY29kZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsK
KworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBTdHJpbmcsIHR5cGUsIGlu
cHV0LnR5cGUpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBTdHJpbmcs
IGRlc2MsIGlucHV0LmRlc2MpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRh
LCBWZWN0b3I8U3RyaW5nPiwgZXh0ZW5zaW9ucywgaW5wdXQuZXh0ZW5zaW9ucyk7CisKKyAgICBy
ZXR1cm4gZW5jb2RlZERhdGE7Cit9CisKK3RlbXBsYXRlPD4KK2Jvb2wgRW5jb2RpbmdUcmFpdHM8
TWltZUNsYXNzSW5mbz46OmRlY29kZVZhbHVlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZERhdGEsIE1p
bWVDbGFzc0luZm8mIGlucHV0KQoreworICAgIE1pbWVDbGFzc0luZm8gaW5mbzsKKworICAgIERF
Q09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgU3RyaW5nLCB0eXBlLCBp
bmZvLnR5cGUpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0
YSwgU3RyaW5nLCBkZXNjLCBpbmZvLmRlc2MpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RP
X0xWQUxVRShlbmNvZGVkRGF0YSwgVmVjdG9yPFN0cmluZz4sIGV4dGVuc2lvbnMsIGluZm8uZXh0
ZW5zaW9ucyk7CisKKyAgICBpbnB1dCA9IGluZm87CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPD4KK0VuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZW5jb2Rl
VmFsdWUoY29uc3QgUGx1Z2luSW5mbyYgaW5wdXQpCit7CisgICAgRW5jb2RlZFZhbHVlIGVuY29k
ZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKKworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBTdHJpbmcsIG5hbWUsIGlucHV0Lm5hbWUpOworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBTdHJpbmcsIGZpbGUsIGlucHV0LmZpbGUp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBTdHJpbmcsIGRlc2MsIGlu
cHV0LmRlc2MpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBWZWN0b3I8
TWltZUNsYXNzSW5mbz4sIG1pbWVzLCBpbnB1dC5taW1lcyk7CisgICAgRU5DT0RFX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGlzQXBwbGljYXRpb25QbHVnaW4sIGlucHV0LmlzQXBw
bGljYXRpb25QbHVnaW4pOworCisgICAgcmV0dXJuIGVuY29kZWREYXRhOworfQorCit0ZW1wbGF0
ZTw+Citib29sIEVuY29kaW5nVHJhaXRzPFBsdWdpbkluZm8+OjpkZWNvZGVWYWx1ZShFbmNvZGVk
VmFsdWUmIGVuY29kZWREYXRhLCBQbHVnaW5JbmZvJiBpbnB1dCkKK3sKKyAgICBQbHVnaW5JbmZv
IGluZm87CisKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEs
IFN0cmluZywgbmFtZSwgaW5mby5uYW1lKTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19M
VkFMVUUoZW5jb2RlZERhdGEsIFN0cmluZywgZmlsZSwgaW5mby5maWxlKTsKKyAgICBERUNPREVf
VFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIFN0cmluZywgZGVzYywgaW5mby5k
ZXNjKTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIFZl
Y3RvcjxNaW1lQ2xhc3NJbmZvPiwgbWltZXMsIGluZm8ubWltZXMpOworICAgIERFQ09ERV9UWVBF
X1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgYm9vbCwgaXNBcHBsaWNhdGlvblBsdWdp
biwgaW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luKTsKKworICAgIGlucHV0ID0gaW5mbzsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPFBsdWdpbkRhdGE+
OjplbmNvZGVWYWx1ZShSZWZQdHI8UGx1Z2luRGF0YT4gaW5wdXQpCit7CisgICAgRW5jb2RlZFZh
bHVlIGVuY29kZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKKworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBWZWN0b3I8UGx1Z2luSW5mbz4sIHBsdWdp
bnMsIGlucHV0LT5wbHVnaW5zKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRE
YXRhLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4sIG1pbWVzLCBpbnB1dC0+bWltZXMoKSk7CisgICAg
RU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxzaXplX3Q+LCBtaW1lUGx1
Z2luSW5kaWNlcywgaW5wdXQtPm1pbWVQbHVnaW5JbmRpY2VzKCkpOworCisgICAgcmV0dXJuIGVu
Y29kZWREYXRhOworfQorCitjbGFzcyBEZXNlcmlhbGl6ZWRQbHVnaW5EYXRhIDogcHVibGljIFBs
dWdpbkRhdGEgeworcHVibGljOgorICAgIERlc2VyaWFsaXplZFBsdWdpbkRhdGEoVmVjdG9yPFBs
dWdpbkluZm8+IHBsdWdpbnMsIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lcywgVmVjdG9yPHNp
emVfdD4gaW5kaWNlcykKKyAgICAgICAgOiBQbHVnaW5EYXRhKHBsdWdpbnMsIG1pbWVzLCBpbmRp
Y2VzKQorICAgIHsKKyAgICB9Cit9OworCitib29sIEVuY29kaW5nVHJhaXRzPFBsdWdpbkRhdGE+
OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWREYXRhLCBSZWZQdHI8UGx1Z2luRGF0
YT4mIGlucHV0KQoreworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0
YSwgVmVjdG9yPFBsdWdpbkluZm8+LCBwbHVnaW5zKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiwgbWltZXMpOworICAg
IERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgVmVjdG9yPHNpemVfdD4s
IG1pbWVQbHVnaW5JbmRpY2VzKTsKKworICAgIGlucHV0ID0gYWRvcHRSZWYobmV3IERlc2VyaWFs
aXplZFBsdWdpbkRhdGEocGx1Z2lucywgbWltZXMsIG1pbWVQbHVnaW5JbmRpY2VzKSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPFNlY3VyaXR5
T3JpZ2luPjo6ZW5jb2RlVmFsdWUoUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBpbnB1dCkKIHsKICAg
ICByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmcoaW5wdXQtPnRvU3RyaW5nKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaAppbmRleCBmNzVl
ZDgyNjRkZTAxNjEwMDdlMTY2NDE0ZWRkNjQzZDhhZjYwN2FkLi4wMjQyMDhiYjcwNTgyMzMwNTUx
MGM2YjY4Njk2NzE1MDNiMTVmZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkv
U2VyaWFsaXphdGlvbk1ldGhvZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFs
aXphdGlvbk1ldGhvZHMuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xhc3MgUGxh
dGZvcm1XaGVlbEV2ZW50OworY2xhc3MgUGx1Z2luRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgVVJMOwogCkBAIC05Niw2ICs5NywxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNv
ZGluZ1RyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ+IHsKICAgICBzdGF0aWMgYm9v
bCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxh
dGZvcm1XaGVlbEV2ZW50PiYgdmFsdWUpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2Rp
bmdUcmFpdHM8V2ViQ29yZTo6UGx1Z2luRGF0YT4geworICAgIHR5cGVkZWYgUmVmUHRyPFdlYkNv
cmU6OlBsdWdpbkRhdGE+IERlY29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBl
bmNvZGVWYWx1ZShSZWZQdHI8V2ViQ29yZTo6UGx1Z2luRGF0YT4gdmFsdWUpOworICAgIHN0YXRp
YyBib29sIGRlY29kZVZhbHVlKEVuY29kZWRWYWx1ZSYsIFJlZlB0cjxXZWJDb3JlOjpQbHVnaW5E
YXRhPiYgdmFsdWUpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2Vi
Q29yZTo6VVJMPiB7CiAgICAgdHlwZWRlZiBXZWJDb3JlOjpVUkwgRGVjb2RlZFR5cGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbgppbmRleCAzZTZhZWZiMTBmOGVmZDI5MzBmZGMz
MmM4ZTU2MDAyNDg1ZGYwOTJjLi41NDI2MGM2NzMyYjBkYzZkMzA3MjE5OTNmY2Y4MDliMTJjMWJk
MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uCkBAIC04OCw2ICs4OCwxMCBA
QAogICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
LmgiCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogIlBsdWdpbkRhdGEiLCAibW9kZSI6ICJTSEFSRUQiLAorICAgICAgICAgICAgICAgICJoZWFk
ZXIiOiAicGx1Z2lucy9QbHVnaW5EYXRhLmgiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJuYW1lIjogIlNjcm9sbERpcmVjdGlvbiIsICJtb2RlIjogIlND
QUxBUiIsICJzdG9yYWdlIjogInVpbnQ2NF90IiwKICAgICAgICAgICAgICAgICAiZmxhZ3MiOiBb
IkVOVU0iXSwKICAgICAgICAgICAgICAgICAidmFsdWVzIjogWyJTY3JvbGxVcCIsICJTY3JvbGxE
b3duIiwgIlNjcm9sbExlZnQiLCAiU2Nyb2xsUmlnaHQiXSwKQEAgLTIxOSw2ICsyMjMsMTQgQEAK
ICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAiRmV0Y2hQbHVnaW5EYXRhIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQbHVnaW4g
ZGF0YSB3YXMgcmVxdWVzdGVkIHRocm91Z2ggRE9NUGx1Z2luQXJyYXkgb3IgRE9NTWltZVR5cGVB
cnJheS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBsdWdpbkRhdGEi
LCAidHlwZSI6ICJQbHVnaW5EYXRhIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKICAgICAgICAgICAgICJuYW1lIjogIkxvZ2ljYWxTY3JvbGxQYWdlIiwKICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgc2lnbmFsbGVkIGEgbG9naWNhbCBzY3Jv
bGwgZXZlbnQuIiwKICAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
MzMzOWUyNDhlMWMwYzUxNjllZjc5MGZjMTA1Yjk5ODU4NTU1NTBjLi5kOTVkYTJiMzIxMDUyOWMy
M2Y2MTE4MjY1ZjdiMTcyNGViYjc2YmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDQt
MDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdl
YiBSZXBsYXk6IG1lbW9pemUgcGx1Z2luIGRhdGEgZm9yIG5hdmlnYXRvci5taW1lVHlwZXMgYW5k
IG5hdmlnYXRvci5wbHVnaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzEzNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGlmZmVyZW50IHNldHVwIG1ldGhvZHMgYmVmb3Jl
IHRoZSBpbml0aWFsIG5hdmlnYXRpb24gb2YKKyAgICAgICAgY2FwdHVyZSBhbmQgcmVwbGF5LiBU
aGlzIGlzIG5lY2Vzc2FyeSB0byB0ZXN0IHRoYXQgdGhlIHZhbHVlIG9mCisgICAgICAgIG5hdmln
YXRvci5wbHVnaW5zIGlzIHRoZSBzYW1lIG9uIHJlcGxheSBldmVuIGlmIHRoZSB1bmRlcmx5aW5n
IGRhdGEgY2hhbmdlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9y
ZXBsYXktdGVzdC5qczoKKyAgICAgICAgKEluc3BlY3RvclRlc3RQcm94eS5ydW5TaW5nbGVTZWdt
ZW50UmVmVGVzdCk6IEFkZCBjYWxscyB0byBvcHRpb25hbCBzZXR1cAorICAgICAgICBmdW5jdGlv
bnMgaW4gdGhlIHRlc3QgcGFnZSBjYWxsZWQgc2V0dXBQcmVDYXB0dXJlIGFuZCBzZXR1cFByZVJl
cGxheS4KKwogMjAxNC0wNC0wOSAgSmFtZXMgQ3JhaWcgIDxqY3JhaWdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYOiBCdWcgaW4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBUZXh0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5LXRl
c3QuanMKaW5kZXggOTVjZGZjM2RlOWI0YWUwMjQ4OTMzYzcwYjUxNDgyYzA3MTBkYmRkMy4uNDYx
ZjhhYzk0NGI2OGMwZmFmMzE1NzBiZjExZWM0OWMyNjUwYzAxMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcwpAQCAt
MTcsNiArMTcsOSBAQCBJbnNwZWN0b3JUZXN0LlJlcGxheS5ydW5TaW5nbGVTZWdtZW50UmVmVGVz
dCA9IGZ1bmN0aW9uKHN0YXRlQ29tcGFyYXRvcikKICAgICB9KQogICAgIC50aGVuKGZ1bmN0aW9u
KCkgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVGVzdCBwYWdlIGluaXRpYWwgbG9hZCBk
b25lLiIpOworICAgICAgICByZXR1cm4gUnVudGltZUFnZW50LmV2YWx1YXRlLnByb21pc2UoImlm
ICh0eXBlb2YgXCJzZXR1cFByZUNhcHR1cmVcIiA9PT0gXCJmdW5jdGlvblwiKSBzZXR1cFByZUNh
cHR1cmUoKSIpOworICAgIH0pCisgICAgLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShmdW5jdGlvbiBzdGFydENhcHR1cmluZyhyZXNvbHZlLCByZWplY3QpIHsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJXYWl0aW5nIGZvciBjYXB0dXJpbmcgdG8g
c3RhcnQuLi4iKTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0
Q2FwdHVyaW5nKCk7CkBAIC00Miw2ICs0NSw5IEBAIEluc3BlY3RvclRlc3QuUmVwbGF5LnJ1blNp
bmdsZVNlZ21lbnRSZWZUZXN0ID0gZnVuY3Rpb24oc3RhdGVDb21wYXJhdG9yKQogICAgICAgICB9
KTsKICAgICB9KQogICAgIC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gUnVudGlt
ZUFnZW50LmV2YWx1YXRlLnByb21pc2UoImlmICh0eXBlb2YgXCJzZXR1cFByZUNhcHR1cmVcIiA9
PT0gXCJmdW5jdGlvblwiKSBzZXR1cFByZVJlcGxheSgpIik7CisgICAgfSkKKyAgICAudGhlbihm
dW5jdGlvbigpIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhcHR1cmUgc3RvcHBlZCwg
bm93IHN0YXJ0aW5nIHJlcGxheSB0byBjb21wbGV0aW9uLi4uIikKICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uIHN0YXJ0UGxheWJhY2socmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5yZXBsYXlUb0NvbXBsZXRpb24oKTsK
QEAgLTc2LDQgKzgyLDQgQEAgSW5zcGVjdG9yVGVzdC5SZXBsYXkucnVuU2luZ2xlU2VnbWVudFJl
ZlRlc3QgPSBmdW5jdGlvbihzdGF0ZUNvbXBhcmF0b3IpCiAgICAgfSk7CiB9OwogCi19KTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVn
aW5zLW1lbW9pemVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTgyMmNlNTBmZGY1N2I2YmM4
YWIwYWQ1YzVjOGE4NjdkMDdhMjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3JlcGxheS93aW5kb3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgd2UgY2FuIGNhcHR1cmUgYW5kIHJlcGxh
eSBub25kZXRlcm1pbmlzbSBpbiB3aW5kb3cubmF2aWdhdG9yLnBsdWdpbnMgYW5kIHdpbmRvdy5u
YXZpZ2F0b3IubWltZVR5cGVzLgorCisgV2FpdGluZyBmb3IgdGVzdCBwYWdlIHRvIGZpbmlzaCBp
dHMgaW5pdGlhbCBsb2FkLi4uCitUZXN0IHBhZ2UgaW5pdGlhbCBsb2FkIGRvbmUuCitXYWl0aW5n
IGZvciBjYXB0dXJpbmcgdG8gc3RhcnQuLi4KK0NhcHR1cmluZyBoYXMgc3RhcnRlZC4KK1dhaXRp
bmcgdG8gY2FwdHVyZSBpbml0aWFsIG5hdmlnYXRpb24uLi4KK0luaXRpYWwgbmF2aWdhdGlvbiBj
YXB0dXJlZC4gRHVtcGluZyBzdGF0ZS4uLi4KK0NhcHR1cmUgc3RvcHBlZCwgbm93IHN0YXJ0aW5n
IHJlcGxheSB0byBjb21wbGV0aW9uLi4uCitQbGF5YmFjayBoYXMgc3RhcnRlZC4KK1dhaXRpbmcg
dG8gcmVwbGF5IGluaXRpYWwgbmF2aWdhdGlvbi4uLgorSW5pdGlhbCBuYXZpZ2F0aW9uIHJlcGxh
eWVkLiBEdW1waW5nIHN0YXRlLi4uCitQQVNTOiBOb25kZXRlcm1pbmlzdGljIHN0YXRlIHNob3Vs
ZCBub3QgZGlmZmVyIGR1cmluZyBjYXB0dXJlIGFuZCByZXBsYXkuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9p
emVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3It
cGx1Z2lucy1tZW1vaXplZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMDUyMGFlMWU2OGVmYzFmYmU5NWFk
NWU3ZDg3NGQxMWUxN2I0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC5odG1sCkBAIC0wLDAg
KzEsMTA0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVwbGF5L3JlcGxheS10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBzaGFsbG93Q29weShvYmplY3QsIHByb3BlcnRpZXMpIHsKKyAgICB2YXIgY29waWVk
T2JqZWN0ID0ge307CisgICAgZm9yICh2YXIgcHJvcCBvZiBwcm9wZXJ0aWVzKQorICAgICAgICBj
b3BpZWRPYmplY3RbcHJvcF0gPSBvYmplY3RbcHJvcF07CisKKyAgICByZXR1cm4gY29waWVkT2Jq
ZWN0OworfQorCitmdW5jdGlvbiBzaGFsbG93SW5kZXhPZihjYW5kaWRhdGVzLCBvYmplY3RUb0Zp
bmQsIHByb3BlcnRpZXMpIHsKKyAgICBpZiAoIW9iamVjdFRvRmluZCAgICB8fCAhY2FuZGlkYXRl
cy5sZW5ndGgpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2FuZGlkYXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgb2JqZWN0Q2FuZGlkYXRlID0g
Y2FuZGlkYXRlc1tpXTsKKyAgICAgICAgdmFyIHByb3BJc0VxdWFsID0gZnVuY3Rpb24ocHJvcCkg
eworICAgICAgICAgICAgcmV0dXJuIG9iamVjdENhbmRpZGF0ZVtwcm9wXSA9PT0gb2JqZWN0VG9G
aW5kW3Byb3BdOworICAgICAgICB9OworCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmV2ZXJ5KHBy
b3BJc0VxdWFsKSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHJldHVybiAt
MTsKK30KKworZnVuY3Rpb24gZHVtcE5vbmRldGVybWluaXN0aWNTdGF0ZSgpCit7CisgICAgdmFy
IG1pbWVLZXlzID0gWyJ0eXBlIiwgInN1ZmZpeGVzIiwgImRlc2NyaXB0aW9uIl07CisgICAgdmFy
IHBsdWdpbktleXMgPSBbIm5hbWUiLCAiZmlsZW5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGVuZ3Ro
Il07CisKKyAgICB2YXIgbWltZVR5cGVzID0gW107CisgICAgdmFyIHBsdWdpbnMgPSBbXTsKKwor
ICAgIHZhciBwbHVnaW5BcnJheSA9IHdpbmRvdy5uYXZpZ2F0b3IucGx1Z2luczsKKyAgICB2YXIg
bWltZXNBcnJheSA9IHdpbmRvdy5uYXZpZ2F0b3IubWltZVR5cGVzOworCisgICAgLy8gRmlyc3Qg
Z2F0aGVyIGFsbCBvZiB0aGUgaW5zdGFuY2VzIGludG8gYW4gYXJyYXkuCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwbHVnaW5BcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgcGx1Z2lucy5wdXNo
KHBsdWdpbkFycmF5Lml0ZW0oaSkpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW1lc0Fy
cmF5Lmxlbmd0aDsgKytpKQorICAgICAgICBtaW1lVHlwZXMucHVzaChtaW1lc0FycmF5Lml0ZW0o
aSkpOworCisgICAgZnVuY3Rpb24gc2VyaWFsaXplUGx1Z2luKG9iamVjdCkgeworICAgICAgICBj
b25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiB3aW5kb3cuUGx1Z2luKTsKKworICAgICAg
ICAvLyBDb3B5IHNoYWxsb3cgcHJvcGVydGllcyBhbmQgZmluZCBpbmRpY2VzIGZvciBjcm9zcy1y
ZWZlcmVuY2VzLgorICAgICAgICB2YXIgZGF0YSA9IHNoYWxsb3dDb3B5KG9iamVjdCwgcGx1Z2lu
S2V5cyk7CisgICAgICAgIHZhciBtaW1lSW5kaWNlcyA9IFtdOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG1pbWVJbmRpY2VzLnB1
c2goc2hhbGxvd0luZGV4T2YobWltZVR5cGVzLCBvYmplY3QuaXRlbShpKSwgbWltZUtleXMpKTsK
KworICAgICAgICBkYXRhLm1pbWVJbmRpY2VzID0gbWltZUluZGljZXM7CisgICAgICAgIHJldHVy
biBkYXRhOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZU1pbWVUeXBlKG9iamVjdCkg
eworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiB3aW5kb3cuTWltZVR5
cGUpOworCisgICAgICAgIC8vIENvcHkgc2hhbGxvdyBwcm9wZXJ0aWVzIGFuZCBmaW5kIGluZGlj
ZXMgZm9yIGNyb3NzLXJlZmVyZW5jZXMuCisgICAgICAgIHZhciBkYXRhID0gc2hhbGxvd0NvcHko
b2JqZWN0LCBtaW1lS2V5cyk7CisgICAgICAgIGRhdGEucGx1Z2luSW5kZXggPSBzaGFsbG93SW5k
ZXhPZihwbHVnaW5zLCBvYmplY3QuZW5hYmxlZFBsdWdpbiwgcGx1Z2luS2V5cyk7CisgICAgICAg
IHJldHVybiBkYXRhOworICAgIH0KKworICAgIHJldHVybiB7CisgICAgICAgICJwbHVnaW5zIjog
cGx1Z2lucy5tYXAoc2VyaWFsaXplUGx1Z2luKSwKKyAgICAgICAgIm1pbWVUeXBlcyI6IG1pbWVU
eXBlcy5tYXAoc2VyaWFsaXplTWltZVR5cGUpCisgICAgfTsKK30KKworLy8gVGhlc2UgZnVuY3Rp
b25zIGFyZSBjYWxsZWQgaW4gdGhlIHByZXZpb3VzIG1haW4gZnJhbWUgcHJpb3IgdG8gdGhlIGlu
aXRpYWwKKy8vIG5hdmlnYXRpb24gdGhhdCBiZWdpbnMgY2FwdHVyaW5nIG9yIHJlcGxheWluZy4g
Q2FyZWZ1bCwgaGVhcCBzdGF0ZSB3aWxsIGJlIGxvc3QuCitmdW5jdGlvbiBzZXR1cFByZUNhcHR1
cmUoKSB7CisgICAgSW5zcGVjdG9yVGVzdFByb3h5LmFkZFJlc3VsdCgiRW5hYmxpbmcgcGx1Z2lu
cyBiZWZvcmUgY2FwdHVyZS4iKTsKKyAgICB0ZXN0UnVubmVyLnNldFBsdWdpbnNFbmFibGVkKGZh
bHNlKTsKK30KKworZnVuY3Rpb24gc2V0dXBQcmVSZXBsYXkoKSB7CisgICAgSW5zcGVjdG9yVGVz
dFByb3h5LmFkZFJlc3VsdCgiRGlzYWJsaW5nIHBsdWdpbnMgYmVmb3JlIHJlcGxheS4iKTsKKyAg
ICB0ZXN0UnVubmVyLnNldFBsdWdpbnNFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBmdW5jdGlvbiBzdGF0ZXNBcmVFcXVhbChhLCBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEgPT09IGI7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5SZXBsYXkucnVuU2lu
Z2xlU2VnbWVudFJlZlRlc3Qoc3RhdGVzQXJlRXF1YWwpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIHRoYXQgd2UgY2FuIGNhcHR1
cmUgYW5kIHJlcGxheSBub25kZXRlcm1pbmlzbSBpbiA8dHQ+d2luZG93Lm5hdmlnYXRvci5wbHVn
aW5zPHR0PiBhbmQgPHR0PndpbmRvdy5uYXZpZ2F0b3IubWltZVR5cGVzPC90dD4uPC9wPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229070</attachid>
            <date>2014-04-10 12:24:51 -0700</date>
            <delta_ts>2014-04-10 13:53:02 -0700</delta_ts>
            <desc>reordered encode/decode methods</desc>
            <filename>bug-131341-20140410122427.patch</filename>
            <type>text/plain</type>
            <size>23511</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZTczOGQ5NDVkMDM0MWUwNDZiNzc4NTdiYzRmNWM4MDE5NzkwN2QxLi4yOTg3NDlkNjk3NmZiNTQ5
Y2E0ZjZlNjk5ZDUzMzNiNmYxNGM5OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wNC0xMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIFJlcGxheTogbWVtb2l6ZSBwbHVnaW4gZGF0YSBmb3IgbmF2
aWdhdG9yLm1pbWVUeXBlcyBhbmQgbmF2aWdhdG9yLnBsdWdpbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTM0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZW5jb2Rpbmcv
ZGVjb2RpbmcgdW5zaWduZWQgbG9uZyB3aXRoIEVuY29kZWRWYWx1ZS4KKyAgICAgICAgSXQgaXMg
YSBkaXN0aW5jdCB0eXBlIGZyb20gdWludDMyX3QgYW5kIHVpbnQ2NF90LgorCisgICAgICAgICog
cmVwbGF5L0VuY29kZWRWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Y29u
dmVydFRvPHVuc2lnbmVkIGxvbmc+KToKKyAgICAgICAgKiByZXBsYXkvRW5jb2RlZFZhbHVlLmg6
CisKIDIwMTQtMDQtMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IExMSU5UIGxvYWRpc0Zyb21JbnN0cnVjdGlvbiBzaG91bGQgaGFuZGxlIHRoZSBiaWcgZW5kaWFu
IGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzNGQ3MGUxNTkyMjU0YTE2YmExYzQwMmZkMzNhZjQ5ZDJk
YjViMy4uYjkxNWI3MzY5NDMwNGI1YzZhNjhhMGNiNDliNTc5NGNkMDUzODFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTA0LTEwICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53
YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5OiBtZW1vaXplIHBsdWdpbiBkYXRh
IGZvciBuYXZpZ2F0b3IubWltZVR5cGVzIGFuZCBuYXZpZ2F0b3IucGx1Z2lucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMzQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIEluZm9ybWF0aW9uIGFib3V0
IHBsdWdpbnMgYW5kIG1pbWUgdHlwZXMgaXMgbm9uZGV0ZXJtaW5pc3RpYyBhbmQgY2FuIGNoYW5n
ZQorICAgICAgICBhdCBhbnkgdGltZSwgd2hldGhlciBieSBzeXN0ZW0gZXZlbnRzLCBicm93c2Vy
IHNldHRpbmdzIGNoYW5nZXMsIG9yCisgICAgICAgIHRyaWdnZXJlZCBieSBzY3JpcHQuIFRvIGF2
b2lkIGludGVycG9zaW5nIG9uIGFsbCB0aG9zZSBjb2RlIHBhdGhzLCBqdXN0CisgICAgICAgIG1l
bW9pemUgdGhlIHBsdWdpbiBkYXRhIHVzZWQgYnkgRE9NUGx1Z2luQXJyYXkgYW5kIERPTU1pbWVU
eXBlQXJyYXkuCisKKyAgICAgICAgVGhpcyBpcyBsZXNzIGVmZmljaWVudCB0aGFuIGNvbnRyb2xs
aW5nIG11dGF0aW9ucyB0byB0aGUgdW5kZXJseWluZyBQbHVnaW5EYXRhCisgICAgICAgIG9mIGEg
UGFnZSwgYnV0IHRoYXQgY2FuIGJlIGRvbmUgbGF0ZXIgaWYgYmV0dGVyIHBsdWdpbiBzdXBwb3J0
IGlzIGRlc2lyZWQuCisgICAgICAgIFRoZSBwb2ludCBvZiB0aGlzIGNoYW5nZSBpcyB0byBtYWtl
IGFuYWx5dGljcyB0cmFja2VycyBkZXRlcm1pbmlzdGljIGFjcm9zcworICAgICAgICBlbmFibGlu
Zy9kaXNhYmxpbmcgb2YgcGx1Z2lucy4KKworICAgICAgICBUZXN0OiBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9pemVkLmhtbAorCisgICAgICAgICog
cGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVU
eXBlQXJyYXk6OmdldFBsdWdpbkRhdGEpOgorICAgICAgICAqIHBsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luQXJyYXk6OnBsdWdpbkRhdGEpOiBT
YXZlIG9yIHJlc3RvcmUgbWVtb2l6ZWQgcGx1Z2luCisgICAgICAgIGRhdGEgZHVyaW5nIGNhcHR1
cmUgYW5kIHJlcGxheSwgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5E
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpQbHVnaW5EYXRhKTogQWRkIGEg
Y29uc3RydWN0b3IgdGhhdCB1c2VzIHRoZQorICAgICAgICBwcm92aWRlZCBwbHVnaW4gZGF0YSBy
YXRoZXIgdGhhbiBmZXRjaGluZyBsaXZlIHBsdWdpbiBkYXRhLiBUaGlzIGlzCisgICAgICAgIG1h
cmtlZCBwcm90ZWN0ZWQgc28gaXQncyBvbmx5IHVzZWQgYnkgYSBzdWJjbGFzcyBzcGVjaWZpY2Fs
bHkgZm9yCisgICAgICAgIGRlc2VyaWFsaXphdGlvbi4KKworICAgICAgICAqIHJlcGxheS9TZXJp
YWxpemF0aW9uTWV0aG9kcy5jcHA6IEFkZCBlbmNvZGVyIHNwZWNpYWxpemF0aW9ucy4KKyAgICAg
ICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8TWltZUNsYXNzSW5mbz46OmVuY29kZVZhbHVlKToKKyAg
ICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8TWltZUNsYXNzSW5mbz46OmRlY29kZVZhbHVlKToK
KyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8UGx1Z2luSW5mbz46OmVuY29kZVZhbHVlKToK
KyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8UGx1Z2luSW5mbz46OmRlY29kZVZhbHVlKToK
KyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8UGx1Z2luRGF0YT46OmVuY29kZVZhbHVlKToK
KyAgICAgICAgKEpTQzo6RGVzZXJpYWxpemVkUGx1Z2luRGF0YTo6RGVzZXJpYWxpemVkUGx1Z2lu
RGF0YSk6IEFkZCBhIGN1c3RvbQorICAgICAgICBzdWJjbGFzcyBvZiBQbHVnaW5EYXRhIHRoYXQg
Y2FuIGJlIGluaXRpYWxpemVkIGZyb20gZGVzZXJpYWxpemVkIGRhdGEuCisgICAgICAgIChKU0M6
OkVuY29kaW5nVHJhaXRzPFBsdWdpbkRhdGE+OjpkZWNvZGVWYWx1ZSk6CisgICAgICAgICogcmVw
bGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmg6CisgICAgICAgICogcmVwbGF5L1dlYklucHV0cy5q
c29uOiBBZGQgbmV3IGlucHV0IEZldGNoUGx1Z2luRGF0YS4KKwogMjAxNC0wNC0xMCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSAiU3lz
dGVtIEZvbnQiIGZyb20gY2hhcmFjdGVyIHdpZHRoIGNhbGN1bGF0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCmluZGV4IDRjODBiZDJlODUzNWFl
ODEwNTRiYzMxOGM1ZjJmYTUzNmYwMjkxNDguLjAxOTFkNDE0OGVmYmY0ZGZmOTY2M2NjZDk5ZTZh
YzYxNTI1YzNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5j
b2RlZFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRW
YWx1ZS5jcHAKQEAgLTE1OCw2ICsxNTgsMTUgQEAgdGVtcGxhdGU8PiB1aW50NjRfdCBFbmNvZGVk
VmFsdWU6OmNvbnZlcnRUbzx1aW50NjRfdD4oKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Rl
bXBsYXRlPD4gdW5zaWduZWQgbG9uZyBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzx1bnNpZ25lZCBs
b25nPigpCit7CisgICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7CisgICAgYm9vbCBjYXN0U3VjY2Vl
ZGVkID0gbV92YWx1ZS0+YXNOdW1iZXIoJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0
U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHRl
bXBsYXRlPD4gU3RyaW5nIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPFN0cmluZz4oKQogewogICAg
IFN0cmluZyByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L0VuY29kZWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFs
dWUuaAppbmRleCBmYzc0ZjEzNTNlMjA2NzBmYWU4ODAyY2Q2NDAwY2ZkNmVjNzQzNjBmLi5mMTQ3
N2FhNTM1YWVmYjMwOTJiYzA1ZmIzNTQyODZjMWZhZmZmYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKQEAgLTkyLDEzICs5MiwxMyBAQCB0ZW1wbGF0
ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88aW50
MzJfdD4oKTsKIHRlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCBFbmNvZGVkVmFs
dWU6OmNvbnZlcnRUbzxpbnQ2NF90PigpOwogdGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB1
aW50MzJfdCBFbmNvZGVkVmFsdWU6OmNvbnZlcnRUbzx1aW50MzJfdD4oKTsKIHRlbXBsYXRlPD4g
SlNfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88dWludDY0
X3Q+KCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGxvbmcgRW5jb2Rl
ZFZhbHVlOjpjb252ZXJ0VG88dW5zaWduZWQgbG9uZz4oKTsKIHRlbXBsYXRlPD4gSlNfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIEVuY29kZWRWYWx1ZTo6Y29udmVydFRvPFN0cmluZz4oKTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBFbmNvZGluZ1RyYWl0cyB7CiAgICAgdHlwZWRlZiBU
IERlY29kZWRUeXBlOwogCi0gICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShEZWNv
ZGVkVHlwZSk7CiAgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNv
ZGVkVHlwZSYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwg
RGVjb2RlZFR5cGUmKTsKQEAgLTE1Niw2ICsxNTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNv
ZGluZ1RyYWl0czxpbnQzMl90PiA6IHB1YmxpYyBTY2FsYXJFbmNvZGluZ1RyYWl0czxpbnQzMl90
PgogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8aW50NjRfdD4gOiBwdWJsaWMgU2Nh
bGFyRW5jb2RpbmdUcmFpdHM8aW50NjRfdD4geyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2Rp
bmdUcmFpdHM8dWludDMyX3Q+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJhaXRzPHVpbnQzMl90
PiB7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czx1aW50NjRfdD4gOiBwdWJs
aWMgU2NhbGFyRW5jb2RpbmdUcmFpdHM8dWludDY0X3Q+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IEVuY29kaW5nVHJhaXRzPHVuc2lnbmVkIGxvbmc+IDogcHVibGljIFNjYWxhckVuY29kaW5nVHJh
aXRzPHVuc2lnbmVkIGxvbmc+IHsgfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFp
dHM8U3RyaW5nPiA6IHB1YmxpYyBTY2FsYXJFbmNvZGluZ1RyYWl0czxTdHJpbmc+IHsKICAgICBz
dGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAppbmRleCBkNjQzODI1NjY3
OThiNmI4NWUzNDQ0ZDgxZmJiZDg3NWNjNjAxODYyLi43ZDIxMjBkZmY5YWNhYjdhMGVkNGRjNzZi
ZTMxMGYxNzUzY2RkM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1p
bWVUeXBlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVB
cnJheS5jcHAKQEAgLTI2LDYgKzI2LDEyIEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkp
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJSZXBsYXlJbnB1dHMuaCIKKyNp
bmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIERPTU1pbWVUeXBlQXJyYXk6OkRPTU1pbWVUeXBlQXJyYXkoRnJhbWUqIGZyYW1lKQpA
QCAtODUsMTEgKzkxLDI4IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJy
YXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5CiBQbHVnaW5EYXRhKiBE
T01NaW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJh
bWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gJnBhZ2UtPnBsdWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gJnBhZ2UtPnBsdWdpbkRhdGEo
KTsKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIHBsdWdpbkRhdGE7CisKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29y
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRDdXJzb3IoKTsKKyAgICBpZiAoY3Vyc29yLmlz
Q2FwdHVyaW5nKCkpCisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxGZXRjaFBsdWdpbkRhdGE+
KHBsdWdpbkRhdGEpOworICAgIGVsc2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7CisgICAg
ICAgIGlmIChGZXRjaFBsdWdpbkRhdGEqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5wdXQ8RmV0Y2hQ
bHVnaW5EYXRhPigpKQorICAgICAgICAgICAgcGx1Z2luRGF0YSA9IGlucHV0LT5wbHVnaW5EYXRh
KCkuZ2V0KCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gcGx1Z2luRGF0YTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcAppbmRleCBjY2E5NGIyODFmMzY5YWIyNGMwM2M5ZTMzZjBjNjg3MDdmMDhkMzBiLi5k
M2E2Mzc3NmJlZWViZDNhOTg0M2Y5ZjliZjVmMmQ0YmJhMzdmMTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRl
ICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKKyNp
ZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldl
YlJlcGxheUlucHV0cy5oIgorI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRE9NUGx1Z2luQXJyYXk6OkRPTVBsdWdpbkFycmF5
KEZyYW1lKiBmcmFtZSkKQEAgLTkwLDExICs5NiwyOCBAQCB2b2lkIERPTVBsdWdpbkFycmF5Ojpy
ZWZyZXNoKGJvb2wgcmVsb2FkKQogUGx1Z2luRGF0YSogRE9NUGx1Z2luQXJyYXk6OnBsdWdpbkRh
dGEoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAmcGFnZS0+cGx1
Z2luRGF0YSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFBsdWdpbkRhdGEqIHBs
dWdpbkRhdGEgPSAmcGFnZS0+cGx1Z2luRGF0YSgpOworCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkp
CisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gcGx1Z2luRGF0
YTsKKworICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1
dEN1cnNvcigpOworICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgY3Vyc29y
LmFwcGVuZElucHV0PEZldGNoUGx1Z2luRGF0YT4ocGx1Z2luRGF0YSk7CisgICAgZWxzZSBpZiAo
Y3Vyc29yLmlzUmVwbGF5aW5nKCkpIHsKKyAgICAgICAgaWYgKEZldGNoUGx1Z2luRGF0YSogaW5w
dXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxGZXRjaFBsdWdpbkRhdGE+KCkpCisgICAgICAgICAgICBw
bHVnaW5EYXRhID0gaW5wdXQtPnBsdWdpbkRhdGEoKS5nZXQoKTsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHJldHVybiBwbHVnaW5EYXRhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCmluZGV4IGZlYzdhY2U3NDY0YjFkYjVhOTJjYjg2ZDM1
ZTgzMDBhM2Y2MmMxNTMuLjVhZGU0MTZmMTE0ZGE1ZDM2YzNjMzExNDc3YThlY2Q1OGViYTE0NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCkBAIC03Myw2ICs3MywxNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW5pdFBsdWdpbnMoY29uc3QgUGFnZSopOwogICAgIGNvbnN0IFBsdWdp
bkluZm8qIHBsdWdpbkluZm9Gb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dDsKIAorcHJvdGVjdGVkOgorI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIFBsdWdpbkRhdGEo
VmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnMsIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lcywg
VmVjdG9yPHNpemVfdD4gaW5kaWNlcykKKyAgICAgICAgOiBtX3BsdWdpbnMocGx1Z2lucykKKyAg
ICAgICAgLCBtX21pbWVzKG1pbWVzKQorICAgICAgICAsIG1fbWltZVBsdWdpbkluZGljZXMoaW5k
aWNlcykKKyAgICB7CisgICAgfQorI2VuZGlmCisKICAgICBWZWN0b3I8UGx1Z2luSW5mbz4gbV9w
bHVnaW5zOwogICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtX21pbWVzOwogICAgIFZlY3Rvcjxz
aXplX3Q+IG1fbWltZVBsdWdpbkluZGljZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Nl
cmlhbGl6YXRpb25NZXRob2RzLmNwcAppbmRleCAxNzliNDEyYjY5YmM5OTdjN2YxZTAzODJkMTM0
MmVlYmE1NGZiYjIwLi5jNTJmNTczNjIyNDQ5Y2YyYmM3MDAzNmY5N2NjYmYxNTE2OWNiYTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUmVwbGF5SW5wdXRUeXBlcy5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVVJMLmgiCkBAIC00Niwx
MiArNDcsMTUgQEAKIAogdXNpbmcgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kOwogdXNpbmcgV2Vi
Q29yZTo6SW50UG9pbnQ7Cit1c2luZyBXZWJDb3JlOjpNaW1lQ2xhc3NJbmZvOwogdXNpbmcgV2Vi
Q29yZTo6TW91c2VCdXR0b247CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OwogdXNpbmcg
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OwogdXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1N
b3VzZUV2ZW50OwogdXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OwogdXNpbmcgV2Vi
Q29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHk7Cit1c2luZyBXZWJDb3JlOjpQbHVn
aW5EYXRhOwordXNpbmcgV2ViQ29yZTo6UGx1Z2luSW5mbzsKIHVzaW5nIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOwogdXNpbmcgV2ViQ29yZTo6VVJMOwogdXNpbmcgV2ViQ29yZTo6aW5wdXRUeXBl
czsKQEAgLTE0Nyw2ICsxNTEsMzEgQEAgRnJhbWUqIGZyYW1lRnJvbUZyYW1lSW5kZXgoUGFnZSog
cGFnZSwgdW5zaWduZWQgbG9uZyBmcmFtZUluZGV4KQogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVt
cGxhdGU8PgorRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPE1pbWVDbGFzc0luZm8+OjplbmNv
ZGVWYWx1ZShjb25zdCBNaW1lQ2xhc3NJbmZvJiBpbnB1dCkKK3sKKyAgICBFbmNvZGVkVmFsdWUg
ZW5jb2RlZERhdGEgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOworCisgICAgRU5DT0RF
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFN0cmluZywgdHlwZSwgaW5wdXQudHlwZSk7Cisg
ICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFN0cmluZywgZGVzYywgaW5wdXQu
ZGVzYyk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxTdHJp
bmc+LCBleHRlbnNpb25zLCBpbnB1dC5leHRlbnNpb25zKTsKKworICAgIHJldHVybiBlbmNvZGVk
RGF0YTsKK30KKwordGVtcGxhdGU8PgorYm9vbCBFbmNvZGluZ1RyYWl0czxNaW1lQ2xhc3NJbmZv
Pjo6ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkRGF0YSwgTWltZUNsYXNzSW5mbyYg
aW5wdXQpCit7CisgICAgTWltZUNsYXNzSW5mbyBpbmZvOworCisgICAgREVDT0RFX1RZUEVfV0lU
SF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBTdHJpbmcsIHR5cGUsIGluZm8udHlwZSk7Cisg
ICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBTdHJpbmcsIGRl
c2MsIGluZm8uZGVzYyk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29k
ZWREYXRhLCBWZWN0b3I8U3RyaW5nPiwgZXh0ZW5zaW9ucywgaW5mby5leHRlbnNpb25zKTsKKwor
ICAgIGlucHV0ID0gaW5mbzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRW5jb2RlZFZhbHVlIEVu
Y29kaW5nVHJhaXRzPE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U+OjplbmNvZGVWYWx1ZShjb25z
dCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlJiBpbnB1dCkKIHsKICAgICBFbmNvZGVkVmFsdWUg
ZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKQEAgLTQyNCw2ICs0
NTMsNjUgQEAgYm9vbCBFbmNvZGluZ1RyYWl0czxQbGF0Zm9ybVdoZWVsRXZlbnQ+OjpkZWNvZGVW
YWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWREYXRhLAogICAgIHJldHVybiB0cnVlOwogfQogCitF
bmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGx1Z2luRGF0YT46OmVuY29kZVZhbHVlKFJlZlB0
cjxQbHVnaW5EYXRhPiBpbnB1dCkKK3sKKyAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZERhdGEgPSBF
bmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOworCisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVko
ZW5jb2RlZERhdGEsIFZlY3RvcjxQbHVnaW5JbmZvPiwgcGx1Z2lucywgaW5wdXQtPnBsdWdpbnMo
KSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxNaW1lQ2xh
c3NJbmZvPiwgbWltZXMsIGlucHV0LT5taW1lcygpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tF
WShlbmNvZGVkRGF0YSwgVmVjdG9yPHNpemVfdD4sIG1pbWVQbHVnaW5JbmRpY2VzLCBpbnB1dC0+
bWltZVBsdWdpbkluZGljZXMoKSk7CisKKyAgICByZXR1cm4gZW5jb2RlZERhdGE7Cit9CisKK2Ns
YXNzIERlc2VyaWFsaXplZFBsdWdpbkRhdGEgOiBwdWJsaWMgUGx1Z2luRGF0YSB7CitwdWJsaWM6
CisgICAgRGVzZXJpYWxpemVkUGx1Z2luRGF0YShWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2lucywg
VmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzLCBWZWN0b3I8c2l6ZV90PiBpbmRpY2VzKQorICAg
ICAgICA6IFBsdWdpbkRhdGEocGx1Z2lucywgbWltZXMsIGluZGljZXMpCisgICAgeworICAgIH0K
K307CisKK2Jvb2wgRW5jb2RpbmdUcmFpdHM8UGx1Z2luRGF0YT46OmRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZERhdGEsIFJlZlB0cjxQbHVnaW5EYXRhPiYgaW5wdXQpCit7CisgICAg
REVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBWZWN0b3I8UGx1Z2luSW5m
bz4sIHBsdWdpbnMpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0
YSwgVmVjdG9yPE1pbWVDbGFzc0luZm8+LCBtaW1lcyk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBWZWN0b3I8c2l6ZV90PiwgbWltZVBsdWdpbkluZGljZXMp
OworCisgICAgaW5wdXQgPSBhZG9wdFJlZihuZXcgRGVzZXJpYWxpemVkUGx1Z2luRGF0YShwbHVn
aW5zLCBtaW1lcywgbWltZVBsdWdpbkluZGljZXMpKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTw+CitFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGx1Z2luSW5mbz46OmVu
Y29kZVZhbHVlKGNvbnN0IFBsdWdpbkluZm8mIGlucHV0KQoreworICAgIEVuY29kZWRWYWx1ZSBl
bmNvZGVkRGF0YSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CisKKyAgICBFTkNPREVf
VFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgU3RyaW5nLCBuYW1lLCBpbnB1dC5uYW1lKTsKKyAg
ICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgU3RyaW5nLCBmaWxlLCBpbnB1dC5m
aWxlKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgU3RyaW5nLCBkZXNj
LCBpbnB1dC5kZXNjKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgVmVj
dG9yPE1pbWVDbGFzc0luZm8+LCBtaW1lcywgaW5wdXQubWltZXMpOworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBpc0FwcGxpY2F0aW9uUGx1Z2luLCBpbnB1dC5p
c0FwcGxpY2F0aW9uUGx1Z2luKTsKKworICAgIHJldHVybiBlbmNvZGVkRGF0YTsKK30KKwordGVt
cGxhdGU8PgorYm9vbCBFbmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZGVjb2RlVmFsdWUoRW5j
b2RlZFZhbHVlJiBlbmNvZGVkRGF0YSwgUGx1Z2luSW5mbyYgaW5wdXQpCit7CisgICAgUGx1Z2lu
SW5mbyBpbmZvOworCisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWRE
YXRhLCBTdHJpbmcsIG5hbWUsIGluZm8ubmFtZSk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlf
VE9fTFZBTFVFKGVuY29kZWREYXRhLCBTdHJpbmcsIGZpbGUsIGluZm8uZmlsZSk7CisgICAgREVD
T0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBTdHJpbmcsIGRlc2MsIGlu
Zm8uZGVzYyk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRh
LCBWZWN0b3I8TWltZUNsYXNzSW5mbz4sIG1pbWVzLCBpbmZvLm1pbWVzKTsKKyAgICBERUNPREVf
VFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIGJvb2wsIGlzQXBwbGljYXRpb25Q
bHVnaW4sIGluZm8uaXNBcHBsaWNhdGlvblBsdWdpbik7CisKKyAgICBpbnB1dCA9IGluZm87Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxTZWN1cml0
eU9yaWdpbj46OmVuY29kZVZhbHVlKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gaW5wdXQpCiB7CiAg
ICAgcmV0dXJuIEVuY29kZWRWYWx1ZTo6Y3JlYXRlU3RyaW5nKGlucHV0LT50b1N0cmluZygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5o
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmgKaW5kZXggZjc1
ZWQ4MjY0ZGUwMTYxMDA3ZTE2NjQxNGVkZDY0M2Q4YWY2MDdhZC4uMDI0MjA4YmI3MDU4MjMzMDU1
MTBjNmI2ODY5NjcxNTAzYjE1ZmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1NlcmlhbGl6YXRpb25NZXRob2RzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Nlcmlh
bGl6YXRpb25NZXRob2RzLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBs
YXRmb3JtV2hlZWxFdmVudDsKK2NsYXNzIFBsdWdpbkRhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIGNsYXNzIFVSTDsKIApAQCAtOTYsNiArOTcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50PiB7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudD4mIHZhbHVlKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29k
aW5nVHJhaXRzPFdlYkNvcmU6OlBsdWdpbkRhdGE+IHsKKyAgICB0eXBlZGVmIFJlZlB0cjxXZWJD
b3JlOjpQbHVnaW5EYXRhPiBEZWNvZGVkVHlwZTsKKworICAgIHN0YXRpYyBFbmNvZGVkVmFsdWUg
ZW5jb2RlVmFsdWUoUmVmUHRyPFdlYkNvcmU6OlBsdWdpbkRhdGE+IHZhbHVlKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBSZWZQdHI8V2ViQ29yZTo6UGx1Z2lu
RGF0YT4mIHZhbHVlKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFdl
YkNvcmU6OlVSTD4gewogICAgIHR5cGVkZWYgV2ViQ29yZTo6VVJMIERlY29kZWRUeXBlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KaW5kZXggM2U2YWVmYjEwZjhlZmQyOTMwZmRj
MzJjOGU1NjAwMjQ4NWRmMDkyYy4uNTQyNjBjNjczMmIwZGM2ZDMwNzIxOTkzZmNmODA5YjEyYzFi
ZDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbgpAQCAtODgsNiArODgsMTAg
QEAKICAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJQbHVnaW5EYXRhIiwgIm1vZGUiOiAiU0hBUkVEIiwKKyAgICAgICAgICAgICAgICAiaGVh
ZGVyIjogInBsdWdpbnMvUGx1Z2luRGF0YS5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJTY3JvbGxEaXJlY3Rpb24iLCAibW9kZSI6ICJT
Q0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50NjRfdCIsCiAgICAgICAgICAgICAgICAgImZsYWdzIjog
WyJFTlVNIl0sCiAgICAgICAgICAgICAgICAgInZhbHVlcyI6IFsiU2Nyb2xsVXAiLCAiU2Nyb2xs
RG93biIsICJTY3JvbGxMZWZ0IiwgIlNjcm9sbFJpZ2h0Il0sCkBAIC0yMTksNiArMjIzLDE0IEBA
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogIkZldGNoUGx1Z2luRGF0YSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGx1Z2lu
IGRhdGEgd2FzIHJlcXVlc3RlZCB0aHJvdWdoIERPTVBsdWdpbkFycmF5IG9yIERPTU1pbWVUeXBl
QXJyYXkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAg
ICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwbHVnaW5EYXRh
IiwgInR5cGUiOiAiUGx1Z2luRGF0YSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJMb2dpY2FsU2Nyb2xsUGFnZSIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBhIGxvZ2ljYWwgc2Ny
b2xsIGV2ZW50LiIsCiAgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjUyNjFmMmZlZDBlOWFlOTg3Zjk0NWVkY2NlOTk3ZGJiOGUwYzE3OC4uYjZmZWYyNmUwOGYyMzhm
MjY1MTk3ZWZlYmFjOTEwZjcwZDc4MzI2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA0
LTEwICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBX
ZWIgUmVwbGF5OiBtZW1vaXplIHBsdWdpbiBkYXRhIGZvciBuYXZpZ2F0b3IubWltZVR5cGVzIGFu
ZCBuYXZpZ2F0b3IucGx1Z2lucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMxMzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVy
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgc2V0dXAgbWV0aG9kcyBiZWZv
cmUgdGhlIGluaXRpYWwgbmF2aWdhdGlvbiBvZgorICAgICAgICBjYXB0dXJlIGFuZCByZXBsYXku
IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHRlc3QgdGhhdCB0aGUgdmFsdWUgb2YKKyAgICAgICAgbmF2
aWdhdG9yLnBsdWdpbnMgaXMgdGhlIHNhbWUgb24gcmVwbGF5IGV2ZW4gaWYgdGhlIHVuZGVybHlp
bmcgZGF0YSBjaGFuZ2VkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVwbGF5
L3JlcGxheS10ZXN0LmpzOgorICAgICAgICAoSW5zcGVjdG9yVGVzdFByb3h5LnJ1blNpbmdsZVNl
Z21lbnRSZWZUZXN0KTogQWRkIGNhbGxzIHRvIG9wdGlvbmFsIHNldHVwCisgICAgICAgIGZ1bmN0
aW9ucyBpbiB0aGUgdGVzdCBwYWdlIGNhbGxlZCBzZXR1cFByZUNhcHR1cmUgYW5kIHNldHVwUHJl
UmVwbGF5LgorCiAyMDE0LTA0LTEwICBCZW0gSm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29t
PgogCiAgICAgICAgIEludmFsaWQgY2FzdCBpbiBXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBD
bGlwUGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVw
bGF5L3JlcGxheS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVw
bGF5L3JlcGxheS10ZXN0LmpzCmluZGV4IDk1Y2RmYzNkZTliNGFlMDI0ODkzM2M3MGI1MTQ4MmMw
NzEwZGJkZDMuLjQ2MWY4YWM5NDRiNjhjMGZhZjMxNTcwYmYxMWVjNDljMjY1MGMwMTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVz
dC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXBsYXkvcmVwbGF5
LXRlc3QuanMKQEAgLTE3LDYgKzE3LDkgQEAgSW5zcGVjdG9yVGVzdC5SZXBsYXkucnVuU2luZ2xl
U2VnbWVudFJlZlRlc3QgPSBmdW5jdGlvbihzdGF0ZUNvbXBhcmF0b3IpCiAgICAgfSkKICAgICAu
dGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRlc3QgcGFnZSBp
bml0aWFsIGxvYWQgZG9uZS4iKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVBZ2VudC5ldmFsdWF0
ZS5wcm9taXNlKCJpZiAodHlwZW9mIFwic2V0dXBQcmVDYXB0dXJlXCIgPT09IFwiZnVuY3Rpb25c
Iikgc2V0dXBQcmVDYXB0dXJlKCkiKTsKKyAgICB9KQorICAgIC50aGVuKGZ1bmN0aW9uKCkgewog
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gc3RhcnRDYXB0dXJpbmcocmVzb2x2
ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiV2FpdGluZyBmb3Ig
Y2FwdHVyaW5nIHRvIHN0YXJ0Li4uIik7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5
TWFuYWdlci5zdGFydENhcHR1cmluZygpOwpAQCAtNDIsNiArNDUsOSBAQCBJbnNwZWN0b3JUZXN0
LlJlcGxheS5ydW5TaW5nbGVTZWdtZW50UmVmVGVzdCA9IGZ1bmN0aW9uKHN0YXRlQ29tcGFyYXRv
cikKICAgICAgICAgfSk7CiAgICAgfSkKICAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5wcm9taXNlKCJpZiAodHlwZW9mIFwic2V0dXBQ
cmVDYXB0dXJlXCIgPT09IFwiZnVuY3Rpb25cIikgc2V0dXBQcmVSZXBsYXkoKSIpOworICAgIH0p
CisgICAgLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDYXB0
dXJlIHN0b3BwZWQsIG5vdyBzdGFydGluZyByZXBsYXkgdG8gY29tcGxldGlvbi4uLiIpCiAgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBzdGFydFBsYXliYWNrKHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucmVwbGF5VG9D
b21wbGV0aW9uKCk7CkBAIC03Niw0ICs4Miw0IEBAIEluc3BlY3RvclRlc3QuUmVwbGF5LnJ1blNp
bmdsZVNlZ21lbnRSZWZUZXN0ID0gZnVuY3Rpb24oc3RhdGVDb21wYXJhdG9yKQogICAgIH0pOwog
fTsKIAotfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3ItcGx1Z2lucy1tZW1v
aXplZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1u
YXZpZ2F0b3ItcGx1Z2lucy1tZW1vaXplZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4MjJj
ZTUwZmRmNTdiNmJjOGFiMGFkNWM1YzhhODY3ZDA3YTI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9yZXBsYXkvd2luZG93LW5hdmlnYXRvci1wbHVnaW5zLW1lbW9p
emVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHdlIGNhbiBjYXB0
dXJlIGFuZCByZXBsYXkgbm9uZGV0ZXJtaW5pc20gaW4gd2luZG93Lm5hdmlnYXRvci5wbHVnaW5z
IGFuZCB3aW5kb3cubmF2aWdhdG9yLm1pbWVUeXBlcy4KKworIFdhaXRpbmcgZm9yIHRlc3QgcGFn
ZSB0byBmaW5pc2ggaXRzIGluaXRpYWwgbG9hZC4uLgorVGVzdCBwYWdlIGluaXRpYWwgbG9hZCBk
b25lLgorV2FpdGluZyBmb3IgY2FwdHVyaW5nIHRvIHN0YXJ0Li4uCitDYXB0dXJpbmcgaGFzIHN0
YXJ0ZWQuCitXYWl0aW5nIHRvIGNhcHR1cmUgaW5pdGlhbCBuYXZpZ2F0aW9uLi4uCitJbml0aWFs
IG5hdmlnYXRpb24gY2FwdHVyZWQuIER1bXBpbmcgc3RhdGUuLi4uCitDYXB0dXJlIHN0b3BwZWQs
IG5vdyBzdGFydGluZyByZXBsYXkgdG8gY29tcGxldGlvbi4uLgorUGxheWJhY2sgaGFzIHN0YXJ0
ZWQuCitXYWl0aW5nIHRvIHJlcGxheSBpbml0aWFsIG5hdmlnYXRpb24uLi4KK0luaXRpYWwgbmF2
aWdhdGlvbiByZXBsYXllZC4gRHVtcGluZyBzdGF0ZS4uLgorUEFTUzogTm9uZGV0ZXJtaW5pc3Rp
YyBzdGF0ZSBzaG91bGQgbm90IGRpZmZlciBkdXJpbmcgY2FwdHVyZSBhbmQgcmVwbGF5LgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwbGF5L3dpbmRvdy1uYXZpZ2F0b3It
cGx1Z2lucy1tZW1vaXplZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcGxheS93aW5k
b3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA1MjBhZTFl
NjhlZmMxZmJlOTVhZDVlN2Q4NzRkMTFlMTdiNGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3JlcGxheS93aW5kb3ctbmF2aWdhdG9yLXBsdWdpbnMtbWVtb2l6ZWQu
aHRtbApAQCAtMCwwICsxLDEwNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3JlcGxheS9yZXBsYXktdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gc2hhbGxvd0NvcHkob2JqZWN0LCBwcm9wZXJ0aWVzKSB7Cisg
ICAgdmFyIGNvcGllZE9iamVjdCA9IHt9OworICAgIGZvciAodmFyIHByb3Agb2YgcHJvcGVydGll
cykKKyAgICAgICAgY29waWVkT2JqZWN0W3Byb3BdID0gb2JqZWN0W3Byb3BdOworCisgICAgcmV0
dXJuIGNvcGllZE9iamVjdDsKK30KKworZnVuY3Rpb24gc2hhbGxvd0luZGV4T2YoY2FuZGlkYXRl
cywgb2JqZWN0VG9GaW5kLCBwcm9wZXJ0aWVzKSB7CisgICAgaWYgKCFvYmplY3RUb0ZpbmQgICAg
fHwgIWNhbmRpZGF0ZXMubGVuZ3RoKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG9iamVj
dENhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbaV07CisgICAgICAgIHZhciBwcm9wSXNFcXVhbCA9IGZ1
bmN0aW9uKHByb3ApIHsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3RDYW5kaWRhdGVbcHJvcF0g
PT09IG9iamVjdFRvRmluZFtwcm9wXTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAocHJvcGVy
dGllcy5ldmVyeShwcm9wSXNFcXVhbCkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisK
KyAgICByZXR1cm4gLTE7Cit9CisKK2Z1bmN0aW9uIGR1bXBOb25kZXRlcm1pbmlzdGljU3RhdGUo
KQoreworICAgIHZhciBtaW1lS2V5cyA9IFsidHlwZSIsICJzdWZmaXhlcyIsICJkZXNjcmlwdGlv
biJdOworICAgIHZhciBwbHVnaW5LZXlzID0gWyJuYW1lIiwgImZpbGVuYW1lIiwgImRlc2NyaXB0
aW9uIiwgImxlbmd0aCJdOworCisgICAgdmFyIG1pbWVUeXBlcyA9IFtdOworICAgIHZhciBwbHVn
aW5zID0gW107CisKKyAgICB2YXIgcGx1Z2luQXJyYXkgPSB3aW5kb3cubmF2aWdhdG9yLnBsdWdp
bnM7CisgICAgdmFyIG1pbWVzQXJyYXkgPSB3aW5kb3cubmF2aWdhdG9yLm1pbWVUeXBlczsKKwor
ICAgIC8vIEZpcnN0IGdhdGhlciBhbGwgb2YgdGhlIGluc3RhbmNlcyBpbnRvIGFuIGFycmF5Lgor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2luQXJyYXkubGVuZ3RoOyArK2kpCisgICAgICAg
IHBsdWdpbnMucHVzaChwbHVnaW5BcnJheS5pdGVtKGkpKTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWltZXNBcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgbWltZVR5cGVzLnB1c2gobWlt
ZXNBcnJheS5pdGVtKGkpKTsKKworICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZVBsdWdpbihvYmplY3Qp
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2Ygd2luZG93LlBsdWdp
bik7CisKKyAgICAgICAgLy8gQ29weSBzaGFsbG93IHByb3BlcnRpZXMgYW5kIGZpbmQgaW5kaWNl
cyBmb3IgY3Jvc3MtcmVmZXJlbmNlcy4KKyAgICAgICAgdmFyIGRhdGEgPSBzaGFsbG93Q29weShv
YmplY3QsIHBsdWdpbktleXMpOworICAgICAgICB2YXIgbWltZUluZGljZXMgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBt
aW1lSW5kaWNlcy5wdXNoKHNoYWxsb3dJbmRleE9mKG1pbWVUeXBlcywgb2JqZWN0Lml0ZW0oaSks
IG1pbWVLZXlzKSk7CisKKyAgICAgICAgZGF0YS5taW1lSW5kaWNlcyA9IG1pbWVJbmRpY2VzOwor
ICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXJpYWxpemVNaW1l
VHlwZShvYmplY3QpIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2Yg
d2luZG93Lk1pbWVUeXBlKTsKKworICAgICAgICAvLyBDb3B5IHNoYWxsb3cgcHJvcGVydGllcyBh
bmQgZmluZCBpbmRpY2VzIGZvciBjcm9zcy1yZWZlcmVuY2VzLgorICAgICAgICB2YXIgZGF0YSA9
IHNoYWxsb3dDb3B5KG9iamVjdCwgbWltZUtleXMpOworICAgICAgICBkYXRhLnBsdWdpbkluZGV4
ID0gc2hhbGxvd0luZGV4T2YocGx1Z2lucywgb2JqZWN0LmVuYWJsZWRQbHVnaW4sIHBsdWdpbktl
eXMpOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAgICByZXR1cm4geworICAgICAg
ICAicGx1Z2lucyI6IHBsdWdpbnMubWFwKHNlcmlhbGl6ZVBsdWdpbiksCisgICAgICAgICJtaW1l
VHlwZXMiOiBtaW1lVHlwZXMubWFwKHNlcmlhbGl6ZU1pbWVUeXBlKQorICAgIH07Cit9CisKKy8v
IFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGluIHRoZSBwcmV2aW91cyBtYWluIGZyYW1lIHBy
aW9yIHRvIHRoZSBpbml0aWFsCisvLyBuYXZpZ2F0aW9uIHRoYXQgYmVnaW5zIGNhcHR1cmluZyBv
ciByZXBsYXlpbmcuIENhcmVmdWwsIGhlYXAgc3RhdGUgd2lsbCBiZSBsb3N0LgorZnVuY3Rpb24g
c2V0dXBQcmVDYXB0dXJlKCkgeworICAgIEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkVu
YWJsaW5nIHBsdWdpbnMgYmVmb3JlIGNhcHR1cmUuIik7CisgICAgdGVzdFJ1bm5lci5zZXRQbHVn
aW5zRW5hYmxlZChmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHNldHVwUHJlUmVwbGF5KCkgeworICAg
IEluc3BlY3RvclRlc3RQcm94eS5hZGRSZXN1bHQoIkRpc2FibGluZyBwbHVnaW5zIGJlZm9yZSBy
ZXBsYXkuIik7CisgICAgdGVzdFJ1bm5lci5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZnVuY3Rpb24gc3RhdGVzQXJlRXF1YWwoYSwgYikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhID09PSBiOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3Qu
UmVwbGF5LnJ1blNpbmdsZVNlZ21lbnRSZWZUZXN0KHN0YXRlc0FyZUVxdWFsKTsKK30KKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0
IHdlIGNhbiBjYXB0dXJlIGFuZCByZXBsYXkgbm9uZGV0ZXJtaW5pc20gaW4gPHR0PndpbmRvdy5u
YXZpZ2F0b3IucGx1Z2luczx0dD4gYW5kIDx0dD53aW5kb3cubmF2aWdhdG9yLm1pbWVUeXBlczwv
dHQ+LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>