<?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>140907</bug_id>
          
          <creation_ts>2015-01-26 16:04:06 -0800</creation_ts>
          <short_desc>WebGL2: Disable various extensions on WebGL2 context that have been promoted to core</short_desc>
          <delta_ts>2015-01-27 17:16:37 -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>WebGL</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="Roger Fong">roger_fong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064287</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-26 16:04:06 -0800</bug_when>
    <thetext>To disable:
WEBGL_lose_context 
OES_standard_derivatives 
OES_vertex_array_object 
OES_element_index_uint 
WEBGL_draw_buffers 
ANGLE_instanced_arrays 
EXT_frag_depth 
EXT_sRGB 
EXT_blend_minmax 
EXT_shader_texture_lod
￼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064288</commentid>
    <comment_count>1</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-26 16:04:35 -0800</bug_when>
    <thetext>rdar://problem/19545857</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064289</commentid>
    <comment_count>2</comment_count>
      <attachid>245383</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-26 16:06:55 -0800</bug_when>
    <thetext>Created attachment 245383
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064299</commentid>
    <comment_count>3</comment_count>
      <attachid>245388</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-26 16:38:53 -0800</bug_when>
    <thetext>Created attachment 245388
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064300</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-26 16:40:36 -0800</bug_when>
    <thetext>Attachment 245388 did not pass style-queue:


ERROR: LayoutTests/ChangeLog:3:  Line contains tab character.  [whitespace/tab] [5]
ERROR: LayoutTests/ChangeLog:4:  Line contains tab character.  [whitespace/tab] [5]
ERROR: LayoutTests/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 3 in 7 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>1064301</commentid>
    <comment_count>5</comment_count>
      <attachid>245389</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-26 16:41:42 -0800</bug_when>
    <thetext>Created attachment 245389
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064682</commentid>
    <comment_count>6</comment_count>
      <attachid>245389</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-27 15:02:07 -0800</bug_when>
    <thetext>Comment on attachment 245389
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=245389&amp;action=review

r=me, but please get rid of the tab characters in the LayoutTests/ChangeLog file.

&gt; LayoutTests/ChangeLog:5
&gt; +        &lt;rdar://problem/19545857&gt;

Please get rid of the tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064720</commentid>
    <comment_count>7</comment_count>
      <attachid>245389</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2015-01-27 16:32:08 -0800</bug_when>
    <thetext>Comment on attachment 245389
patch

The tab errors were actually from a previously uploaded patch. The current one here should be okay on the tabs. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064740</commentid>
    <comment_count>8</comment_count>
      <attachid>245389</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 17:16:34 -0800</bug_when>
    <thetext>Comment on attachment 245389
patch

Clearing flags on attachment: 245389

Committed r179233: &lt;http://trac.webkit.org/changeset/179233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064741</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 17:16:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245383</attachid>
            <date>2015-01-26 16:06:55 -0800</date>
            <delta_ts>2015-01-26 16:38:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>28519</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTAxLTI2ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wyOiBEaXNhYmxlIHZh
cmlvdXMgZXh0ZW5zaW9ucyBvbiBXZWJHTDIgY29udGV4dCB0aGF0IGhhdmUgYmVlbiBwcm9tb3Rl
ZCB0byBjb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwOTA3LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk1NDU4NTc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6IAorICAgICAgICBSZW1vdmUgc29tZSBl
eHRyYSBleHRlbnNpb24gZW51bXMgdGhhdCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGRlY2xhcmVkIG9u
IHRoZSBjb250ZXh0IGlkbC4KKwogMjAxNS0wMS0yNiAgQnl1bmdzZW9uIFNoaW4gIDxzdW4uc2hp
bkBsZ2UuY29tPgogCiAgICAgICAgIEZpeCBCb3JkZXItcmFkaXVzIGNsaXBwaW5nIGlzc3VlIG9u
IGEgY29tcG9zaXRlZCBkZXNjZW5kYW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3OTE0
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJFWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNs
dWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXRMaW5lYXIu
aCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0LmgiCisjaW5jbHVkZSAiT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgorI2luY2x1
ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
IgorI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKKyNpbmNsdWRlICJXZWJHTERl
YnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
V2ViR0xRdWVyeS5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldlYkdM
U3luYy5oIgpAQCAtNzUxLDYgKzc2MywxMjkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpiaW5kVmVydGV4QQogICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhBcnJheSk7CiB9CiAKK1dlYkdM
RXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJL
SVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9leHRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAg
ICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZs
b2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQu
Z2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCisgICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikK
KyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKKyAgICB9CisgICAgaWYgKChl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9h
dGMiKSkKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRo
aXMpKSB7CisgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKQorICAgICAg
ICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKChlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQorICAgICAg
ICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAg
ICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQorICAgICAgICAgICAgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpCisgICAgICAgICYmIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQorICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+
KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQo
KTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGlj
c0NvbnRleHQzRCgpKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CisgICAgfQorICAgIGlm
IChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKKyAgICAgICAgICAg
IGlmICghbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQorICAgICAgICAgICAgICAgIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bz4odGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvLmdl
dCgpOworICAgICAgICB9CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
R0xfZGVidWdfc2hhZGVycyIpCisgICAgICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7Cisg
ICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCisgICAgICAgICAgICAgICAgbV93
ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBpZiAobV9pc1BlbmRpbmdQb2xp
Y3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5l
YXIiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpOworICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfYXRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6
c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2Rl
cHRoX3RleHR1cmUiKTsKKyAgICAKKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygp
KSB7CisgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDE3OTE0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2
MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFy
cmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogdmVydGV4QXJyYXkpOworICAgIAorICAgIC8q
IEV4dGVuc2lvbnMgKi8KKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9uKiBnZXRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgogCisjaW5jbHVkZSAiQU5HTEVJbnN0YW5jZWRBcnJheXMuaCIKKyNpbmNsdWRl
ICJFWFRCbGVuZE1pbk1heC5oIgorI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgorI2luY2x1ZGUg
IkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuaCIKKyNpbmNsdWRlICJFWFRzUkdCLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CisjaW5jbHVkZSAiT0VTRWxlbWVudEluZGV4VWludC5oIgorI2luY2x1ZGUgIk9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJP
RVNUZXh0dXJlRmxvYXRMaW5lYXIuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0Lmgi
CisjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oIgorI2luY2x1ZGUgIk9FU1Zl
cnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5o
IgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIgorI2luY2x1ZGUgIldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCisjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mby5oIgorI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xE
ZXB0aFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCisjaW5jbHVkZSAi
V2ViR0xMb3NlQ29udGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNz
ZWRDYW52YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCkBAIC00
MCw2ICs2MywyMjQgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nvbgog
ewogfQogCisKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpIHsKKyAgICAg
ICAgaWYgKCFtX2V4dEJsZW5kTWluTWF4KSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOworICAgICAg
ICAgICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5NYXg+
KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4LmdldCgp
OworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIkVYVF9zUkdCIikKKyAg
ICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JH
QiIpKSB7CisgICAgICAgIGlmICghbV9leHRzUkdCKSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NSR0IiKTsKKyAgICAgICAg
ICAgIG1fZXh0c1JHQiA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUc1JHQj4odGhpcyk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJFWFRfZnJhZ19kZXB0aCIpCisgICAgICAgICYmIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkgeworICAg
ICAgICBpZiAoIW1fZXh0RnJhZ0RlcHRoKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAg
ICAgIG1fZXh0RnJhZ0RlcHRoID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRGcmFnRGVwdGg+KHRoaXMp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEZyYWdEZXB0aC5nZXQoKTsKKyAgICB9
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpKSkgeworICAgICAgICBpZiAoIW1f
ZXh0U2hhZGVyVGV4dHVyZUxPRCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAg
ICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKKyAgICAgICAgJiYg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKSkgeworICAgICAgICBpZiAoIW1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykgewor
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgICAgICAgICAgbV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNTdGFuZGFyZERlcml2YXRpdmVzPih0aGlz
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJl
X2Zsb2F0IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxv
YXQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxv
YXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpCisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikpIHsKKyAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdExpbmVh
cikgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
dGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
LmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICBpZiAoIW1f
b2VzVGV4dHVyZUhhbGZGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVy
ZUhhbGZGbG9hdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCisgICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiKSkgeworICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgeworICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXI+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9FU1ZlcnRleEFycmF5T2JqZWN0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbV9vZXNWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVpbnQpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0VsZW1lbnRJbmRleFVpbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KHRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29lc0VsZW1lbnRJbmRleFVpbnQuZ2V0KCk7CisgICAgfQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfbG9zZV9jb250ZXh0IikpIHsKKyAgICAg
ICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCisgICAgICAgICAgICBtX3dlYmdsTG9zZUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KHRoaXMpOworICAgICAgICBy
ZXR1cm4gbV93ZWJnbExvc2VDb250ZXh0LmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKQor
ICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhpcykpIHsK
KyAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCisgICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM+KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlQVRDLmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCisgICAgICAgICYmIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAgIGlm
ICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4odGhpcyk7
CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOworICAg
IH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUi
KQorICAgICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4
dDNEKCkpKSB7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgeworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSAmJiBzdXBwb3J0c0RyYXdC
dWZmZXJzKCkpIHsKKyAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZlcnMpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJh
d19idWZmZXJzIik7CisgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX2FuZ2xlSW5zdGFuY2VkQXJy
YXlzKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KHRo
aXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5m
byIpKSB7CisgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbykKKyAgICAg
ICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdSZW5kZXJlckluZm8+KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQorICAgICAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQor
ICAgICAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdTaGFkZXJzPih0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdT
aGFkZXJzLmdldCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRy
OworfQorCitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBp
ZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIAorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21pbm1h
eCIpOworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9zUkdCIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9zUkdCIik7CisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJl
X2hhbGZfZmxvYXQiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpOworICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192
ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9z
ZV9jb250ZXh0Iik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hdGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChn
cmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhf
dGV4dHVyZSIpOworICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyIpOworICAgIGlmIChBTkdMRUluc3RhbmNlZEFy
cmF5czo6c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CisgICAgCisgICAgaWYgKGFsbG93UHJpdmlsZWdlZEV4dGVuc2lvbnMo
KSkgeworICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAkocmV2aXNpb24gMTc4OTc1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkg
QEAgcHVibGljOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCos
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9u
KiBnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDE3
ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk1LDYwICszMDk1LDYgQEAgU3RyaW5nIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYQogICAgIHJldHVybiBlbnN1cmVOb3ROdWxs
KHNoYWRlci0+Z2V0U291cmNlKCkpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKLXsKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7Ci0KLSAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJFWFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NS
R0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9F
WFRfZnJhZ19kZXB0aCIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfZnJhZ19kZXB0aCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2Zsb2F0IikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VT
X3RleHR1cmVfZmxvYXRfbGluZWFyIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB8fCBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOwotICAgIGlmIChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlmIChXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJlIik7Ci0gICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMo
KSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYg
KEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCi0gICAgICAgIHJlc3VsdC5h
cHBlbmQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLQotICAgIGlmIChhbGxvd1ByaXZpbGVn
ZWRFeHRlbnNpb25zKCkpIHsKLSAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShy
ZXZpc2lvbiAxNzg5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJs
aWM6CiAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJHTENv
bnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIEdDM0RlbnVtIGdl
dEVycm9yKCk7Ci0gICAgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHZpcnR1YWwgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpID0gMDsKICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJHTEdldEluZm8gZ2V0UGFyYW1ldGVy
KEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFBy
b2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJH
TFNoYWRlclByZWNpc2lvbkZvcm1hdD4gZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVt
IHNoYWRlclR5cGUsIEdDM0RlbnVtIHByZWNpc2lvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgV2ViR0xH
ZXRJbmZvIGdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
KiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJv
Z3JhbSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMzNSwxMCArMzM1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwg
R0MzRHVpbnQgZGl2aXNvcik7CiAKIHByb3RlY3RlZDoKLVdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoSFRNTENhbnZhc0VsZW1lbnQqLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci1X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENh
bnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogCi1wcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERy
YXdCdWZmZXJzOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTM1MCw4ICszNDksOCBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKICAg
ICBmcmllbmQgY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAotdm9pZCBpbml0aWFs
aXplTmV3Q29udGV4dCgpOwotdm9pZCBzZXR1cEZsYWdzKCk7CisgICAgdm9pZCBpbml0aWFsaXpl
TmV3Q29udGV4dCgpOworICAgIHZvaWQgc2V0dXBGbGFncygpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MTksMTQgKzQxOSw2IEBAIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgY29u
c3QgR0xlbnVtIFNURU5DSUxfSU5ERVg4ICAgICAgICAgICAgICAgICA9IDB4OEQ0ODsKICAgICBj
b25zdCBHTGVudW0gREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgID0gMHg4NEY5OwogCi0g
ICAgY29uc3QgR0xlbnVtIFNSR0JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMHg4QzQwOwotICAgIGNvbnN0IEdMZW51bSBTUkdCX0FMUEhBX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4OEM0MjsKLSAgICBjb25zdCBHTGVudW0gU1JHQjhfQUxQ
SEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDhDNDM7Ci0gICAgY29uc3Qg
R0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUICAgID0gMHg4
MjEwOwotCi0gICAgY29uc3QgR0xlbnVtIE1JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICA9
IDB4ODAwNzsKLSAgICBjb25zdCBHTGVudW0gTUFYX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHg4MDA4OwotCiAgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9XSURUSCAgICAgICAg
ICAgICA9IDB4OEQ0MjsKICAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX0hFSUdIVCAgICAg
ICAgICAgID0gMHg4RDQzOwogICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfSU5URVJOQUxf
Rk9STUFUICAgPSAweDhENDQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245388</attachid>
            <date>2015-01-26 16:38:53 -0800</date>
            <delta_ts>2015-01-26 16:41:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>30011</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTAxLTI2ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wyOiBEaXNhYmxlIHZh
cmlvdXMgZXh0ZW5zaW9ucyBvbiBXZWJHTDIgY29udGV4dCB0aGF0IGhhdmUgYmVlbiBwcm9tb3Rl
ZCB0byBjb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwOTA3LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk1NDU4NTc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6IAorICAgICAgICBSZW1vdmUgc29tZSBl
eHRyYSBleHRlbnNpb24gZW51bXMgdGhhdCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGRlY2xhcmVkIG9u
IHRoZSBjb250ZXh0IGlkbC4KKwogMjAxNS0wMS0yNiAgQnl1bmdzZW9uIFNoaW4gIDxzdW4uc2hp
bkBsZ2UuY29tPgogCiAgICAgICAgIEZpeCBCb3JkZXItcmFkaXVzIGNsaXBwaW5nIGlzc3VlIG9u
IGEgY29tcG9zaXRlZCBkZXNjZW5kYW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3OTE0
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJFWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNs
dWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXRMaW5lYXIu
aCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0LmgiCisjaW5jbHVkZSAiT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgorI2luY2x1
ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
IgorI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKKyNpbmNsdWRlICJXZWJHTERl
YnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
V2ViR0xRdWVyeS5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldlYkdM
U3luYy5oIgpAQCAtNzUxLDYgKzc2MywxMjkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpiaW5kVmVydGV4QQogICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhBcnJheSk7CiB9CiAKK1dlYkdM
RXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJL
SVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9leHRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAg
ICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZs
b2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQu
Z2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCisgICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikK
KyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKKyAgICB9CisgICAgaWYgKChl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9h
dGMiKSkKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRo
aXMpKSB7CisgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKQorICAgICAg
ICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKChlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQorICAgICAg
ICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAg
ICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQorICAgICAgICAgICAgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpCisgICAgICAgICYmIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQorICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+
KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQo
KTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGlj
c0NvbnRleHQzRCgpKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CisgICAgfQorICAgIGlm
IChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKKyAgICAgICAgICAg
IGlmICghbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQorICAgICAgICAgICAgICAgIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bz4odGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvLmdl
dCgpOworICAgICAgICB9CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
R0xfZGVidWdfc2hhZGVycyIpCisgICAgICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7Cisg
ICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCisgICAgICAgICAgICAgICAgbV93
ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBpZiAobV9pc1BlbmRpbmdQb2xp
Y3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5l
YXIiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpOworICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfYXRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6
c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2Rl
cHRoX3RleHR1cmUiKTsKKyAgICAKKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygp
KSB7CisgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDE3OTE0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2
MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFy
cmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogdmVydGV4QXJyYXkpOworICAgIAorICAgIC8q
IEV4dGVuc2lvbnMgKi8KKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9uKiBnZXRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgogCisjaW5jbHVkZSAiQU5HTEVJbnN0YW5jZWRBcnJheXMuaCIKKyNpbmNsdWRl
ICJFWFRCbGVuZE1pbk1heC5oIgorI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgorI2luY2x1ZGUg
IkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuaCIKKyNpbmNsdWRlICJFWFRzUkdCLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CisjaW5jbHVkZSAiT0VTRWxlbWVudEluZGV4VWludC5oIgorI2luY2x1ZGUgIk9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJP
RVNUZXh0dXJlRmxvYXRMaW5lYXIuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0Lmgi
CisjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oIgorI2luY2x1ZGUgIk9FU1Zl
cnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5o
IgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIgorI2luY2x1ZGUgIldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCisjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mby5oIgorI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xE
ZXB0aFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCisjaW5jbHVkZSAi
V2ViR0xMb3NlQ29udGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNz
ZWRDYW52YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCkBAIC00
MCw2ICs2MywyMjQgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nvbgog
ewogfQogCisKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpIHsKKyAgICAg
ICAgaWYgKCFtX2V4dEJsZW5kTWluTWF4KSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOworICAgICAg
ICAgICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5NYXg+
KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4LmdldCgp
OworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIkVYVF9zUkdCIikKKyAg
ICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JH
QiIpKSB7CisgICAgICAgIGlmICghbV9leHRzUkdCKSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NSR0IiKTsKKyAgICAgICAg
ICAgIG1fZXh0c1JHQiA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUc1JHQj4odGhpcyk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJFWFRfZnJhZ19kZXB0aCIpCisgICAgICAgICYmIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkgeworICAg
ICAgICBpZiAoIW1fZXh0RnJhZ0RlcHRoKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAg
ICAgIG1fZXh0RnJhZ0RlcHRoID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRGcmFnRGVwdGg+KHRoaXMp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEZyYWdEZXB0aC5nZXQoKTsKKyAgICB9
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpKSkgeworICAgICAgICBpZiAoIW1f
ZXh0U2hhZGVyVGV4dHVyZUxPRCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAg
ICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKKyAgICAgICAgJiYg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKSkgeworICAgICAgICBpZiAoIW1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykgewor
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgICAgICAgICAgbV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNTdGFuZGFyZERlcml2YXRpdmVzPih0aGlz
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJl
X2Zsb2F0IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxv
YXQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxv
YXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpCisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikpIHsKKyAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdExpbmVh
cikgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
dGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
LmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICBpZiAoIW1f
b2VzVGV4dHVyZUhhbGZGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVy
ZUhhbGZGbG9hdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCisgICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiKSkgeworICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgeworICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXI+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9FU1ZlcnRleEFycmF5T2JqZWN0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbV9vZXNWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVpbnQpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0VsZW1lbnRJbmRleFVpbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KHRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29lc0VsZW1lbnRJbmRleFVpbnQuZ2V0KCk7CisgICAgfQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfbG9zZV9jb250ZXh0IikpIHsKKyAgICAg
ICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCisgICAgICAgICAgICBtX3dlYmdsTG9zZUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KHRoaXMpOworICAgICAgICBy
ZXR1cm4gbV93ZWJnbExvc2VDb250ZXh0LmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKQor
ICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhpcykpIHsK
KyAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCisgICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM+KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlQVRDLmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCisgICAgICAgICYmIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAgIGlm
ICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4odGhpcyk7
CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOworICAg
IH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUi
KQorICAgICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4
dDNEKCkpKSB7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgeworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSAmJiBzdXBwb3J0c0RyYXdC
dWZmZXJzKCkpIHsKKyAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZlcnMpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJh
d19idWZmZXJzIik7CisgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX2FuZ2xlSW5zdGFuY2VkQXJy
YXlzKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KHRo
aXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5m
byIpKSB7CisgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbykKKyAgICAg
ICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdSZW5kZXJlckluZm8+KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQorICAgICAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQor
ICAgICAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdTaGFkZXJzPih0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdT
aGFkZXJzLmdldCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRy
OworfQorCitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBp
ZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIAorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21pbm1h
eCIpOworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9zUkdCIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9zUkdCIik7CisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJl
X2hhbGZfZmxvYXQiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpOworICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192
ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9z
ZV9jb250ZXh0Iik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hdGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChn
cmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhf
dGV4dHVyZSIpOworICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyIpOworICAgIGlmIChBTkdMRUluc3RhbmNlZEFy
cmF5czo6c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CisgICAgCisgICAgaWYgKGFsbG93UHJpdmlsZWdlZEV4dGVuc2lvbnMo
KSkgeworICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAkocmV2aXNpb24gMTc4OTc1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkg
QEAgcHVibGljOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCos
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9u
KiBnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDE3
ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk1LDYwICszMDk1LDYgQEAgU3RyaW5nIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYQogICAgIHJldHVybiBlbnN1cmVOb3ROdWxs
KHNoYWRlci0+Z2V0U291cmNlKCkpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKLXsKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7Ci0KLSAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJFWFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NS
R0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9F
WFRfZnJhZ19kZXB0aCIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfZnJhZ19kZXB0aCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2Zsb2F0IikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VT
X3RleHR1cmVfZmxvYXRfbGluZWFyIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB8fCBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOwotICAgIGlmIChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlmIChXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJlIik7Ci0gICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMo
KSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYg
KEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCi0gICAgICAgIHJlc3VsdC5h
cHBlbmQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLQotICAgIGlmIChhbGxvd1ByaXZpbGVn
ZWRFeHRlbnNpb25zKCkpIHsKLSAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShy
ZXZpc2lvbiAxNzg5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJs
aWM6CiAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJHTENv
bnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIEdDM0RlbnVtIGdl
dEVycm9yKCk7Ci0gICAgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHZpcnR1YWwgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpID0gMDsKICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJHTEdldEluZm8gZ2V0UGFyYW1ldGVy
KEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFBy
b2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJH
TFNoYWRlclByZWNpc2lvbkZvcm1hdD4gZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVt
IHNoYWRlclR5cGUsIEdDM0RlbnVtIHByZWNpc2lvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgV2ViR0xH
ZXRJbmZvIGdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
KiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJv
Z3JhbSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMzNSwxMCArMzM1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwg
R0MzRHVpbnQgZGl2aXNvcik7CiAKIHByb3RlY3RlZDoKLVdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoSFRNTENhbnZhc0VsZW1lbnQqLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci1X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENh
bnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogCi1wcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERy
YXdCdWZmZXJzOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTM1MCw4ICszNDksOCBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKICAg
ICBmcmllbmQgY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAotdm9pZCBpbml0aWFs
aXplTmV3Q29udGV4dCgpOwotdm9pZCBzZXR1cEZsYWdzKCk7CisgICAgdm9pZCBpbml0aWFsaXpl
TmV3Q29udGV4dCgpOworICAgIHZvaWQgc2V0dXBGbGFncygpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MTksMTQgKzQxOSw2IEBAIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgY29u
c3QgR0xlbnVtIFNURU5DSUxfSU5ERVg4ICAgICAgICAgICAgICAgICA9IDB4OEQ0ODsKICAgICBj
b25zdCBHTGVudW0gREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgID0gMHg4NEY5OwogCi0g
ICAgY29uc3QgR0xlbnVtIFNSR0JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMHg4QzQwOwotICAgIGNvbnN0IEdMZW51bSBTUkdCX0FMUEhBX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4OEM0MjsKLSAgICBjb25zdCBHTGVudW0gU1JHQjhfQUxQ
SEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDhDNDM7Ci0gICAgY29uc3Qg
R0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUICAgID0gMHg4
MjEwOwotCi0gICAgY29uc3QgR0xlbnVtIE1JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICA9
IDB4ODAwNzsKLSAgICBjb25zdCBHTGVudW0gTUFYX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHg4MDA4OwotCiAgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9XSURUSCAgICAgICAg
ICAgICA9IDB4OEQ0MjsKICAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX0hFSUdIVCAgICAg
ICAgICAgID0gMHg4RDQzOwogICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfSU5URVJOQUxf
Rk9STUFUICAgPSAweDhENDQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzkxNTcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMS0y
NiAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgorCisJCVdlYkdMMjogRGlzYWJs
ZSB2YXJpb3VzIGV4dGVuc2lvbnMgb24gV2ViR0wyIGNvbnRleHQgdGhhdCBoYXZlIGJlZW4gcHJv
bW90ZWQgdG8gY29yZS4KKwkJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MDkwNy4KKwkJPHJkYXI6Ly9wcm9ibGVtLzE5NTQ1ODU3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29uc3Rh
bnRzLmh0bWw6CisKIDIwMTUtMDEtMjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gTW9yZSB0ZXN0IGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sCShyZXZpc2lvbiAxNzg5NzUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb25zdGFudHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMzLDE2ICs0MzMsNiBAQCBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VC
R0wgICAgIDogMHg5CiBDT05URVhUX0xPU1RfV0VCR0wgICAgICAgICAgICAgICAgIDogMHg5MjQy
LAogVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA6IDB4OTI0MywKIEJST1dTRVJf
REVGQVVMVF9XRUJHTCAgICAgICAgICAgICAgOiAweDkyNDQsCi0KLS8qIEVYVF9TUkdCIGV4dGVu
c2lvbiAqLwotU1JHQl9FWFQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
NDAsCi1TUkdCX0FMUEhBX0VYVCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0MiwK
LVNSR0I4X0FMUEhBOF9FWFQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzQzLAotRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgOiAweDgyMTAsCi0KLS8qIEVY
VF9CTEVORF9NSU5NQVggZXh0ZW5zaW9uICovCi1NSU5fRVhUIDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODAwNywKLU1BWF9FWFQgOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4MDA4CiB9OwogCiAvLyBDb25zdGFudHMgcmVtb3ZlZCBmcm9tIHRoZSBX
ZWJHTCBzcGVjIGNvbXBhcmVkIHRvIEVTIDIuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245389</attachid>
            <date>2015-01-26 16:41:42 -0800</date>
            <delta_ts>2015-01-27 17:16:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>30029</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTAxLTI2ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wyOiBEaXNhYmxlIHZh
cmlvdXMgZXh0ZW5zaW9ucyBvbiBXZWJHTDIgY29udGV4dCB0aGF0IGhhdmUgYmVlbiBwcm9tb3Rl
ZCB0byBjb3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwOTA3LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk1NDU4NTc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGw6IAorICAgICAgICBSZW1vdmUgc29tZSBl
eHRyYSBleHRlbnNpb24gZW51bXMgdGhhdCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGRlY2xhcmVkIG9u
IHRoZSBjb250ZXh0IGlkbC4KKwogMjAxNS0wMS0yNiAgQnl1bmdzZW9uIFNoaW4gIDxzdW4uc2hp
bkBsZ2UuY29tPgogCiAgICAgICAgIEZpeCBCb3JkZXItcmFkaXVzIGNsaXBwaW5nIGlzc3VlIG9u
IGEgY29tcG9zaXRlZCBkZXNjZW5kYW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3OTE0
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxOSBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJFWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNs
dWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXRMaW5lYXIu
aCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0LmgiCisjaW5jbHVkZSAiT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgorI2luY2x1
ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5o
IgorI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKKyNpbmNsdWRlICJXZWJHTERl
YnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
V2ViR0xRdWVyeS5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldlYkdM
U3luYy5oIgpAQCAtNzUxLDYgKzc2MywxMjkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpiaW5kVmVydGV4QQogICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhBcnJheSk7CiB9CiAKK1dlYkdM
RXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJL
SVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9leHRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAg
ICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZs
b2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQu
Z2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCisgICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikK
KyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKKyAgICB9CisgICAgaWYgKChl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9h
dGMiKSkKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRo
aXMpKSB7CisgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKQorICAgICAg
ICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUFUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKChlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQorICAgICAg
ICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAg
ICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQorICAgICAgICAgICAgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQy5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpCisgICAgICAgICYmIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQorICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+
KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQo
KTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGlj
c0NvbnRleHQzRCgpKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CisgICAgfQorICAgIGlm
IChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKKyAgICAgICAgICAg
IGlmICghbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQorICAgICAgICAgICAgICAgIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bz4odGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvLmdl
dCgpOworICAgICAgICB9CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
R0xfZGVidWdfc2hhZGVycyIpCisgICAgICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7Cisg
ICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCisgICAgICAgICAgICAgICAgbV93
ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBpZiAobV9pc1BlbmRpbmdQb2xp
Y3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5l
YXIiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7
CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdCIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpOworICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfYXRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6
c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIik7CisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0
ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2Rl
cHRoX3RleHR1cmUiKTsKKyAgICAKKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygp
KSB7CisgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJH
TF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDE3OTE0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2
MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFy
cmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheShX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KiB2ZXJ0ZXhBcnJheSk7CiAgICAgdm9pZCBiaW5kVmVydGV4
QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogdmVydGV4QXJyYXkpOworICAgIAorICAgIC8q
IEV4dGVuc2lvbnMgKi8KKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9uKiBnZXRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgogCisjaW5jbHVkZSAiQU5HTEVJbnN0YW5jZWRBcnJheXMuaCIKKyNpbmNsdWRl
ICJFWFRCbGVuZE1pbk1heC5oIgorI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgorI2luY2x1ZGUg
IkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuaCIKKyNpbmNsdWRlICJFWFRzUkdCLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CisjaW5jbHVkZSAiT0VTRWxlbWVudEluZGV4VWludC5oIgorI2luY2x1ZGUgIk9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKKyNpbmNsdWRlICJP
RVNUZXh0dXJlRmxvYXRMaW5lYXIuaCIKKyNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0Lmgi
CisjaW5jbHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oIgorI2luY2x1ZGUgIk9FU1Zl
cnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5o
IgorI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIgorI2luY2x1ZGUgIldl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgiCisjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mby5oIgorI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xE
ZXB0aFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTERyYXdCdWZmZXJzLmgiCisjaW5jbHVkZSAi
V2ViR0xMb3NlQ29udGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNz
ZWRDYW52YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCkBAIC00
MCw2ICs2MywyMjQgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nvbgog
ewogfQogCisKK1dlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpIHsKKyAgICAg
ICAgaWYgKCFtX2V4dEJsZW5kTWluTWF4KSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOworICAgICAg
ICAgICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5NYXg+
KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4LmdldCgp
OworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIkVYVF9zUkdCIikKKyAg
ICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JH
QiIpKSB7CisgICAgICAgIGlmICghbV9leHRzUkdCKSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NSR0IiKTsKKyAgICAgICAg
ICAgIG1fZXh0c1JHQiA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUc1JHQj4odGhpcyk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJFWFRfZnJhZ19kZXB0aCIpCisgICAgICAgICYmIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkgeworICAg
ICAgICBpZiAoIW1fZXh0RnJhZ0RlcHRoKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAg
ICAgIG1fZXh0RnJhZ0RlcHRoID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRGcmFnRGVwdGg+KHRoaXMp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4dEZyYWdEZXB0aC5nZXQoKTsKKyAgICB9
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpKSkgeworICAgICAgICBpZiAoIW1f
ZXh0U2hhZGVyVGV4dHVyZUxPRCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAg
ICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJf
YW5pc290cm9waWMiKSkgeworICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgICAgICBt
X2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9l
eHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKKyAgICAgICAgJiYg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKSkgeworICAgICAgICBpZiAoIW1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcykgewor
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOworICAgICAgICAgICAgbV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNTdGFuZGFyZERlcml2YXRpdmVzPih0aGlz
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJl
X2Zsb2F0IikKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CisgICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxv
YXQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxv
YXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4odGhpcyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOworICAgIH0KKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpCisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikpIHsKKyAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdExpbmVh
cikgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
dGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
LmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICBpZiAoIW1f
b2VzVGV4dHVyZUhhbGZGbG9hdCkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4odGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVy
ZUhhbGZGbG9hdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCisgICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiKSkgeworICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgeworICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXI+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAg
ICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9FU1ZlcnRleEFycmF5T2JqZWN0Pih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbV9vZXNWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVpbnQpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0VsZW1lbnRJbmRleFVpbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KHRoaXMpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29lc0VsZW1lbnRJbmRleFVpbnQuZ2V0KCk7CisgICAgfQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfbG9zZV9jb250ZXh0IikpIHsKKyAgICAg
ICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCisgICAgICAgICAgICBtX3dlYmdsTG9zZUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KHRoaXMpOworICAgICAgICBy
ZXR1cm4gbV93ZWJnbExvc2VDb250ZXh0LmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKQor
ICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhpcykpIHsK
KyAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCisgICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM+KHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlQVRDLmdldCgpOworICAgIH0KKyAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCisgICAgICAgICYmIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAgIGlm
ICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmdldCgpOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZVMzVEMpCisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVT
M1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4odGhpcyk7
CisgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOworICAg
IH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUi
KQorICAgICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4
dDNEKCkpKSB7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgeworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKKyAgICB9CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJXRUJHTF9kcmF3X2J1ZmZlcnMiKSAmJiBzdXBwb3J0c0RyYXdC
dWZmZXJzKCkpIHsKKyAgICAgICAgaWYgKCFtX3dlYmdsRHJhd0J1ZmZlcnMpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJh
d19idWZmZXJzIik7CisgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KHRoaXMpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgaWYgKCFtX2FuZ2xlSW5zdGFuY2VkQXJy
YXlzKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KHRo
aXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzLmdl
dCgpOworICAgIH0KKyAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5m
byIpKSB7CisgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbykKKyAgICAg
ICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdSZW5kZXJlckluZm8+KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQorICAgICAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQor
ICAgICAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdTaGFkZXJzPih0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdT
aGFkZXJzLmdldCgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxscHRy
OworfQorCitWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRl
ZEV4dGVuc2lvbnMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAKKyAgICBp
ZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIAorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2JsZW5kX21pbm1h
eCIpOworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF9zUkdCIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9zUkdCIik7CisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOworICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJl
X2hhbGZfZmxvYXQiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpOworICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192
ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQorICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9z
ZV9jb250ZXh0Iik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9hdGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfY29tcHJlc3Nl
ZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChn
cmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhf
dGV4dHVyZSIpOworICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RyYXdfYnVmZmVycyIpOworICAgIGlmIChBTkdMRUluc3RhbmNlZEFy
cmF5czo6c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CisgICAgCisgICAgaWYgKGFsbG93UHJpdmlsZWdlZEV4dGVuc2lvbnMo
KSkgeworICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAkocmV2aXNpb24gMTc4OTc1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkg
QEAgcHVibGljOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCos
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFdlYkdMRXh0ZW5zaW9u
KiBnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDE3
ODk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk1LDYwICszMDk1LDYgQEAgU3RyaW5nIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYQogICAgIHJldHVybiBlbnN1cmVOb3ROdWxs
KHNoYWRlci0+Z2V0U291cmNlKCkpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKLXsKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7Ci0KLSAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJFWFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NS
R0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9F
WFRfZnJhZ19kZXB0aCIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfZnJhZ19kZXB0aCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2Zsb2F0IikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VT
X3RleHR1cmVfZmxvYXRfbGluZWFyIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikp
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzIikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB8fCBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRf
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
S0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOwotICAgIGlmIChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlmIChXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJlIik7Ci0gICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMo
KSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYg
KEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCi0gICAgICAgIHJlc3VsdC5h
cHBlbmQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLQotICAgIGlmIChhbGxvd1ByaXZpbGVn
ZWRFeHRlbnNpb25zKCkpIHsKLSAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VGV4UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCShy
ZXZpc2lvbiAxNzg5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJs
aWM6CiAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJHTENv
bnRleHRBdHRyaWJ1dGVzPiBnZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIEdDM0RlbnVtIGdl
dEVycm9yKCk7Ci0gICAgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHZpcnR1YWwgV2ViR0xFeHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpID0gMDsKICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJHTEdldEluZm8gZ2V0UGFyYW1ldGVy
KEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFBy
b2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlcklu
Zm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJH
TFNoYWRlclByZWNpc2lvbkZvcm1hdD4gZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDM0RlbnVt
IHNoYWRlclR5cGUsIEdDM0RlbnVtIHByZWNpc2lvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKTsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSA9IDA7CiAgICAgV2ViR0xH
ZXRJbmZvIGdldFRleFBhcmFtZXRlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV2ViR0xHZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
KiwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxXZWJHTFVuaWZvcm1Mb2NhdGlvbj4gZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJv
Z3JhbSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMzNSwxMCArMzM1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwg
R0MzRHVpbnQgZGl2aXNvcik7CiAKIHByb3RlY3RlZDoKLVdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoSFRNTENhbnZhc0VsZW1lbnQqLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci1X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50KiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENh
bnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogCi1wcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERy
YXdCdWZmZXJzOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTM1MCw4ICszNDksOCBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjazsKICAg
ICBmcmllbmQgY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAotdm9pZCBpbml0aWFs
aXplTmV3Q29udGV4dCgpOwotdm9pZCBzZXR1cEZsYWdzKCk7CisgICAgdm9pZCBpbml0aWFsaXpl
TmV3Q29udGV4dCgpOworICAgIHZvaWQgc2V0dXBGbGFncygpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5pZGwJKHJldmlzaW9uIDE3ODk3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MTksMTQgKzQxOSw2IEBAIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgY29u
c3QgR0xlbnVtIFNURU5DSUxfSU5ERVg4ICAgICAgICAgICAgICAgICA9IDB4OEQ0ODsKICAgICBj
b25zdCBHTGVudW0gREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgID0gMHg4NEY5OwogCi0g
ICAgY29uc3QgR0xlbnVtIFNSR0JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMHg4QzQwOwotICAgIGNvbnN0IEdMZW51bSBTUkdCX0FMUEhBX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDB4OEM0MjsKLSAgICBjb25zdCBHTGVudW0gU1JHQjhfQUxQ
SEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDhDNDM7Ci0gICAgY29uc3Qg
R0xlbnVtIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUICAgID0gMHg4
MjEwOwotCi0gICAgY29uc3QgR0xlbnVtIE1JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICA9
IDB4ODAwNzsKLSAgICBjb25zdCBHTGVudW0gTUFYX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMHg4MDA4OwotCiAgICAgY29uc3QgR0xlbnVtIFJFTkRFUkJVRkZFUl9XSURUSCAgICAgICAg
ICAgICA9IDB4OEQ0MjsKICAgICBjb25zdCBHTGVudW0gUkVOREVSQlVGRkVSX0hFSUdIVCAgICAg
ICAgICAgID0gMHg4RDQzOwogICAgIGNvbnN0IEdMZW51bSBSRU5ERVJCVUZGRVJfSU5URVJOQUxf
Rk9STUFUICAgPSAweDhENDQ7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzkxNTcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMS0y
NiAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMMjog
RGlzYWJsZSB2YXJpb3VzIGV4dGVuc2lvbnMgb24gV2ViR0wyIGNvbnRleHQgdGhhdCBoYXZlIGJl
ZW4gcHJvbW90ZWQgdG8gY29yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MDkwNy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5NTQ1ODU3Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvY29uc3RhbnRzLmh0bWw6CisKIDIwMTUtMDEtMjYgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gTW9yZSB0ZXN0IGdhcmRlbmlu
Zy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnN0YW50cy5odG1s
CShyZXZpc2lvbiAxNzg5NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb25z
dGFudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDE2ICs0MzMsNiBAQCBVTlBBQ0tfUFJF
TVVMVElQTFlfQUxQSEFfV0VCR0wgICAgIDogMHg5CiBDT05URVhUX0xPU1RfV0VCR0wgICAgICAg
ICAgICAgICAgIDogMHg5MjQyLAogVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA6
IDB4OTI0MywKIEJST1dTRVJfREVGQVVMVF9XRUJHTCAgICAgICAgICAgICAgOiAweDkyNDQsCi0K
LS8qIEVYVF9TUkdCIGV4dGVuc2lvbiAqLwotU1JHQl9FWFQgOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhDNDAsCi1TUkdCX0FMUEhBX0VYVCA6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEM0MiwKLVNSR0I4X0FMUEhBOF9FWFQgOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4QzQzLAotRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQg
OiAweDgyMTAsCi0KLS8qIEVYVF9CTEVORF9NSU5NQVggZXh0ZW5zaW9uICovCi1NSU5fRVhUIDog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNywKLU1BWF9FWFQgOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CiB9OwogCiAvLyBDb25zdGFudHMg
cmVtb3ZlZCBmcm9tIHRoZSBXZWJHTCBzcGVjIGNvbXBhcmVkIHRvIEVTIDIuMAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>