<?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>127252</bug_id>
          
          <creation_ts>2014-01-19 10:52:04 -0800</creation_ts>
          <short_desc>Use a strong enum for HTMLTreeBuilder::InsertionMode</short_desc>
          <delta_ts>2014-01-20 02:25:16 -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>New Bugs</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969605</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-19 10:52:04 -0800</bug_when>
    <thetext>Use a strong enum for HTMLTreeBuilder::InsertionMode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969606</commentid>
    <comment_count>1</comment_count>
      <attachid>221589</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-19 10:53:06 -0800</bug_when>
    <thetext>Created attachment 221589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969608</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-19 10:56:07 -0800</bug_when>
    <thetext>Committed r162293: &lt;http://trac.webkit.org/changeset/162293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969642</commentid>
    <comment_count>3</comment_count>
      <attachid>221589</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-19 14:11:22 -0800</bug_when>
    <thetext>Comment on attachment 221589
Patch

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

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1037
&gt; -        ASSERT(InColumnGroupMode);
&gt; +        ASSERT(InsertionMode::InColumnGroup);

It broke the Apple Windows build:

     1&gt;..\html\parser\HTMLTreeBuilder.cpp(1037): error C2675: unary &apos;!&apos; : &apos;WebCore::HTMLTreeBuilder::InsertionMode&apos; does not define this operator or a conversion to a type acceptable to the predefined operator
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\WebCore.vcxproj\WebCore.vcxproj&quot; (Build target(s)) -- FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969778</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-20 02:25:16 -0800</bug_when>
    <thetext>fix landed in http://trac.webkit.org/changeset/162298</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221589</attachid>
            <date>2014-01-19 10:53:06 -0800</date>
            <delta_ts>2014-01-19 14:11:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127252-20140119105305.patch</filename>
            <type>text/plain</type>
            <size>56504</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhYjNiOWU2M2QwZDNk
YzA3MDhjZTkyMTQ0MzY3ZTIwMDYxMTk1OS4uNjcxM2Y1MjA3MzY2NDJlOTNkZTkwZGFhNTgwZGZh
N2E3N2Q5OTY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE0LTAxLTE5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGEgc3Ryb25n
IGVudW0gZm9yIEhUTUxUcmVlQnVpbGRlcjo6SW5zZXJ0aW9uTW9kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MjUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1
aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0Zv
ckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1w
bGF0ZVN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OmNsb3NlVGhlQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
Rm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Nh
cHRpb25FbmRUYWdGb3JJbkNhcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVHJFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckluaXRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisKKzIwMTQtMDEtMTkgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBDb252ZXJ0IExv
YWRlclJ1bkxvb3BDRi5jcHAgYW5kIFdlYkNvcmVUaHJlYWRSdW4uY3BwIG92ZXIgdG8gbW9kZXJu
IHRocmVhZGluZyBwcmltaXRpdmVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjcyNTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAKaW5kZXggMzQ2NTNlNzNkMGNmNWFiMTg1NWFmMDdjNmUwMjQ4ZGZj
NzVlNDVkMi4uMTgyZWY0Yzg4YmE4YWM2NjZhYjE0YmFlYjM0NzA2MGVjODYxZDQ1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNzUs
OCArMjc1LDggQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50
UGFyc2VyJiBwYXJzZXIsIEhUTUxEb2N1bWVudCYgZG9jdW0KICAgICAsIG1faXNBdHRhY2hlZCh0
cnVlKQogI2VuZGlmCiAgICAgLCBtX3RyZWUoZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3ks
IG9wdGlvbnMubWF4aW11bURPTVRyZWVEZXB0aCkKLSAgICAsIG1faW5zZXJ0aW9uTW9kZShJbml0
aWFsTW9kZSkKLSAgICAsIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlKEluaXRpYWxNb2RlKQorICAg
ICwgbV9pbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluaXRpYWwpCisgICAgLCBtX29yaWdp
bmFsSW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbml0aWFsKQogICAgICwgbV9zaG91bGRT
a2lwTGVhZGluZ05ld2xpbmUoZmFsc2UpCiAgICAgLCBtX3BhcnNlcihwYXJzZXIpCiAgICAgLCBt
X3NjcmlwdFRvUHJvY2Vzc1N0YXJ0UG9zaXRpb24odW5pbml0aWFsaXplZFBvc2l0aW9uVmFsdWUx
KCkpCkBAIC0yOTMsOCArMjkzLDggQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIo
SFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQmIGYKICNlbmRpZgog
ICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50KQogICAgICwg
bV90cmVlKGZyYWdtZW50LCBwYXJzZXJDb250ZW50UG9saWN5LCBvcHRpb25zLm1heGltdW1ET01U
cmVlRGVwdGgpCi0gICAgLCBtX2luc2VydGlvbk1vZGUoSW5pdGlhbE1vZGUpCi0gICAgLCBtX29y
aWdpbmFsSW5zZXJ0aW9uTW9kZShJbml0aWFsTW9kZSkKKyAgICAsIG1faW5zZXJ0aW9uTW9kZShJ
bnNlcnRpb25Nb2RlOjpJbml0aWFsKQorICAgICwgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUoSW5z
ZXJ0aW9uTW9kZTo6SW5pdGlhbCkKICAgICAsIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lKGZh
bHNlKQogICAgICwgbV9wYXJzZXIocGFyc2VyKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFy
dFBvc2l0aW9uKHVuaW5pdGlhbGl6ZWRQb3NpdGlvblZhbHVlMSgpKQpAQCAtMzEyLDcgKzMxMiw3
IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYg
cGFyc2VyLCBEb2N1bWVudEZyYWdtZW50JiBmCiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVO
VCkKICAgICAgICAgaWYgKGNvbnRleHRFbGVtZW50LT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkK
LSAgICAgICAgICAgIG1fdGVtcGxhdGVJbnNlcnRpb25Nb2Rlcy5hcHBlbmQoVGVtcGxhdGVDb250
ZW50c01vZGUpOworICAgICAgICAgICAgbV90ZW1wbGF0ZUluc2VydGlvbk1vZGVzLmFwcGVuZChJ
bnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRlbnRzKTsKICNlbmRpZgogCiAgICAgICAgIHJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAg
ICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQobV90
cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSkKICAgICAgICAgICAgICYmICFIVE1MRWxlbWVudFN0YWNr
Ojppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkp
OwogCi0gICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJS
ZXBsYWNlbWVudChtX2luc2VydGlvbk1vZGUgPT0gVGV4dE1vZGUgfHwgaW5Gb3JlaWduQ29udGVu
dCk7CisgICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJS
ZXBsYWNlbWVudChtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6VGV4dCB8fCBpbkZv
cmVpZ25Db250ZW50KTsKICAgICAgICAgbV9wYXJzZXIudG9rZW5pemVyKCktPnNldFNob3VsZEFs
bG93Q0RBVEEoaW5Gb3JlaWduQ29udGVudCk7CiAgICAgfQogCkBAIC00MjEsMTIgKzQyMSwxMiBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
RE9DVFlQRSk7Ci0gICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFsTW9kZSkgeworICAg
IGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6SW5pdGlhbCkgewogICAgICAg
ICBtX3RyZWUuaW5zZXJ0RG9jdHlwZSh0b2tlbik7Ci0gICAgICAgIHNldEluc2VydGlvbk1vZGUo
QmVmb3JlSFRNTE1vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6
OkJlZm9yZUhUTUwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2luc2VydGlv
bk1vZGUgPT0gSW5UYWJsZVRleHRNb2RlKSB7CisgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJ
bnNlcnRpb25Nb2RlOjpJblRhYmxlVGV4dCkgewogICAgICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRl
eHQoKTsKICAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY3Nyw3ICs2NzcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wSFRNTEJvZHlFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChtX3RyZWUu
b3BlbkVsZW1lbnRzKCktPnRvcCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aHRtbEVsZW1l
bnQoKSk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7Ci0gICAgICAg
IHNldEluc2VydGlvbk1vZGUoSW5GcmFtZXNldE1vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25N
b2RlKEluc2VydGlvbk1vZGU6OkluRnJhbWVzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGFkZHJlc3NUYWcKQEAgLTgwNyw3ICs4MDcsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxU
b2tlbiogdG9rZW4pCiAgICAgICAgICAgICBwcm9jZXNzRmFrZUVuZFRhZyhwVGFnKTsKICAgICAg
ICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICAgICAgbV9mcmFtZXNldE9r
ID0gZmFsc2U7Ci0gICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOworICAgICAg
ICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluVGFibGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGltYWdlVGFnKSB7CkBAIC04NTgs
NyArODU4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9k
eShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgbV9wYXJzZXIudG9rZW5pemVy
KCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKICAgICAgICAgbV9vcmln
aW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAgICAgICAgIG1fZnJhbWVzZXRP
ayA9IGZhbHNlOwotICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKFRleHRNb2RlKTsKKyAgICAgICAg
c2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpUZXh0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSB4bXBUYWcpIHsKQEAgLTg4NSwxNSArODg1
LDE1IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0
b2tlbik7CiAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwotICAgICAgICBpZiAobV9pbnNl
cnRpb25Nb2RlID09IEluVGFibGVNb2RlCi0gICAgICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2Rl
ID09IEluQ2FwdGlvbk1vZGUKLSAgICAgICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gSW5D
b2x1bW5Hcm91cE1vZGUKLSAgICAgICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gSW5UYWJs
ZUJvZHlNb2RlCi0gICAgICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEluUm93TW9kZQot
ICAgICAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBJbkNlbGxNb2RlKQotICAgICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShJblNlbGVjdEluVGFibGVNb2RlKTsKKyAgICAgICAgaWYgKG1f
aW5zZXJ0aW9uTW9kZSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlCisgICAgICAgICAgICB8fCBt
X2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6SW5DYXB0aW9uCisgICAgICAgICAgICB8
fCBtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Db2x1bW5Hcm91cAorICAgICAg
ICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5Cisg
ICAgICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3cKKyAg
ICAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNlbGwpCisg
ICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluU2VsZWN0SW5UYWJs
ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5TZWxlY3RN
b2RlKTsKKyAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5TZWxl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9w
dGdyb3VwVGFnIHx8IHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CkBAIC05NTIsOCArOTUy
LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1wbGF0ZVN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50
cygpLT5hcHBlbmRNYXJrZXIoKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4p
OwotICAgIG1fdGVtcGxhdGVJbnNlcnRpb25Nb2Rlcy5hcHBlbmQoVGVtcGxhdGVDb250ZW50c01v
ZGUpOwotICAgIHNldEluc2VydGlvbk1vZGUoVGVtcGxhdGVDb250ZW50c01vZGUpOworICAgIG1f
dGVtcGxhdGVJbnNlcnRpb25Nb2Rlcy5hcHBlbmQoSW5zZXJ0aW9uTW9kZTo6VGVtcGxhdGVDb250
ZW50cyk7CisgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRl
bnRzKTsKIH0KIAogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1wbGF0ZUVuZFRhZyhB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQpAQCAtOTk4LDE0ICs5OTgsMTQgQEAgYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXAoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7
Ci0gICAgc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlTW9kZSk7CisgICAgc2V0SW5zZXJ0aW9uTW9k
ZShJbnNlcnRpb25Nb2RlOjpJblRhYmxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
dG9rZW5pemF0aW9uLmh0bWwjY2xvc2UtdGhlLWNlbGwKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpj
bG9zZVRoZUNlbGwoKQogewotICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5DZWxsTW9k
ZSk7CisgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNlbGwp
OwogICAgIGlmIChtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0ZFRhZykpIHsK
ICAgICAgICAgQVNTRVJUKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0aFRh
ZykpOwogICAgICAgICBwcm9jZXNzRmFrZUVuZFRhZyh0ZFRhZyk7CkBAIC0xMDEzLDcgKzEwMTMs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2xvc2VUaGVDZWxsKCkKICAgICB9CiAgICAgQVNT
RVJUKG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoVGFnKSk7CiAgICAgcHJv
Y2Vzc0Zha2VFbmRUYWcodGhUYWcpOwotICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5S
b3dNb2RlKTsKKyAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6Oklu
Um93KTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFi
bGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKQEAgLTEwMjMsMzEgKzEwMjMsMzEgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3BVbnRpbFRhYmxlU2Nv
cGVNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpLT5h
cHBlbmRNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsK
LSAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbkNhcHRpb25Nb2RlKTsKKyAgICAgICAgc2V0SW5z
ZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkNhcHRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGNvbGdyb3VwVGFnKSB7CiAgICAgICAgIG1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNjb3BlTWFya2VyKCk7CiAgICAgICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7Ci0gICAgICAgIHNldEluc2VydGlvbk1v
ZGUoSW5Db2x1bW5Hcm91cE1vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlv
bk1vZGU6OkluQ29sdW1uR3JvdXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0
b2tlbi0+bmFtZSgpID09IGNvbFRhZykgewogICAgICAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKGNv
bGdyb3VwVGFnKTsKLSAgICAgICAgQVNTRVJUKEluQ29sdW1uR3JvdXBNb2RlKTsKKyAgICAgICAg
QVNTRVJUKEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXApOwogICAgICAgICBwcm9jZXNzU3Rh
cnRUYWcodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc1RhYmxlQm9k
eUNvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50
cygpLT5wb3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmluc2VydEhU
TUxFbGVtZW50KHRva2VuKTsKLSAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlQm9keU1v
ZGUpOworICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFn
KHRva2VuLT5uYW1lKCkpCiAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gdHJUYWcpIHsKICAg
ICAgICAgcHJvY2Vzc0Zha2VTdGFydFRhZyh0Ym9keVRhZyk7Ci0gICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSk7CiAgICAgICAgIHByb2Nlc3NT
dGFydFRhZyh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDk2LDQwICsxMDk2
LDQwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewotICAgIGNhc2UgSW5pdGlh
bE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwor
ICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5pdGlhbDoKKyAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbml0aWFsKTsKICAgICAgICAgZGVmYXVsdEZvcklu
aXRpYWwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgotICAgIGNhc2UgQmVmb3JlSFRNTE1v
ZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQmVmb3JlSFRNTE1vZGUpOwor
ICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QmVmb3JlSFRNTDoKKyAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIVE1MKTsKICAgICAgICAgaWYgKHRv
a2VuLT5uYW1lKCkgPT0gaHRtbFRhZykgewogICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxI
dG1sU3RhcnRUYWdCZWZvcmVIVE1MKHRva2VuKTsKLSAgICAgICAgICAgIHNldEluc2VydGlvbk1v
ZGUoQmVmb3JlSGVhZE1vZGUpOworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRp
b25Nb2RlOjpCZWZvcmVIZWFkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCi0g
ICAgY2FzZSBCZWZvcmVIZWFkTW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBCZWZvcmVIZWFkTW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIZWFkOgor
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkJlZm9yZUhl
YWQpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAgICAgICAg
ICBwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KHRva2VuKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBoZWFkVGFnKSB7CiAg
ICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEhlYWRFbGVtZW50KHRva2VuKTsKLSAgICAgICAg
ICAgIHNldEluc2VydGlvbk1vZGUoSW5IZWFkTW9kZSk7CisgICAgICAgICAgICBzZXRJbnNlcnRp
b25Nb2RlKEluc2VydGlvbk1vZGU6OkluSGVhZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0
aHJvdWdoLgotICAgIGNhc2UgSW5IZWFkTW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1v
ZGUoKSA9PSBJbkhlYWRNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluSGVhZDoKKyAg
ICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkhlYWQpOwog
ICAgICAgICBpZiAocHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKHRva2VuKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckluSGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRo
cm91Z2guCi0gICAgY2FzZSBBZnRlckhlYWRNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEFmdGVySGVhZE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJI
ZWFkOgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkFm
dGVySGVhZCk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTEzNywxMiArMTEzNywxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIGlmICh0b2tlbi0+
bmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwog
ICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxCb2R5RWxlbWVudCh0b2tlbik7Ci0gICAgICAg
ICAgICBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOworICAgICAgICAgICAgc2V0SW5zZXJ0
aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkJvZHkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGZyYW1lc2V0VGFnKSB7CiAgICAg
ICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwotICAgICAgICAgICAgc2V0
SW5zZXJ0aW9uTW9kZShJbkZyYW1lc2V0TW9kZSk7CisgICAgICAgICAgICBzZXRJbnNlcnRpb25N
b2RlKEluc2VydGlvbk1vZGU6OkluRnJhbWVzZXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGJhc2VUYWcKQEAgLTExNzAsMTYg
KzExNzAsMTYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNI
VE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHRGb3JBZnRlckhlYWQo
KTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCi0gICAgY2FzZSBJbkJvZHlNb2RlOgotICAgICAg
ICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUpOworICAgIGNhc2UgSW5zZXJ0
aW9uTW9kZTo6SW5Cb2R5OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2Vy
dGlvbk1vZGU6OkluQm9keSk7CiAgICAgICAgIHByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSh0b2tl
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5UYWJsZU1vZGU6Ci0gICAgICAgIEFTU0VS
VChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZU1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9k
ZTo6SW5UYWJsZToKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25N
b2RlOjpJblRhYmxlKTsKICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZSh0b2tlbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5DYXB0aW9uTW9kZToKLSAgICAgICAgQVNTRVJU
KGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1v
ZGU6OkluQ2FwdGlvbjoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRp
b25Nb2RlOjpJbkNhcHRpb24pOwogICAgICAgICBpZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRh
Zyh0b2tlbi0+bmFtZSgpKQogICAgICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRv
a2VuLT5uYW1lKCkpCiAgICAgICAgICAgICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4t
Pm5hbWUoKSkKQEAgLTExOTQsOCArMTE5NCw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBw
cm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluQ29sdW1uR3JvdXBNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IElu
Q29sdW1uR3JvdXBNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXA6
CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Db2x1
bW5Hcm91cCk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTIxNiwxOCArMTIxNiwxOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAg
cHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJblRhYmxl
Qm9keU1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlN
b2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5OgorICAgICAgICBBU1NF
UlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5KTsKICAgICAg
ICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gdHJUYWcpIHsKICAgICAgICAgICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZUJvZHlTY29wZU1hcmtlcigpOyAvLyBIb3cgaXMgdGhl
cmUgZXZlciBhbnl0aGluZyB0byBwb3A/CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVs
ZW1lbnQodG9rZW4pOwotICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOwor
ICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJblJvdyk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzVGFibGVDZWxsQ29udGV4
dFRhZyh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAg
ICAgICAgICAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKHRyVGFnKTsKLSAgICAgICAgICAgIEFTU0VS
VChpbnNlcnRpb25Nb2RlKCkgPT0gSW5Sb3dNb2RlKTsKKyAgICAgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3cpOwogICAgICAgICAgICAgcHJvY2Vz
c1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTI0
NiwxMiArMTI0NiwxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFn
Rm9ySW5UYWJsZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5Sb3dNb2RlOgot
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSk7CisgICAgY2FzZSBJ
bnNlcnRpb25Nb2RlOjpJblJvdzoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJ
bnNlcnRpb25Nb2RlOjpJblJvdyk7CiAgICAgICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWco
dG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9w
VW50aWxUYWJsZVJvd1Njb3BlTWFya2VyKCk7CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRN
TEVsZW1lbnQodG9rZW4pOwotICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbkNlbGxNb2Rl
KTsKKyAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5DZWxsKTsK
ICAgICAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+YXBwZW5kTWFy
a2VyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyNjIsMTQgKzEyNjIs
MTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudE9yVGVt
cGxhdGVDb250ZW50cygpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVCb2R5TW9kZSk7
CisgICAgICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6Oklu
VGFibGVCb2R5KTsKICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJs
ZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5DZWxsTW9kZToKLSAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkNlbGxNb2RlKTsKKyAgICBjYXNlIEluc2VydGlv
bk1vZGU6OkluQ2VsbDoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRp
b25Nb2RlOjpJbkNlbGwpOwogICAgICAgICBpZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0
b2tlbi0+bmFtZSgpKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2Vu
LT5uYW1lKCkpCiAgICAgICAgICAgICB8fCB0b2tlbi0+bmFtZSgpID09IHRyVGFnCkBAIC0xMjg2
LDE4ICsxMjg2LDE4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzU3RhcnRUYWdG
b3JJbkJvZHkodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFmdGVyQm9keU1vZGU6
Ci0gICAgY2FzZSBBZnRlckFmdGVyQm9keU1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25N
b2RlKCkgPT0gQWZ0ZXJCb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJBZnRlckJv
ZHlNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVyQm9keToKKyAgICBjYXNlIElu
c2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJCb2R5OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluc2VydGlvbk1vZGU6OkFmdGVyQm9keSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5z
ZXJ0aW9uTW9kZTo6QWZ0ZXJBZnRlckJvZHkpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9
PSBodG1sVGFnKSB7CiAgICAgICAgICAgICBwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KHRv
a2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzZXRJbnNlcnRp
b25Nb2RlKEluQm9keU1vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1v
ZGU6OkluQm9keSk7CiAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5IZWFkTm9zY3JpcHRNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0
aW9uTW9kZSgpID09IEluSGVhZE5vc2NyaXB0TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2Rl
OjpJbkhlYWROb3NjcmlwdDoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNl
cnRpb25Nb2RlOjpJbkhlYWROb3NjcmlwdCk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09
IGh0bWxUYWcpIHsKICAgICAgICAgICAgIHByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9r
ZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMxOSw4ICsxMzE5LDggQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAg
ICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKICAgICAgICAgcHJvY2Vzc1Rva2VuKHRv
a2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkZyYW1lc2V0TW9kZToKLSAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkZyYW1lc2V0TW9kZSk7CisgICAgY2FzZSBJbnNl
cnRpb25Nb2RlOjpJbkZyYW1lc2V0OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluc2VydGlvbk1vZGU6OkluRnJhbWVzZXQpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9
PSBodG1sVGFnKSB7CiAgICAgICAgICAgICBwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KHRv
a2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNDUsOSArMTM0NSw5IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICNl
bmRpZgogICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBZnRlckZyYW1lc2V0TW9kZToKLSAgICBjYXNlIEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGU6Ci0g
ICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJGcmFtZXNldE1vZGUgfHwgaW5z
ZXJ0aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUpOworICAgIGNhc2UgSW5zZXJ0
aW9uTW9kZTo6QWZ0ZXJGcmFtZXNldDoKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVyQWZ0
ZXJGcmFtZXNldDoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25N
b2RlOjpBZnRlckZyYW1lc2V0IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpB
ZnRlckFmdGVyRnJhbWVzZXQpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFn
KSB7CiAgICAgICAgICAgICBwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KHRva2VuKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzNTgsOCArMTM1OCw4IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgfQog
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJblNl
bGVjdEluVGFibGVNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluU2Vs
ZWN0SW5UYWJsZU1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxl
OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluU2Vs
ZWN0SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGNhcHRpb25UYWcKICAg
ICAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gdGFibGVUYWcKICAgICAgICAgICAgIHx8IGlz
VGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi0+bmFtZSgpKQpAQCAtMTM3Miw4ICsxMzcyLDggQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaAotICAgIGNhc2UgSW5TZWxlY3RNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluU2VsZWN0TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5TZWxlY3RJblRhYmxl
TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdDoKKyAgICAgICAgQVNTRVJU
KGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdCB8fCBpbnNlcnRpb25N
b2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxlKTsKICAgICAgICAgaWYgKHRv
a2VuLT5uYW1lKCkgPT0gaHRtbFRhZykgewogICAgICAgICAgICAgcHJvY2Vzc0h0bWxTdGFydFRh
Z0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDI5LDE0ICsxNDI5
LDE0IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW5UYWJsZVRleHRNb2RlOgorICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZVRleHQ6CiAg
ICAgICAgIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgpOwogICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlOgorICAgIGNhc2UgSW5z
ZXJ0aW9uTW9kZTo6VGV4dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVGVtcGxhdGVDb250ZW50c01vZGU6CisgICAgY2FzZSBJbnNlcnRp
b25Nb2RlOjpUZW1wbGF0ZUNvbnRlbnRzOgogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQog
ICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSB0ZW1wbGF0ZVRhZykgewogICAgICAgICAgICAg
cHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWcodG9rZW4pOwpAQCAtMTQ1MSwyMiArMTQ1MSwyMiBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBJbnNlcnRpb25N
b2RlIGluc2VydGlvbk1vZGUgPSBUZW1wbGF0ZUNvbnRlbnRzTW9kZTsKKyAgICAgICAgSW5zZXJ0
aW9uTW9kZSBpbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6VGVtcGxhdGVDb250ZW50czsK
ICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gZnJhbWVUYWcpCi0gICAgICAgICAgICBpbnNl
cnRpb25Nb2RlID0gSW5GcmFtZXNldE1vZGU7CisgICAgICAgICAgICBpbnNlcnRpb25Nb2RlID0g
SW5zZXJ0aW9uTW9kZTo6SW5GcmFtZXNldDsKICAgICAgICAgZWxzZSBpZiAodG9rZW4tPm5hbWUo
KSA9PSBjb2xUYWcpCi0gICAgICAgICAgICBpbnNlcnRpb25Nb2RlID0gSW5Db2x1bW5Hcm91cE1v
ZGU7CisgICAgICAgICAgICBpbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6SW5Db2x1bW5H
cm91cDsKICAgICAgICAgZWxzZSBpZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi0+
bmFtZSgpKSB8fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkpCi0gICAgICAg
ICAgICBpbnNlcnRpb25Nb2RlID0gSW5UYWJsZU1vZGU7CisgICAgICAgICAgICBpbnNlcnRpb25N
b2RlID0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZTsKICAgICAgICAgZWxzZSBpZiAodG9rZW4tPm5h
bWUoKSA9PSB0clRhZykKLSAgICAgICAgICAgIGluc2VydGlvbk1vZGUgPSBJblRhYmxlQm9keU1v
ZGU7CisgICAgICAgICAgICBpbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZUJv
ZHk7CiAgICAgICAgIGVsc2UgaWYgKGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi0+bmFtZSgp
KSkKLSAgICAgICAgICAgIGluc2VydGlvbk1vZGUgPSBJblJvd01vZGU7CisgICAgICAgICAgICBp
bnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3c7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGluc2VydGlvbk1vZGUgPSBJbkJvZHlNb2RlOworICAgICAgICAgICAgaW5zZXJ0aW9u
TW9kZSA9IEluc2VydGlvbk1vZGU6OkluQm9keTsKIAotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSAhPSBUZW1wbGF0ZUNvbnRlbnRzTW9kZSk7Ci0gICAgICAgIEFTU0VSVChtX3RlbXBsYXRl
SW5zZXJ0aW9uTW9kZXMubGFzdCgpID09IFRlbXBsYXRlQ29udGVudHNNb2RlKTsKKyAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUgIT0gSW5zZXJ0aW9uTW9kZTo6VGVtcGxhdGVDb250ZW50cyk7
CisgICAgICAgIEFTU0VSVChtX3RlbXBsYXRlSW5zZXJ0aW9uTW9kZXMubGFzdCgpID09IEluc2Vy
dGlvbk1vZGU6OlRlbXBsYXRlQ29udGVudHMpOwogICAgICAgICBtX3RlbXBsYXRlSW5zZXJ0aW9u
TW9kZXMubGFzdCgpID0gaW5zZXJ0aW9uTW9kZTsKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShp
bnNlcnRpb25Nb2RlKTsKIApAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRW1p
dCBhIG1vcmUgc3BlY2lmaWMgcGFyc2UgZXJyb3IgYmFzZWQgb24gc3RhY2sgY29udGVudHMuCi0g
ICAgc2V0SW5zZXJ0aW9uTW9kZShBZnRlckJvZHlNb2RlKTsKKyAgICBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OkFmdGVyQm9keSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2
NzAsNDYgKzE2NzAsNDYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9k
ZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICAgICAgICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJl
Y29yZC0+bmV4dCgpOwogICAgICAgICAgICAgICAgICAgICBpdGVtID0gbm9kZVJlY29yZC0+c3Rh
Y2tJdGVtKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoaXRl
bS0+bm9kZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25N
b2RlKEluU2VsZWN0SW5UYWJsZU1vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxlKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBz
ZXRJbnNlcnRpb25Nb2RlKEluU2VsZWN0TW9kZSk7CisgICAgICAgICAgICByZXR1cm4gc2V0SW5z
ZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJblNlbGVjdCk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGl0ZW0tPmhhc1RhZ05hbWUodGRUYWcpIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGhUYWcpKQot
ICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5DZWxsTW9kZSk7CisgICAgICAg
ICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkNlbGwpOwogICAg
ICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZSh0clRhZykpCi0gICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOworICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5Sb3cpOwogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFt
ZSh0Ym9keVRhZykgfHwgaXRlbS0+aGFzVGFnTmFtZSh0aGVhZFRhZykgfHwgaXRlbS0+aGFzVGFn
TmFtZSh0Zm9vdFRhZykpCi0gICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRh
YmxlQm9keU1vZGUpOworICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0
aW9uTW9kZTo6SW5UYWJsZUJvZHkpOwogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShjYXB0
aW9uVGFnKSkKLSAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluQ2FwdGlvbk1v
ZGUpOworICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6
SW5DYXB0aW9uKTsKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7
Ci0gICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbkNvbHVtbkdyb3VwTW9kZSk7
CisgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkNv
bHVtbkdyb3VwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNIVE1MVGFibGVFbGVtZW50KGl0
ZW0tPm5vZGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxl
TW9kZSk7CisgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2Rl
OjpJblRhYmxlKTsKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoaGVhZFRhZykpIHsKICNp
ZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAgICAgIGlmICghbV9mcmFnbWVudENv
bnRleHQuZnJhZ21lbnQoKSB8fCBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudCgpICE9
IGl0ZW0tPm5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJ
bkhlYWRNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNl
cnRpb25Nb2RlOjpJbkhlYWQpOwogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0
aW9uTW9kZShJbkJvZHlNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OkluQm9keSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGl0ZW0tPmhh
c1RhZ05hbWUoYm9keVRhZykpCi0gICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJ
bkJvZHlNb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlv
bk1vZGU6OkluQm9keSk7CiAgICAgICAgIGlmIChpdGVtLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFn
KSkgewotICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5GcmFtZXNldE1vZGUp
OworICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5G
cmFtZXNldCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoaHRtbFRh
ZykpIHsKICAgICAgICAgICAgIGlmIChtX3RyZWUuaGVhZFN0YWNrSXRlbSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEFmdGVySGVhZE1vZGUpOworICAgICAgICAg
ICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkFmdGVySGVhZCk7
CiAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVIZWFkTW9kZSk7CisgICAgICAgICAgICByZXR1
cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpCZWZvcmVIZWFkKTsKICAgICAgICAg
fQogICAgICAgICBpZiAobGFzdCkgewogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwotICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7
CisgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkJv
ZHkpOwogICAgICAgICB9CiAgICAgICAgIG5vZGVSZWNvcmQgPSBub2RlUmVjb3JkLT5uZXh0KCk7
CiAgICAgfQpAQCAtMTcyNSw3ICsxNzI1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9
CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZUJvZHlTY29wZU1h
cmtlcigpOwogICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwotICAgICAgICBz
ZXRJbnNlcnRpb25Nb2RlKEluVGFibGVNb2RlKTsKKyAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJ
bnNlcnRpb25Nb2RlOjpJblRhYmxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
dG9rZW4tPm5hbWUoKSA9PSB0YWJsZVRhZykgewpAQCAtMTc2NCw3ICsxNzY0LDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50T3JUZW1wbGF0ZUNvbnRl
bnRzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSk7CiAgICAgICAgIHByb2Nl
c3NFbmRUYWcodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc3NCw3ICsxNzc0
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNI
VE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHByb2Nlc3NGYWtlRW5kVGFnKHRyVGFnKTsKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUo
KSA9PSBJblRhYmxlQm9keU1vZGUpOworICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5KTsKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tl
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODAxLDcgKzE4MDEsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wVW50aWxQb3BwZWQodG9rZW4tPm5hbWUoKSk7CiAgICAgICAgIG1fdHJl
ZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+Y2xlYXJUb0xhc3RNYXJrZXIoKTsKLSAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShJblJvd01vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OkluUm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
dG9rZW4tPm5hbWUoKSA9PSBib2R5VGFnCkBAIC0xOTkwLDcgKzE5OTAsNyBAQCBib29sIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRpb24oKQogICAgIC8vIEZJ
WE1FOiBwYXJzZSBlcnJvciBpZiAoIW1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05h
bWUoY2FwdGlvblRhZykpCiAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3BVbnRpbFBvcHBl
ZChjYXB0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUuYWN0aXZlRm9ybWF0dGluZ0Vs
ZW1lbnRzKCktPmNsZWFyVG9MYXN0TWFya2VyKCk7Ci0gICAgc2V0SW5zZXJ0aW9uTW9kZShJblRh
YmxlTW9kZSk7CisgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJblRhYmxlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkKICAgICBtX3RyZWUub3BlbkVsZW1l
bnRzKCktPnBvcFVudGlsVGFibGVSb3dTY29wZU1hcmtlcigpOwogICAgIEFTU0VSVChtX3RyZWUu
Y3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKHRyVGFnKSk7CiAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3AoKTsKLSAgICBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVCb2R5TW9kZSk7
CisgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwNDYsMzEgKzIwNDYsMzEgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBBU1NF
UlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgc3dpdGNoIChpbnNl
cnRpb25Nb2RlKCkpIHsKLSAgICBjYXNlIEluaXRpYWxNb2RlOgotICAgICAgICBBU1NFUlQoaW5z
ZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6Oklu
aXRpYWw6CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6
SW5pdGlhbCk7CiAgICAgICAgIGRlZmF1bHRGb3JJbml0aWFsKCk7CiAgICAgICAgIC8vIEZhbGwg
dGhyb3VnaC4KLSAgICBjYXNlIEJlZm9yZUhUTUxNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0
aW9uTW9kZSgpID09IEJlZm9yZUhUTUxNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkJl
Zm9yZUhUTUw6CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9k
ZTo6QmVmb3JlSFRNTCk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpICE9IGhlYWRUYWcgJiYg
dG9rZW4tPm5hbWUoKSAhPSBib2R5VGFnICYmIHRva2VuLT5uYW1lKCkgIT0gaHRtbFRhZyAmJiB0
b2tlbi0+bmFtZSgpICE9IGJyVGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0Rm9yQmVmb3Jl
SFRNTCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCi0gICAgY2FzZSBCZWZvcmVIZWFkTW9k
ZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBCZWZvcmVIZWFkTW9kZSk7Cisg
ICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIZWFkOgorICAgICAgICBBU1NFUlQoaW5zZXJ0
aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkJlZm9yZUhlYWQpOwogICAgICAgICBpZiAodG9r
ZW4tPm5hbWUoKSAhPSBoZWFkVGFnICYmIHRva2VuLT5uYW1lKCkgIT0gYm9keVRhZyAmJiB0b2tl
bi0+bmFtZSgpICE9IGh0bWxUYWcgJiYgdG9rZW4tPm5hbWUoKSAhPSBiclRhZykgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdo
LgotICAgIGNhc2UgSW5IZWFkTW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBJbkhlYWRNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluSGVhZDoKKyAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkhlYWQpOwogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjYXNlIHNob3VsZCBiZSBicm9rZW4gb3V0IGludG8gcHJvY2Vzc0Vu
ZFRhZ0ZvckluSGVhZCwKICAgICAgICAgLy8gYmVjYXVzZSBvdGhlciBlbmQgdGFnIGNhc2VzIG5v
dyByZWZlciB0byBpdCAoInByb2Nlc3MgdGhlIHRva2VuIGZvciB1c2luZyB0aGUgcnVsZXMgb2Yg
dGhlICJpbiBoZWFkIiBpbnNlcnRpb24gbW9kZSIpLgotICAgICAgICAvLyBidXQgYmVjYXVzZSB0
aGUgbG9naWMgZmFsbHMgdGhyb3VnaCB0byBBZnRlckhlYWRNb2RlLCB0aGF0IGdldHMgYSBsaXR0
bGUgbWVzc3kuCisgICAgICAgIC8vIGJ1dCBiZWNhdXNlIHRoZSBsb2dpYyBmYWxscyB0aHJvdWdo
IHRvIEluc2VydGlvbk1vZGU6OkFmdGVySGVhZCwgdGhhdCBnZXRzIGEgbGl0dGxlIG1lc3N5Lgog
I2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9
PSB0ZW1wbGF0ZVRhZykgewogICAgICAgICAgICAgcHJvY2Vzc1RlbXBsYXRlRW5kVGFnKHRva2Vu
KTsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5k
VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAjZW5kaWYKICAgICAgICAgaWYgKHRva2VuLT5u
YW1lKCkgPT0gaGVhZFRhZykgewogICAgICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5w
b3BIVE1MSGVhZEVsZW1lbnQoKTsKLSAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJI
ZWFkTW9kZSk7CisgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkFm
dGVySGVhZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRv
a2VuLT5uYW1lKCkgIT0gYm9keVRhZyAmJiB0b2tlbi0+bmFtZSgpICE9IGh0bWxUYWcgJiYgdG9r
ZW4tPm5hbWUoKSAhPSBiclRhZykgewpAQCAtMjA4OCwyNCArMjA4OCwyNCBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAg
ICB9CiAgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdo
LgotICAgIGNhc2UgQWZ0ZXJIZWFkTW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUo
KSA9PSBBZnRlckhlYWRNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVySGVhZDoK
KyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpBZnRlckhl
YWQpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSAhPSBib2R5VGFnICYmIHRva2VuLT5uYW1l
KCkgIT0gaHRtbFRhZyAmJiB0b2tlbi0+bmFtZSgpICE9IGJyVGFnKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAotICAgIGNh
c2UgSW5Cb2R5TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlN
b2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQm9keToKKyAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkJvZHkpOwogICAgICAgICBwcm9jZXNz
RW5kVGFnRm9ySW5Cb2R5KHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJblRhYmxl
TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJblRhYmxlTW9kZSk7Cisg
ICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlOgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluVGFibGUpOwogICAgICAgICBwcm9jZXNzRW5kVGFn
Rm9ySW5UYWJsZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5DYXB0aW9uTW9k
ZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlKTsKKyAg
ICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ2FwdGlvbjoKKyAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNhcHRpb24pOwogICAgICAgICBpZiAodG9rZW4t
Pm5hbWUoKSA9PSBjYXB0aW9uVGFnKSB7CiAgICAgICAgICAgICBwcm9jZXNzQ2FwdGlvbkVuZFRh
Z0ZvckluQ2FwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjEzMSw4ICsyMTMxLDgg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KHRva2VuKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkNvbHVtbkdyb3VwTW9kZToKLSAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkNvbHVtbkdyb3VwTW9kZSk7CisgICAgY2FzZSBJbnNl
cnRpb25Nb2RlOjpJbkNvbHVtbkdyb3VwOgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgp
ID09IEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXApOwogICAgICAgICBpZiAodG9rZW4tPm5h
bWUoKSA9PSBjb2xncm91cFRhZykgewogICAgICAgICAgICAgcHJvY2Vzc0NvbGdyb3VwRW5kVGFn
Rm9ySW5Db2x1bW5Hcm91cCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE1Myw0MiArMjE1
Myw0MiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEluUm93TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJblJvd01vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5Sb3c6Cisg
ICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3cpOwog
ICAgICAgICBwcm9jZXNzRW5kVGFnRm9ySW5Sb3codG9rZW4pOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluQ2VsbE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5D
ZWxsTW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJbkNlbGw6CisgICAgICAgIEFTU0VS
VChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5DZWxsKTsKICAgICAgICAgcHJv
Y2Vzc0VuZFRhZ0ZvckluQ2VsbCh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5U
YWJsZUJvZHlNb2RlOgotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVC
b2R5TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keToKKyAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSk7CiAg
ICAgICAgIHByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keSh0b2tlbik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUo
KSA9PSBBZnRlckJvZHlNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVyQm9keToK
KyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpBZnRlckJv
ZHkpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAgICAgICAg
ICBpZiAoaXNQYXJzaW5nRnJhZ21lbnQoKSkgewogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3Io
dG9rZW4pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJBZnRlckJvZHlNb2RlKTsKKyAgICAgICAgICAgIHNl
dEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJBZnRlckJvZHkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KLSAgICBjYXNl
IEFmdGVyQWZ0ZXJCb2R5TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBB
ZnRlckJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBBZnRlckFmdGVyQm9keU1vZGUpOwor
ICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJBZnRlckJvZHk6CisgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJCb2R5IHx8IGluc2VydGlvbk1v
ZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpBZnRlckFmdGVyQm9keSk7CiAgICAgICAgIHBhcnNlRXJy
b3IodG9rZW4pOwotICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOworICAgICAg
ICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluQm9keSk7CiAgICAgICAgIHByb2Nl
c3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluSGVhZE5vc2NyaXB0
TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkhlYWROb3NjcmlwdE1v
ZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5IZWFkTm9zY3JpcHQ6CisgICAgICAgIEFT
U0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5IZWFkTm9zY3JpcHQpOwog
ICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBub3NjcmlwdFRhZykgewogICAgICAgICAgICAg
QVNTRVJUKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUobm9zY3JpcHRUYWcp
KTsKICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7CiAgICAgICAgICAg
ICBBU1NFUlQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShoZWFkVGFnKSk7
Ci0gICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluSGVhZE1vZGUpOworICAgICAgICAgICAg
c2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkhlYWQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpICE9IGJyVGFnKSB7CkBA
IC0yMTk4LDcgKzIxOTgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQo
KTsKICAgICAgICAgcHJvY2Vzc1Rva2VuKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUZXh0TW9kZToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OlRleHQ6CiAgICAgICAgIGlmICh0
b2tlbi0+bmFtZSgpID09IHNjcmlwdFRhZykgewogICAgICAgICAgICAgLy8gUGF1c2Ugb3Vyc2Vs
dmVzIHNvIHRoYXQgcGFyc2luZyBzdG9wcyB1bnRpbCB0aGUgc2NyaXB0IGNhbiBiZSBwcm9jZXNz
ZWQgYnkgdGhlIGNhbGxlci4KICAgICAgICAgICAgIEFTU0VSVChtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykpOwpAQCAtMjIyMCw4ICsyMjIwLDggQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
ICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsKICAgICAgICAgc2V0SW5zZXJ0
aW9uTW9kZShtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5GcmFtZXNldE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5G
cmFtZXNldE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5GcmFtZXNldDoKKyAgICAg
ICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkZyYW1lc2V0KTsK
ICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gZnJhbWVzZXRUYWcpIHsKICAgICAgICAgICAg
IGJvb2wgaWdub3JlRnJhbWVzZXRGb3JGcmFnbWVudFBhcnNpbmcgID0gbV90cmVlLmN1cnJlbnRJ
c1Jvb3ROb2RlKCk7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCkBAIC0yMjM0LDcgKzIy
MzQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50
cygpLT5wb3AoKTsKICAgICAgICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiAhbV90
cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpCi0gICAgICAg
ICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShBZnRlckZyYW1lc2V0TW9kZSk7CisgICAgICAgICAg
ICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpBZnRlckZyYW1lc2V0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5U
KQpAQCAtMjI0NCwxOSArMjI0NCwxOSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBZnRlckZyYW1lc2V0TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBBZnRlckZyYW1lc2V0TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2Rl
OjpBZnRlckZyYW1lc2V0OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2Vy
dGlvbk1vZGU6OkFmdGVyRnJhbWVzZXQpOwogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBo
dG1sVGFnKSB7Ci0gICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEFmdGVyQWZ0ZXJGcmFtZXNl
dE1vZGUpOworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpBZnRl
ckFmdGVyRnJhbWVzZXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIEZhbGwgdGhyb3VnaC4KLSAgICBjYXNlIEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGU6Ci0gICAg
ICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJGcmFtZXNldE1vZGUgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9u
TW9kZTo6QWZ0ZXJBZnRlckZyYW1lc2V0OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgp
ID09IEluc2VydGlvbk1vZGU6OkFmdGVyRnJhbWVzZXQgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
c2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJGcmFtZXNldCk7CiAgICAgICAgIHBhcnNlRXJyb3IodG9r
ZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluU2VsZWN0SW5UYWJsZU1vZGU6Ci0gICAg
ICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5TZWxlY3RJblRhYmxlTW9kZSk7CisgICAg
Y2FzZSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdEluVGFibGU6CisgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxlKTsKICAgICAgICAg
aWYgKHRva2VuLT5uYW1lKCkgPT0gY2FwdGlvblRhZwogICAgICAgICAgICAgfHwgdG9rZW4tPm5h
bWUoKSA9PSB0YWJsZVRhZwogICAgICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRv
a2VuLT5uYW1lKCkpCkBAIC0yMjcxLDggKzIyNzEsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KLSAgICBjYXNlIEluU2VsZWN0
TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJblNlbGVjdE1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluU2VsZWN0SW5UYWJsZU1vZGUpOworICAgIGNhc2UgSW5zZXJ0
aW9uTW9kZTo6SW5TZWxlY3Q6CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5z
ZXJ0aW9uTW9kZTo6SW5TZWxlY3QgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6
OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3Vw
VGFnKSB7CiAgICAgICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChtX3RyZWUuY3VycmVu
dFN0YWNrSXRlbSgpLT5ub2RlKCkpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIGlzSFRNTE9w
dEdyb3VwRWxlbWVudChtX3RyZWUub25lQmVsb3dUb3AoKS0+bm9kZSgpKSkKICAgICAgICAgICAg
ICAgICBwcm9jZXNzRmFrZUVuZFRhZyhvcHRpb25UYWcpOwpAQCAtMjMwOCwxMSArMjMwOCwxMSBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJblRhYmxl
VGV4dE1vZGU6CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlVGV4dDoKICAgICAgICAg
ZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRlbXBsYXRlQ29udGVudHNNb2RlOgorICAgIGNhc2Ug
SW5zZXJ0aW9uTW9kZTo6VGVtcGxhdGVDb250ZW50czoKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxF
TUVOVCkKICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gdGVtcGxhdGVUYWcpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NUZW1wbGF0ZUVuZFRhZyh0b2tlbik7CkBAIC0yMzMwLDE4ICsyMzMwLDE4
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiog
dG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNv
bW1lbnQpOwotICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlhbE1vZGUKLSAgICAgICAg
fHwgbV9pbnNlcnRpb25Nb2RlID09IEJlZm9yZUhUTUxNb2RlCi0gICAgICAgIHx8IG1faW5zZXJ0
aW9uTW9kZSA9PSBBZnRlckFmdGVyQm9keU1vZGUKLSAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2Rl
ID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUpIHsKKyAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09
IEluc2VydGlvbk1vZGU6OkluaXRpYWwKKyAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IElu
c2VydGlvbk1vZGU6OkJlZm9yZUhUTUwKKyAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IElu
c2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJCb2R5CisgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9
PSBJbnNlcnRpb25Nb2RlOjpBZnRlckFmdGVyRnJhbWVzZXQpIHsKICAgICAgICAgbV90cmVlLmlu
c2VydENvbW1lbnRPbkRvY3VtZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQm9keU1vZGUpIHsKKyAgICBpZiAobV9pbnNl
cnRpb25Nb2RlID09IEluc2VydGlvbk1vZGU6OkFmdGVyQm9keSkgewogICAgICAgICBtX3RyZWUu
aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluVGFibGVUZXh0TW9kZSkgeworICAg
IGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZVRleHQpIHsKICAg
ICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAgICAgIHByb2Nlc3NDb21tZW50KHRv
a2VuKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2OSwzMiArMjQ2OSwzMiBAQCBSZXByb2Nlc3NC
dWZmZXI6CiAgICAgfQogCiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKLSAgICBjYXNl
IEluaXRpYWxNb2RlOiB7Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlh
bE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5pdGlhbDogeworICAgICAgICBBU1NF
UlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluaXRpYWwpOwogICAgICAgICBi
dWZmZXIuc2tpcExlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWZhdWx0Rm9ySW5pdGlhbCgpOwog
ICAgICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAgfQotICAgIGNhc2UgQmVmb3JlSFRNTE1vZGU6
IHsKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBCZWZvcmVIVE1MTW9kZSk7Cisg
ICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIVE1MOiB7CisgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6QmVmb3JlSFRNTCk7CiAgICAgICAgIGJ1ZmZl
ci5za2lwTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHRGb3JCZWZvcmVIVE1MKCk7CiAg
ICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICB9Ci0gICAgY2FzZSBCZWZvcmVIZWFkTW9kZTog
ewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEJlZm9yZUhlYWRNb2RlKTsKKyAg
ICBjYXNlIEluc2VydGlvbk1vZGU6OkJlZm9yZUhlYWQ6IHsKKyAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIZWFkKTsKICAgICAgICAgYnVmZmVy
LnNraXBMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIH0KLSAgICBjYXNlIEluSGVhZE1vZGU6IHsKLSAg
ICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkhlYWRNb2RlKTsKKyAgICBjYXNlIElu
c2VydGlvbk1vZGU6OkluSGVhZDogeworICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluc2VydGlvbk1vZGU6OkluSGVhZCk7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFj
ZSA9IGJ1ZmZlci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFsZWFkaW5n
V2hpdGVzcGFjZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
bGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOwpAQCAtMjUwMyw4ICsyNTAzLDggQEAg
UmVwcm9jZXNzQnVmZmVyOgogICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkKCk7CiAgICAgICAgIC8v
IEZhbGwgdGhyb3VnaC4KICAgICB9Ci0gICAgY2FzZSBBZnRlckhlYWRNb2RlOiB7Ci0gICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJIZWFkTW9kZSk7CisgICAgY2FzZSBJbnNl
cnRpb25Nb2RlOjpBZnRlckhlYWQ6IHsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBJbnNlcnRpb25Nb2RlOjpBZnRlckhlYWQpOwogICAgICAgICBTdHJpbmcgbGVhZGluZ1doaXRl
c3BhY2UgPSBidWZmZXIudGFrZUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmICghbGVh
ZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHRO
b2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKQEAgLTI1MTMsMjMgKzI1MTMs
MjMgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgICAgICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAg
ICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICB9Ci0gICAgY2FzZSBJbkJvZHlNb2RlOgotICAg
IGNhc2UgSW5DYXB0aW9uTW9kZToKLSAgICBjYXNlIFRlbXBsYXRlQ29udGVudHNNb2RlOgotICAg
IGNhc2UgSW5DZWxsTW9kZTogeworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5Cb2R5OgorICAg
IGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5DYXB0aW9uOgorICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6
VGVtcGxhdGVDb250ZW50czoKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ2VsbDogewogI2lm
IEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgp
ID09IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5z
ZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IFRlbXBsYXRl
Q29udGVudHNNb2RlKTsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRp
b25Nb2RlOjpJbkJvZHkgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluQ2Fw
dGlvbiB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5DZWxsIHx8IGluc2Vy
dGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRlbnRzKTsKICNlbHNlCi0g
ICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gVGVtcGxhdGVDb250ZW50c01vZGUpOwot
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9u
TW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUp
OworICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpICE9IEluc2VydGlvbk1vZGU6OlRlbXBs
YXRlQ29udGVudHMpOworICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlv
bk1vZGU6OkluQm9keSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5DYXB0
aW9uIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNlbGwpOwogI2VuZGlm
CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkoYnVmZmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5UYWJsZU1vZGU6Ci0gICAgY2FzZSBJblRhYmxl
Qm9keU1vZGU6Ci0gICAgY2FzZSBJblJvd01vZGU6IHsKLSAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJblRhYmxlTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlN
b2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJblJvd01vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9u
TW9kZTo6SW5UYWJsZToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluVGFibGVCb2R5OgorICAg
IGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5Sb3c6IHsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1v
ZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNl
cnRpb25Nb2RlOjpJblRhYmxlQm9keSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9k
ZTo6SW5Sb3cpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nVGFibGVDaGFyYWN0ZXJzLmlzRW1w
dHkoKSk7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5pc0VsZW1lbnRO
b2RlKCkKICAgICAgICAgICAgICYmIChpc0hUTUxUYWJsZUVsZW1lbnQobV90cmVlLmN1cnJlbnRT
dGFja0l0ZW0oKS0+bm9kZSgpKQpAQCAtMjUzOCw4ICsyNTM4LDggQEAgUmVwcm9jZXNzQnVmZmVy
OgogICAgICAgICAgICAgICAgIHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjp0aGVhZFRhZykKICAgICAgICAgICAgICAgICB8fCBtX3RyZWUuY3VycmVu
dFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dHJUYWcpKSkgewogICAgICAgICAg
ICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7Ci0gICAgICAgICAg
ICBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVUZXh0TW9kZSk7Ci0gICAgICAgICAgICAvLyBOb3Rl
IHRoYXQgd2UgZmFsbCB0aHJvdWdoIHRvIHRoZSBJblRhYmxlVGV4dE1vZGUgY2FzZSBiZWxvdy4K
KyAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZVRleHQp
OworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgSW5zZXJ0
aW9uTW9kZTo6SW5UYWJsZVRleHQgY2FzZSBiZWxvdy4KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpSZWRpcmVjdFRvRm9zdGVyUGFyZW50R3VhcmQg
cmVkaXJlY3RlcihtX3RyZWUpOwogICAgICAgICAgICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZv
ckluQm9keShidWZmZXIpOwpAQCAtMjU0NywxMiArMjU0NywxMiBAQCBSZXByb2Nlc3NCdWZmZXI6
CiAgICAgICAgIH0KICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIH0KLSAgICBjYXNlIElu
VGFibGVUZXh0TW9kZTogeworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZVRleHQ6IHsK
ICAgICAgICAgYnVmZmVyLmdpdmVSZW1haW5pbmdUbyhtX3BlbmRpbmdUYWJsZUNoYXJhY3RlcnMp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbkNvbHVtbkdyb3VwTW9kZTogewot
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQ29sdW1uR3JvdXBNb2RlKTsKKyAg
ICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXA6IHsKKyAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNvbHVtbkdyb3VwKTsKICAgICAgICAg
U3RyaW5nIGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VMZWFkaW5nV2hpdGVzcGFjZSgp
OwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7
CkBAIC0yNTY3LDIxICsyNTY3LDIxIEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgfQogICAg
ICAgICBnb3RvIFJlcHJvY2Vzc0J1ZmZlcjsKICAgICB9Ci0gICAgY2FzZSBBZnRlckJvZHlNb2Rl
OgotICAgIGNhc2UgQWZ0ZXJBZnRlckJvZHlNb2RlOiB7Ci0gICAgICAgIEFTU0VSVChpbnNlcnRp
b25Nb2RlKCkgPT0gQWZ0ZXJCb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJBZnRl
ckJvZHlNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkFmdGVyQm9keToKKyAgICBjYXNl
IEluc2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJCb2R5OiB7CisgICAgICAgIEFTU0VSVChpbnNlcnRp
b25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJCb2R5IHx8IGluc2VydGlvbk1vZGUoKSA9
PSBJbnNlcnRpb25Nb2RlOjpBZnRlckFmdGVyQm9keSk7CiAgICAgICAgIC8vIEZJWE1FOiBwYXJz
ZSBlcnJvcgotICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluQm9keU1vZGUpOworICAgICAgICBz
ZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkluQm9keSk7CiAgICAgICAgIGdvdG8gUmVw
cm9jZXNzQnVmZmVyOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBUZXh0TW9kZTog
ewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IFRleHRNb2RlKTsKKyAgICBjYXNl
IEluc2VydGlvbk1vZGU6OlRleHQ6IHsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBJbnNlcnRpb25Nb2RlOjpUZXh0KTsKICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGJ1
ZmZlci50YWtlUmVtYWluaW5nKCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJ
bkhlYWROb3NjcmlwdE1vZGU6IHsKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJ
bkhlYWROb3NjcmlwdE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5IZWFkTm9zY3Jp
cHQ6IHsKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJ
bkhlYWROb3NjcmlwdCk7CiAgICAgICAgIFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZl
ci50YWtlTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFj
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1do
aXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOwpAQCAtMjU5MSw5ICsyNTkxLDkgQEAgUmVwcm9jZXNz
QnVmZmVyOgogICAgICAgICBnb3RvIFJlcHJvY2Vzc0J1ZmZlcjsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgSW5GcmFtZXNldE1vZGU6Ci0gICAgY2FzZSBBZnRlckZyYW1lc2V0TW9k
ZTogewotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluRnJhbWVzZXRNb2RlIHx8
IGluc2VydGlvbk1vZGUoKSA9PSBBZnRlckZyYW1lc2V0TW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkg
PT0gQWZ0ZXJBZnRlckZyYW1lc2V0TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJbkZy
YW1lc2V0OgorICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJGcmFtZXNldDogeworICAgICAg
ICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluRnJhbWVzZXQgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkFmdGVyRnJhbWVzZXQgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJGcmFtZXNldCk7CiAgICAgICAg
IFN0cmluZyBsZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFj
ZSgpOwogICAgICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFj
ZSk7CkBAIC0yNjAxLDEzICsyNjAxLDEzIEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgLy8g
bm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgSW5TZWxlY3RJblRhYmxlTW9kZToKLSAgICBjYXNlIEluU2VsZWN0TW9kZTogewotICAgICAg
ICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluU2VsZWN0TW9kZSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5TZWxlY3RJblRhYmxlTW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblNl
bGVjdEluVGFibGU6CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdDogeworICAgICAg
ICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluU2VsZWN0IHx8IGlu
c2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdEluVGFibGUpOwogICAgICAg
ICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoYnVmZmVyLnRha2VSZW1haW5pbmcoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGU6IHsKKyAgICBj
YXNlIEluc2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJGcmFtZXNldDogewogICAgICAgICBTdHJpbmcg
bGVhZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZVJlbWFpbmluZ1doaXRlc3BhY2UoKTsKICAg
ICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1f
dHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwpAQCAtMjY0MSwz
NSArMjY0MSwzNSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9t
aWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlbjo6RW5kT2ZGaWxlKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewotICAgIGNh
c2UgSW5pdGlhbE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlh
bE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5pdGlhbDoKKyAgICAgICAgQVNTRVJU
KGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbml0aWFsKTsKICAgICAgICAgZGVm
YXVsdEZvckluaXRpYWwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgotICAgIGNhc2UgQmVm
b3JlSFRNTE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQmVmb3JlSFRN
TE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QmVmb3JlSFRNTDoKKyAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIVE1MKTsKICAgICAg
ICAgZGVmYXVsdEZvckJlZm9yZUhUTUwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgotICAg
IGNhc2UgQmVmb3JlSGVhZE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
QmVmb3JlSGVhZE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QmVmb3JlSGVhZDoKKyAg
ICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpCZWZvcmVIZWFk
KTsKICAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJv
dWdoLgotICAgIGNhc2UgSW5IZWFkTW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUo
KSA9PSBJbkhlYWRNb2RlKTsKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluSGVhZDoKKyAgICAg
ICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkhlYWQpOwogICAg
ICAgICBkZWZhdWx0Rm9ySW5IZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KLSAgICBj
YXNlIEFmdGVySGVhZE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0
ZXJIZWFkTW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckhlYWQ6CisgICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJIZWFkKTsKICAg
ICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2gKLSAg
ICBjYXNlIEluQm9keU1vZGU6Ci0gICAgY2FzZSBJbkNlbGxNb2RlOgotICAgIGNhc2UgSW5DYXB0
aW9uTW9kZToKLSAgICBjYXNlIEluUm93TW9kZToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6Oklu
Qm9keToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluQ2VsbDoKKyAgICBjYXNlIEluc2VydGlv
bk1vZGU6OkluQ2FwdGlvbjoKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluUm93OgogI2lmIEVO
QUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9u
TW9kZSgpID09IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSB8
fCBpbnNlcnRpb25Nb2RlKCkgPT0gVGVtcGxhdGVDb250ZW50c01vZGUpOworICAgICAgICBBU1NF
UlQoaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluQm9keSB8fCBpbnNlcnRpb25N
b2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5DZWxsIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNl
cnRpb25Nb2RlOjpJbkNhcHRpb24gfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6
OkluUm93IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRl
bnRzKTsKICNlbHNlCi0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gVGVtcGxhdGVD
b250ZW50c01vZGUpOwotICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1v
ZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluQ2VsbE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09
IEluQ2FwdGlvbk1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluUm93TW9kZSk7CisgICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgIT0gSW5zZXJ0aW9uTW9kZTo6VGVtcGxhdGVDb250ZW50
cyk7CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5C
b2R5IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNlbGwgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluQ2FwdGlvbiB8fCBpbnNlcnRpb25Nb2RlKCkg
PT0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3cpOwogI2VuZGlmCiAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7IC8vIEVtaXQgcGFyc2UgZXJyb3IgYmFzZWQgb24gd2hhdCBlbGVtZW50cyBhcmUgc3RpbGwg
b3Blbi4KICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKQEAgLTI2NzgsMjAgKzI2NzgsMjAg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBZnRlckJvZHlNb2RlOgotICAgIGNhc2UgQWZ0ZXJBZnRlckJvZHlNb2RlOgot
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQm9keU1vZGUgfHwgaW5zZXJ0
aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJCb2R5TW9kZSk7CisgICAgY2FzZSBJbnNlcnRpb25Nb2Rl
OjpBZnRlckJvZHk6CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpBZnRlckFmdGVyQm9keToKKyAg
ICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpBZnRlckJvZHkg
fHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkFmdGVyQWZ0ZXJCb2R5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbkhlYWROb3NjcmlwdE1vZGU6Ci0gICAgICAgIEFTU0VS
VChpbnNlcnRpb25Nb2RlKCkgPT0gSW5IZWFkTm9zY3JpcHRNb2RlKTsKKyAgICBjYXNlIEluc2Vy
dGlvbk1vZGU6OkluSGVhZE5vc2NyaXB0OgorICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgp
ID09IEluc2VydGlvbk1vZGU6OkluSGVhZE5vc2NyaXB0KTsKICAgICAgICAgZGVmYXVsdEZvcklu
SGVhZE5vc2NyaXB0KCk7CiAgICAgICAgIHByb2Nlc3NFbmRPZkZpbGUodG9rZW4pOwogICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBBZnRlckZyYW1lc2V0TW9kZToKLSAgICBjYXNlIEFmdGVyQWZ0
ZXJGcmFtZXNldE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJG
cmFtZXNldE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUp
OworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6QWZ0ZXJGcmFtZXNldDoKKyAgICBjYXNlIEluc2Vy
dGlvbk1vZGU6OkFmdGVyQWZ0ZXJGcmFtZXNldDoKKyAgICAgICAgQVNTRVJUKGluc2VydGlvbk1v
ZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpBZnRlckZyYW1lc2V0IHx8IGluc2VydGlvbk1vZGUoKSA9
PSBJbnNlcnRpb25Nb2RlOjpBZnRlckFmdGVyRnJhbWVzZXQpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluQ29sdW1uR3JvdXBNb2RlOgorICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5Db2x1
bW5Hcm91cDoKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50SXNSb290Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47
IC8vIEZJWE1FOiBTaG91bGQgd2UgYnJlYWsgaGVyZSBpbnN0ZWFkIG9mIHJldHVybmluZz8KQEAg
LTI3MDMsMTIgKzI3MDMsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZp
bGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICNlbmRpZgogICAgICAgICBwcm9jZXNzQ29sZ3Jv
dXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAotICAg
IGNhc2UgSW5GcmFtZXNldE1vZGU6Ci0gICAgY2FzZSBJblRhYmxlTW9kZToKLSAgICBjYXNlIElu
VGFibGVCb2R5TW9kZToKLSAgICBjYXNlIEluU2VsZWN0SW5UYWJsZU1vZGU6Ci0gICAgY2FzZSBJ
blNlbGVjdE1vZGU6Ci0gICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5TZWxlY3RN
b2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJblNlbGVjdEluVGFibGVNb2RlIHx8IGluc2VydGlv
bk1vZGUoKSA9PSBJblRhYmxlTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5GcmFtZXNldE1v
ZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVCb2R5TW9kZSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5Db2x1bW5Hcm91cE1vZGUpOworICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5GcmFt
ZXNldDoKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluVGFibGU6CisgICAgY2FzZSBJbnNlcnRp
b25Nb2RlOjpJblRhYmxlQm9keToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluU2VsZWN0SW5U
YWJsZToKKyAgICBjYXNlIEluc2VydGlvbk1vZGU6OkluU2VsZWN0OgorICAgICAgICBBU1NFUlQo
aW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluU2VsZWN0IHx8IGluc2VydGlvbk1v
ZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdEluVGFibGUgfHwgaW5zZXJ0aW9uTW9kZSgp
ID09IEluc2VydGlvbk1vZGU6OkluVGFibGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlv
bk1vZGU6OkluRnJhbWVzZXQgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6Oklu
VGFibGVCb2R5IHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJbkNvbHVtbkdy
b3VwKTsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9kZSgpICE9IG1fdHJlZS5vcGVuRWxl
bWVudHMoKS0+cm9vdE5vZGUoKSkKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogCkBA
IC0yNzE4LDIwICsyNzE4LDIwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZG
aWxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5UYWJsZVRleHRNb2RlOgorICAgIGNhc2Ug
SW5zZXJ0aW9uTW9kZTo6SW5UYWJsZVRleHQ6CiAgICAgICAgIGRlZmF1bHRGb3JJblRhYmxlVGV4
dCgpOwogICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgVGV4dE1vZGU6CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpUZXh0OgogICAgICAg
ICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVt
KCktPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSkKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
IC8vIG1hcmsgdGhlIHNjcmlwdCBlbGVtZW50IGFzICJhbHJlYWR5IHN0YXJ0ZWQiLgogICAgICAg
ICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwotICAgICAgICBBU1NFUlQobV9vcmlnaW5h
bEluc2VydGlvbk1vZGUgIT0gVGV4dE1vZGUpOworICAgICAgICBBU1NFUlQobV9vcmlnaW5hbElu
c2VydGlvbk1vZGUgIT0gSW5zZXJ0aW9uTW9kZTo6VGV4dCk7CiAgICAgICAgIHNldEluc2VydGlv
bk1vZGUobV9vcmlnaW5hbEluc2VydGlvbk1vZGUpOwogICAgICAgICBwcm9jZXNzRW5kT2ZGaWxl
KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVGVtcGxhdGVDb250ZW50c01vZGU6
CisgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRlbnRzOgogI2lmIEVOQUJMRShU
RU1QTEFURV9FTEVNRU5UKQogICAgICAgICBpZiAocHJvY2Vzc0VuZE9mRmlsZUZvckluVGVtcGxh
dGVDb250ZW50cyh0b2tlbikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzQ5LDE0ICsyNzQ5
LDE0IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICBtX3RyZWUuc2V0RGVmYXVsdENvbXBhdGliaWxpdHlNb2RlKCk7
CiAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCi0gICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVI
VE1MTW9kZSk7CisgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpCZWZvcmVIVE1M
KTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKCkKIHsK
ICAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGh0bWxU
YWcubG9jYWxOYW1lKCkpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnQmVmb3Jl
SFRNTCgmc3RhcnRIVE1MKTsKLSAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsK
KyAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6OkJlZm9yZUhlYWQpOwogfQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQoKQpAQCAtMjgyOCw3ICsy
ODI4LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICAgICAgc2V0
SW5zZXJ0aW9uTW9kZShJbkhlYWROb3NjcmlwdE1vZGUpOworICAgICAgICBzZXRJbnNlcnRpb25N
b2RlKEluc2VydGlvbk1vZGU6OkluSGVhZE5vc2NyaXB0KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG5vZnJhbWVzVGFnIHx8IHRva2VuLT5u
YW1lKCkgPT0gc3R5bGVUYWcpIHsKQEAgLTI4NjEsNyArMjg2MSw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAgICAgaWYgKG1fcGFyc2VyLnRva2VuaXplcigpKQogICAgICAgICBtX3BhcnNlci50b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgIG1fb3Jp
Z2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwotICAgIHNldEluc2VydGlvbk1v
ZGUoVGV4dE1vZGUpOworICAgIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6VGV4dCk7
CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRh
ZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQpAQCAtMjg3MSw3ICsyODcxLDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tl
biogdG9rZW4pCiAgICAgaWYgKG1fcGFyc2VyLnRva2VuaXplcigpKQogICAgICAgICBtX3BhcnNl
ci50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKICAg
ICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKLSAgICBzZXRJbnNl
cnRpb25Nb2RlKFRleHRNb2RlKTsKKyAgICBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlvbk1vZGU6
OlRleHQpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFn
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCkBAIC0yODg2LDcgKzI4ODYsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4p
CiAKICAgICBtX3NjcmlwdFRvUHJvY2Vzc1N0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbjsKIAotICAg
IHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOworICAgIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0
aW9uTW9kZTo6VGV4dCk7CiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RyZWUtY29uc3RydWN0aW9uLmh0bWwjdHJlZS1j
b25zdHJ1Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmgKaW5kZXggNzViMDQ0NmUzNzc5ZDYwNTkxN2E1OTFjZGNiNTllYzE1MTVhN2M1Yy4uMzczNTNm
MmQ3NjNiNjBlOWM5NzkzY2JkNTg4Mjc5MDk2MmQ2MWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTg4LDMwICs4OCwzMCBAQCBwcml2YXRl
OgogICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI7CiAgICAgLy8gUmVwcmVz
ZW50cyBIVE1MNSAiaW5zZXJ0aW9uIG1vZGUiCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2luc2Vy
dGlvbi1tb2RlCi0gICAgZW51bSBJbnNlcnRpb25Nb2RlIHsKLSAgICAgICAgSW5pdGlhbE1vZGUs
Ci0gICAgICAgIEJlZm9yZUhUTUxNb2RlLAotICAgICAgICBCZWZvcmVIZWFkTW9kZSwKLSAgICAg
ICAgSW5IZWFkTW9kZSwKLSAgICAgICAgSW5IZWFkTm9zY3JpcHRNb2RlLAotICAgICAgICBBZnRl
ckhlYWRNb2RlLAotICAgICAgICBUZW1wbGF0ZUNvbnRlbnRzTW9kZSwKLSAgICAgICAgSW5Cb2R5
TW9kZSwKLSAgICAgICAgVGV4dE1vZGUsCi0gICAgICAgIEluVGFibGVNb2RlLAotICAgICAgICBJ
blRhYmxlVGV4dE1vZGUsCi0gICAgICAgIEluQ2FwdGlvbk1vZGUsCi0gICAgICAgIEluQ29sdW1u
R3JvdXBNb2RlLAotICAgICAgICBJblRhYmxlQm9keU1vZGUsCi0gICAgICAgIEluUm93TW9kZSwK
LSAgICAgICAgSW5DZWxsTW9kZSwKLSAgICAgICAgSW5TZWxlY3RNb2RlLAotICAgICAgICBJblNl
bGVjdEluVGFibGVNb2RlLAotICAgICAgICBBZnRlckJvZHlNb2RlLAotICAgICAgICBJbkZyYW1l
c2V0TW9kZSwKLSAgICAgICAgQWZ0ZXJGcmFtZXNldE1vZGUsCi0gICAgICAgIEFmdGVyQWZ0ZXJC
b2R5TW9kZSwKLSAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0TW9kZSwKKyAgICBlbnVtIGNsYXNz
IEluc2VydGlvbk1vZGUgeworICAgICAgICBJbml0aWFsLAorICAgICAgICBCZWZvcmVIVE1MLAor
ICAgICAgICBCZWZvcmVIZWFkLAorICAgICAgICBJbkhlYWQsCisgICAgICAgIEluSGVhZE5vc2Ny
aXB0LAorICAgICAgICBBZnRlckhlYWQsCisgICAgICAgIFRlbXBsYXRlQ29udGVudHMsCisgICAg
ICAgIEluQm9keSwKKyAgICAgICAgVGV4dCwKKyAgICAgICAgSW5UYWJsZSwKKyAgICAgICAgSW5U
YWJsZVRleHQsCisgICAgICAgIEluQ2FwdGlvbiwKKyAgICAgICAgSW5Db2x1bW5Hcm91cCwKKyAg
ICAgICAgSW5UYWJsZUJvZHksCisgICAgICAgIEluUm93LAorICAgICAgICBJbkNlbGwsCisgICAg
ICAgIEluU2VsZWN0LAorICAgICAgICBJblNlbGVjdEluVGFibGUsCisgICAgICAgIEFmdGVyQm9k
eSwKKyAgICAgICAgSW5GcmFtZXNldCwKKyAgICAgICAgQWZ0ZXJGcmFtZXNldCwKKyAgICAgICAg
QWZ0ZXJBZnRlckJvZHksCisgICAgICAgIEFmdGVyQWZ0ZXJGcmFtZXNldCwKICAgICB9OwogCiAj
aWYgUExBVEZPUk0oSU9TKQo=
</data>
<flag name="review"
          id="245538"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>