<?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>64399</bug_id>
          
          <creation_ts>2011-07-12 14:57:53 -0700</creation_ts>
          <short_desc>Switch InlineFlowBox to to new layout types</short_desc>
          <delta_ts>2011-07-12 17:04:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435994</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-12 14:57:53 -0700</bug_when>
    <thetext>Convert InlineFlowBox and related to to new layout abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435999</commentid>
    <comment_count>1</comment_count>
      <attachid>100569</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-12 15:02:25 -0700</bug_when>
    <thetext>Created attachment 100569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436001</commentid>
    <comment_count>2</comment_count>
      <attachid>100569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-12 15:04:14 -0700</bug_when>
    <thetext>Comment on attachment 100569
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436087</commentid>
    <comment_count>3</comment_count>
      <attachid>100569</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 17:04:16 -0700</bug_when>
    <thetext>Comment on attachment 100569
Patch

Clearing flags on attachment: 100569

Committed r90869: &lt;http://trac.webkit.org/changeset/90869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436088</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 17:04:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100569</attachid>
            <date>2011-07-12 15:02:25 -0700</date>
            <delta_ts>2011-07-12 17:04:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64399-20110712150222.patch</filename>
            <type>text/plain</type>
            <size>48361</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwODU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDctMTIgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBJbmxpbmVGbG93Qm94
IHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY0Mzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRmlyc3Qgc3RlcCBpbiBtb3ZpbmcgZmxvYXRzIG92ZXIgdG8gdGhlIG5l
dyBsYXlvdXQgYWJzdHJhY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBuZXcgZnVu
Y3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmxvZ2ljYWxUb3Ap
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpsb2dpY2FsQm90dG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUJveDo6c2V0TG9naWNhbFRvcCk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRq
dXN0TWF4QXNjZW50QW5kRGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
Ojpjb21wdXRlTG9naWNhbEJveEhlaWdodHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6YWRkQm94U2hhZG93VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21JZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90
YXRpb25BZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1
dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphbGlnbkJveGVz
SW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5l
U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFzY2VudEFu
ZERlc2NlbnRGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6dmVydGlj
YWxQb3NpdGlvbkZvckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Z2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Z2V0U2hhZG93VmVydGljYWxFeHRlbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6OmdldFRleHRTaGFkb3dFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6OmdldFRleHRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aGVyaXRlZEZsYWdzOjpnZXRUZXh0U2hhZG93VmVydGljYWxFeHRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5oZXJpdGVkRmxhZ3M6OmdldFRleHRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmdldFRleHRTaGFkb3dCbG9ja0Rp
cmVjdGlvbkV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Z2V0Qm94
U2hhZG93RXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpnZXRCb3hT
aGFkb3dIb3Jpem9udGFsRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpnZXRCb3hTaGFkb3dWZXJ0aWNhbEV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6Z2V0Qm94U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjpnZXRCb3hTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Z2V0U2hhZG93SW5saW5lRGlyZWN0
aW9uRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpnZXRTaGFkb3dC
bG9ja0RpcmVjdGlvbkV4dGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2hhZG93RXh0ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OmFkanVzdFJlY3RGb3JTaGFkb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dE
YXRhOjpTaGFkb3dEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OngpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6eSk6CisKIDIwMTEtMDctMTIgIENocmlzIFJvZ2Vy
cyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBdWRpb0RldmljZTo6U3RvcCBjYW4g
Y2xvc2UgTlVMTCBoYW5kbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmNwcAkocmV2aXNpb24gOTA4MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgSW5saW5lQm94
OjpzaG93Qm94KGludCBwcmludGVkQ2hhcmEKIH0KICNlbmRpZgogCi1pbnQgSW5saW5lQm94Ojps
b2dpY2FsSGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgSW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0
KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChoYXNWaXJ0dWFsTG9naWNhbEhl
aWdodCgpKQpAQCAtMTM5LDcgKzEzOSw3IEBAIGludCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQo
KSBjb25zdAogICAgIEFTU0VSVChpc0lubGluZUZsb3dCb3goKSk7CiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGZsb3dPYmplY3QgPSBib3hNb2RlbE9iamVjdCgpOwogICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IHJlbmRlcmVyKCktPnN0eWxlKG1fZmlyc3RMaW5lKS0+Zm9u
dE1ldHJpY3MoKTsKLSAgICBpbnQgcmVzdWx0ID0gZm9udE1ldHJpY3MuaGVpZ2h0KCk7CisgICAg
TGF5b3V0VW5pdCByZXN1bHQgPSBmb250TWV0cmljcy5oZWlnaHQoKTsKICAgICBpZiAocGFyZW50
KCkpCiAgICAgICAgIHJlc3VsdCArPSBmbG93T2JqZWN0LT5ib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5oCShyZXZpc2lvbiA5MDgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDkgKzI1NCw5IEBAIHB1YmxpYzoK
ICAgICBpbnQgcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY2VpbGYo
bG9naWNhbFJpZ2h0KCkpOyB9CiAKICAgICAvLyBUaGUgbG9naWNhbFRvcFsgcG9zaXRpb24gaXMg
dGhlIHRvcCBlZGdlIG9mIHRoZSBsaW5lIGJveCBpbiBhIGhvcml6b250YWwgbGluZSBhbmQgdGhl
IGxlZnQgZWRnZSBpbiBhIHZlcnRpY2FsIGxpbmUuCi0gICAgaW50IGxvZ2ljYWxUb3AoKSBjb25z
dCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IG1fdG9wTGVmdC55KCkgOiBtX3RvcExlZnQueCgp
OyB9Ci0gICAgaW50IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBsb2dpY2FsVG9wKCkg
KyBsb2dpY2FsSGVpZ2h0KCk7IH0KLSAgICB2b2lkIHNldExvZ2ljYWxUb3AoaW50IHRvcCkKKyAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/
IG1fdG9wTGVmdC55KCkgOiBtX3RvcExlZnQueCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFRvcCgpICsgbG9naWNhbEhlaWdodCgpOyB9
CisgICAgdm9pZCBzZXRMb2dpY2FsVG9wKExheW91dFVuaXQgdG9wKQogICAgIHsKICAgICAgICAg
aWYgKGlzSG9yaXpvbnRhbCgpKQogICAgICAgICAgICAgc2V0WSh0b3ApOwpAQCAtMjY5LDcgKzI2
OSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X2xvZ2ljYWxXaWR0aDsgfQogCiAgICAgLy8gVGhlIGxvZ2ljYWwgaGVpZ2h0IGlzIG91ciBleHRl
bnQgaW4gdGhlIGJsb2NrIGZsb3cgZGlyZWN0aW9uLCBpLmUuLCBoZWlnaHQgZm9yIGhvcml6b250
YWwgdGV4dCBhbmQgd2lkdGggZm9yIHZlcnRpY2FsIHRleHQuCi0gICAgaW50IGxvZ2ljYWxIZWln
aHQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogICAg
IEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFs
KCkgPyBJbnRSZWN0KG1fdG9wTGVmdC54KCksIG1fdG9wTGVmdC55KCksIG1fbG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KCkpIDogSW50UmVjdChtX3RvcExlZnQueSgpLCBtX3RvcExlZnQueCgp
LCBtX2xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCgpKTsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiA5MDgzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQ4LDcgKzQ0OCw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6cmVxdWlyZXNJZGVvZ3JhcGhp
Y0IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4
QXNjZW50QW5kRGVzY2VudChpbnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBpbnQgbWF4
UG9zaXRpb25Ub3AsIGludCBtYXhQb3NpdGlvbkJvdHRvbSkKK3ZvaWQgSW5saW5lRmxvd0JveDo6
YWRqdXN0TWF4QXNjZW50QW5kRGVzY2VudChMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVu
aXQmIG1heERlc2NlbnQsIExheW91dFVuaXQgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQgbWF4
UG9zaXRpb25Cb3R0b20pCiB7CiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgLy8gVGhlIGNv
bXB1dGVkIGxpbmVoZWlnaHQgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgZm9yIHRoZQpAQCAtNDU2LDcg
KzQ1Niw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4QXNjZW50QW5kRGUKICAgICAg
ICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlv
bnMuCiAgICAgICAgIGlmIChjdXJyLT52ZXJ0aWNhbEFsaWduKCkgPT0gVE9QIHx8IGN1cnItPnZl
cnRpY2FsQWxpZ24oKSA9PSBCT1RUT00pIHsKLSAgICAgICAgICAgIGludCBsaW5lSGVpZ2h0ID0g
Y3Vyci0+bGluZUhlaWdodCgpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0ID0g
Y3Vyci0+bGluZUhlaWdodCgpOwogICAgICAgICAgICAgaWYgKGN1cnItPnZlcnRpY2FsQWxpZ24o
KSA9PSBUT1ApIHsKICAgICAgICAgICAgICAgICBpZiAobWF4QXNjZW50ICsgbWF4RGVzY2VudCA8
IGxpbmVIZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgIG1heERlc2NlbnQgPSBsaW5lSGVpZ2h0
IC0gbWF4QXNjZW50OwpAQCAtNDc1LDggKzQ3NSw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRq
dXN0TWF4QXNjZW50QW5kRGUKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0
ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIGludCYgbWF4UG9zaXRp
b25Ub3AsIGludCYgbWF4UG9zaXRpb25Cb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBib29s
JiBzZXRNYXhBc2NlbnQsIGJvb2wmIHNldE1heERlc2NlbnQsCit2b2lkIElubGluZUZsb3dCb3g6
OmNvbXB1dGVMb2dpY2FsQm94SGVpZ2h0cyhSb290SW5saW5lQm94KiByb290Qm94LCBMYXlvdXRV
bml0JiBtYXhQb3NpdGlvblRvcCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBtYXhB
c2NlbnQsIExheW91dFVuaXQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2VudCwgYm9vbCYg
c2V0TWF4RGVzY2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRl
eHRCb3hEYXRhTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0
aWNhbFBvc2l0aW9uQ2FjaGUpCiB7CkBAIC01MDEsOCArNTAxLDggQEAgdm9pZCBJbmxpbmVGbG93
Qm94Ojpjb21wdXRlTG9naWNhbEJveEhlaQogICAgIAogICAgIGlmIChpc1Jvb3RJbmxpbmVCb3go
KSkgewogICAgICAgICAvLyBFeGFtaW5lIG91ciByb290IGJveC4KLSAgICAgICAgaW50IGFzY2Vu
dCA9IDA7Ci0gICAgICAgIGludCBkZXNjZW50ID0gMDsKKyAgICAgICAgTGF5b3V0VW5pdCBhc2Nl
bnQgPSAwOworICAgICAgICBMYXlvdXRVbml0IGRlc2NlbnQgPSAwOwogICAgICAgICByb290Qm94
LT5hc2NlbnRBbmREZXNjZW50Rm9yQm94KHJvb3RCb3gsIHRleHRCb3hEYXRhTWFwLCBhc2NlbnQs
IGRlc2NlbnQsIGFmZmVjdHNBc2NlbnQsIGFmZmVjdHNEZXNjZW50KTsKICAgICAgICAgaWYgKHN0
cmljdE1vZGUgfHwgaGFzVGV4dENoaWxkcmVuKCkgfHwgKCFjaGVja0NoaWxkcmVuICYmIGhhc1Rl
eHREZXNjZW5kYW50cygpKSkgewogICAgICAgICAgICAgaWYgKG1heEFzY2VudCA8IGFzY2VudCB8
fCAhc2V0TWF4QXNjZW50KSB7CkBAIC01MzMsMTEgKzUzMywxMSBAQCB2b2lkIElubGluZUZsb3dC
b3g6OmNvbXB1dGVMb2dpY2FsQm94SGVpCiAgICAgICAgIC8vIHJvb3QgYm94J3MgYmFzZWxpbmUs
IGFuZCBpdCBpcyBwb3NpdGl2ZSBpZiB0aGUgY2hpbGQgYm94J3MgYmFzZWxpbmUgaXMgYmVsb3cg
dGhlIHJvb3QgYm94J3MgYmFzZWxpbmUuCiAgICAgICAgIGN1cnItPnNldExvZ2ljYWxUb3Aocm9v
dEJveC0+dmVydGljYWxQb3NpdGlvbkZvckJveChjdXJyLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUp
KTsKICAgICAgICAgCi0gICAgICAgIGludCBhc2NlbnQgPSAwOwotICAgICAgICBpbnQgZGVzY2Vu
dCA9IDA7CisgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gMDsKKyAgICAgICAgTGF5b3V0VW5p
dCBkZXNjZW50ID0gMDsKICAgICAgICAgcm9vdEJveC0+YXNjZW50QW5kRGVzY2VudEZvckJveChj
dXJyLCB0ZXh0Qm94RGF0YU1hcCwgYXNjZW50LCBkZXNjZW50LCBhZmZlY3RzQXNjZW50LCBhZmZl
Y3RzRGVzY2VudCk7CiAKLSAgICAgICAgaW50IGJveEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7
CisgICAgICAgIExheW91dFVuaXQgYm94SGVpZ2h0ID0gYXNjZW50ICsgZGVzY2VudDsKICAgICAg
ICAgaWYgKGN1cnItPnZlcnRpY2FsQWxpZ24oKSA9PSBUT1ApIHsKICAgICAgICAgICAgIGlmICht
YXhQb3NpdGlvblRvcCA8IGJveEhlaWdodCkKICAgICAgICAgICAgICAgICBtYXhQb3NpdGlvblRv
cCA9IGJveEhlaWdodDsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNv
bXB1dGVMb2dpY2FsQm94SGVpCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKGludCB0b3AsIGludCBtYXhIZWlnaHQsIGludCBtYXhBc2Nl
bnQsIGJvb2wgc3RyaWN0TW9kZSwgTGF5b3V0VW5pdCYgbGluZVRvcCwgTGF5b3V0VW5pdCYgbGlu
ZUJvdHRvbSwgYm9vbCYgc2V0TGluZVRvcCwKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hl
c0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpZ2h0LCBM
YXlvdXRVbml0IG1heEFzY2VudCwgYm9vbCBzdHJpY3RNb2RlLCBMYXlvdXRVbml0JiBsaW5lVG9w
LCBMYXlvdXRVbml0JiBsaW5lQm90dG9tLCBib29sJiBzZXRMaW5lVG9wLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsaW5lVG9wSW5j
bHVkaW5nTWFyZ2lucywgTGF5b3V0VW5pdCYgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIGJv
b2wmIGhhc0Fubm90YXRpb25zQmVmb3JlLCBib29sJiBoYXNBbm5vdGF0aW9uc0FmdGVyLCBGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlKQogewogICAgIGJvb2wgaXNSb290Qm94ID0gaXNSb290SW5s
aW5lQm94KCk7CkBAIC03MTksMzAgKzcxOSwzMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmZsaXBM
aW5lc0luQmxvY2tEaXJlCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94Ojph
ZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhJbnRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cp
CitpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhM
YXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgaWYgKCFwYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOyAvLyBCb3gtc2hhZG93IGRvZXNuJ3QgYXBwbHkgdG8gcm9vdCBsaW5l
IGJveGVzLgogCi0gICAgaW50IGJveFNoYWRvd0xvZ2ljYWxUb3A7Ci0gICAgaW50IGJveFNoYWRv
d0xvZ2ljYWxCb3R0b207CisgICAgTGF5b3V0VW5pdCBib3hTaGFkb3dMb2dpY2FsVG9wOworICAg
IExheW91dFVuaXQgYm94U2hhZG93TG9naWNhbEJvdHRvbTsKICAgICByZW5kZXJlcigpLT5zdHls
ZShtX2ZpcnN0TGluZSktPmdldEJveFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KGJveFNoYWRv
d0xvZ2ljYWxUb3AsIGJveFNoYWRvd0xvZ2ljYWxCb3R0b20pOwogICAgIAotICAgIGludCBsb2dp
Y2FsVG9wVmlzdWFsT3ZlcmZsb3cgPSBtaW4obG9naWNhbFRvcCgpICsgYm94U2hhZG93TG9naWNh
bFRvcCwgbG9naWNhbFZpc3VhbE92ZXJmbG93LnkoKSk7Ci0gICAgaW50IGxvZ2ljYWxCb3R0b21W
aXN1YWxPdmVyZmxvdyA9IG1heChsb2dpY2FsQm90dG9tKCkgKyBib3hTaGFkb3dMb2dpY2FsQm90
dG9tLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WSgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2lj
YWxUb3BWaXN1YWxPdmVyZmxvdyA9IG1pbihsb2dpY2FsVG9wKCkgKyBib3hTaGFkb3dMb2dpY2Fs
VG9wLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxC
b3R0b21WaXN1YWxPdmVyZmxvdyA9IG1heChsb2dpY2FsQm90dG9tKCkgKyBib3hTaGFkb3dMb2dp
Y2FsQm90dG9tLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WSgpKTsKICAgICAKLSAgICBpbnQg
Ym94U2hhZG93TG9naWNhbExlZnQ7Ci0gICAgaW50IGJveFNoYWRvd0xvZ2ljYWxSaWdodDsKKyAg
ICBMYXlvdXRVbml0IGJveFNoYWRvd0xvZ2ljYWxMZWZ0OworICAgIExheW91dFVuaXQgYm94U2hh
ZG93TG9naWNhbFJpZ2h0OwogICAgIHJlbmRlcmVyKCktPnN0eWxlKG1fZmlyc3RMaW5lKS0+Z2V0
Qm94U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KGJveFNoYWRvd0xvZ2ljYWxMZWZ0LCBib3hT
aGFkb3dMb2dpY2FsUmlnaHQpOwogCi0gICAgaW50IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cg
PSBtaW4ocGl4ZWxTbmFwcGVkTG9naWNhbExlZnQoKSArIGJveFNoYWRvd0xvZ2ljYWxMZWZ0LCBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cueCgpKTsKLSAgICBpbnQgbG9naWNhbFJpZ2h0VmlzdWFsT3Zl
cmZsb3cgPSBtYXgocGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBib3hTaGFkb3dMb2dpY2Fs
UmlnaHQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy5tYXhYKCkpOworICAgIExheW91dFVuaXQgbG9n
aWNhbExlZnRWaXN1YWxPdmVyZmxvdyA9IG1pbihwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpICsg
Ym94U2hhZG93TG9naWNhbExlZnQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOworICAgIExh
eW91dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgPSBtYXgocGl4ZWxTbmFwcGVkTG9n
aWNhbFJpZ2h0KCkgKyBib3hTaGFkb3dMb2dpY2FsUmlnaHQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxv
dy5tYXhYKCkpOwogICAgIAotICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyA9IEludFJlY3QobG9n
aWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cg
LSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cg
LSBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cpOworICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyA9
IExheW91dFJlY3QobG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbFRvcFZpc3VhbE92
ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFJp
Z2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsQm90
dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cpOwogfQogCi1pbmxp
bmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5lVGV4
dEJveCogdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBJbnRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCitpbmxpbmUgdm9pZCBJbmxp
bmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5lVGV4dEJveCogdGV4dEJv
eCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlv
dXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgaWYgKHRleHRCb3gtPmtub3du
VG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICByZXR1cm47CkBAIC03NzcsMzIgKzc3NywzMiBA
QCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzCiAgICAgLy8gYXBwbGll
ZCB0byB0aGUgcmlnaHQsIHNvIHRoaXMgaXMgbm90IGFuIGlzc3VlIHdpdGggbGVmdCBvdmVyZmxv
dy4KICAgICByaWdodEdseXBoT3ZlcmZsb3cgLT0gbWluKDAsIChpbnQpc3R5bGUtPmZvbnQoKS5s
ZXR0ZXJTcGFjaW5nKCkpOwogCi0gICAgaW50IHRleHRTaGFkb3dMb2dpY2FsVG9wOwotICAgIGlu
dCB0ZXh0U2hhZG93TG9naWNhbEJvdHRvbTsKKyAgICBMYXlvdXRVbml0IHRleHRTaGFkb3dMb2dp
Y2FsVG9wOworICAgIExheW91dFVuaXQgdGV4dFNoYWRvd0xvZ2ljYWxCb3R0b207CiAgICAgc3R5
bGUtPmdldFRleHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93TG9naWNhbFRv
cCwgdGV4dFNoYWRvd0xvZ2ljYWxCb3R0b20pOwogICAgIAotICAgIGludCBjaGlsZE92ZXJmbG93
TG9naWNhbFRvcCA9IG1pbih0ZXh0U2hhZG93TG9naWNhbFRvcCArIHRvcEdseXBoT3ZlcmZsb3cs
IHRvcEdseXBoT3ZlcmZsb3cpOwotICAgIGludCBjaGlsZE92ZXJmbG93TG9naWNhbEJvdHRvbSA9
IG1heCh0ZXh0U2hhZG93TG9naWNhbEJvdHRvbSArIGJvdHRvbUdseXBoT3ZlcmZsb3csIGJvdHRv
bUdseXBoT3ZlcmZsb3cpOworICAgIExheW91dFVuaXQgY2hpbGRPdmVyZmxvd0xvZ2ljYWxUb3Ag
PSBtaW48TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxUb3AgKyB0b3BHbHlwaE92ZXJmbG93
LCB0b3BHbHlwaE92ZXJmbG93KTsKKyAgICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dMb2dpY2Fs
Qm90dG9tID0gbWF4PExheW91dFVuaXQ+KHRleHRTaGFkb3dMb2dpY2FsQm90dG9tICsgYm90dG9t
R2x5cGhPdmVyZmxvdywgYm90dG9tR2x5cGhPdmVyZmxvdyk7CiAgICAKLSAgICBpbnQgdGV4dFNo
YWRvd0xvZ2ljYWxMZWZ0OwotICAgIGludCB0ZXh0U2hhZG93TG9naWNhbFJpZ2h0OworICAgIExh
eW91dFVuaXQgdGV4dFNoYWRvd0xvZ2ljYWxMZWZ0OworICAgIExheW91dFVuaXQgdGV4dFNoYWRv
d0xvZ2ljYWxSaWdodDsKICAgICBzdHlsZS0+Z2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4
dGVudCh0ZXh0U2hhZG93TG9naWNhbExlZnQsIHRleHRTaGFkb3dMb2dpY2FsUmlnaHQpOwogICAg
Ci0gICAgaW50IGNoaWxkT3ZlcmZsb3dMb2dpY2FsTGVmdCA9IG1pbih0ZXh0U2hhZG93TG9naWNh
bExlZnQgKyBsZWZ0R2x5cGhPdmVyZmxvdywgbGVmdEdseXBoT3ZlcmZsb3cpOwotICAgIGludCBj
aGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0ID0gbWF4KHRleHRTaGFkb3dMb2dpY2FsUmlnaHQgKyBy
aWdodEdseXBoT3ZlcmZsb3csIHJpZ2h0R2x5cGhPdmVyZmxvdyk7CisgICAgTGF5b3V0VW5pdCBj
aGlsZE92ZXJmbG93TG9naWNhbExlZnQgPSBtaW48TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2lj
YWxMZWZ0ICsgbGVmdEdseXBoT3ZlcmZsb3csIGxlZnRHbHlwaE92ZXJmbG93KTsKKyAgICBMYXlv
dXRVbml0IGNoaWxkT3ZlcmZsb3dMb2dpY2FsUmlnaHQgPSBtYXg8TGF5b3V0VW5pdD4odGV4dFNo
YWRvd0xvZ2ljYWxSaWdodCArIHJpZ2h0R2x5cGhPdmVyZmxvdywgcmlnaHRHbHlwaE92ZXJmbG93
KTsKIAotICAgIGludCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cgPSBtaW4odGV4dEJveC0+bG9n
aWNhbFRvcCgpICsgY2hpbGRPdmVyZmxvd0xvZ2ljYWxUb3AsIGxvZ2ljYWxWaXN1YWxPdmVyZmxv
dy55KCkpOwotICAgIGludCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBtYXgodGV4dEJv
eC0+bG9naWNhbEJvdHRvbSgpICsgY2hpbGRPdmVyZmxvd0xvZ2ljYWxCb3R0b20sIGxvZ2ljYWxW
aXN1YWxPdmVyZmxvdy5tYXhZKCkpOwotICAgIGludCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93
ID0gbWluKHRleHRCb3gtPnBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0KCkgKyBjaGlsZE92ZXJmbG93
TG9naWNhbExlZnQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOwotICAgIGludCBsb2dpY2Fs
UmlnaHRWaXN1YWxPdmVyZmxvdyA9IG1heCh0ZXh0Qm94LT5waXhlbFNuYXBwZWRMb2dpY2FsUmln
aHQoKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsUmlnaHQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy5t
YXhYKCkpOworICAgIExheW91dFVuaXQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93ID0gbWluKHRl
eHRCb3gtPmxvZ2ljYWxUb3AoKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsVG9wLCBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cueSgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVy
ZmxvdyA9IG1heCh0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkgKyBjaGlsZE92ZXJmbG93TG9naWNh
bEJvdHRvbSwgbG9naWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7CisgICAgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93ID0gbWluKHRleHRCb3gtPnBpeGVsU25hcHBlZExvZ2lj
YWxMZWZ0KCkgKyBjaGlsZE92ZXJmbG93TG9naWNhbExlZnQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxv
dy54KCkpOworICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgPSBtYXgo
dGV4dEJveC0+cGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBjaGlsZE92ZXJmbG93TG9naWNh
bFJpZ2h0LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WCgpKTsKICAgICAKLSAgICBsb2dpY2Fs
VmlzdWFsT3ZlcmZsb3cgPSBJbnRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2lj
YWxUb3BWaXN1YWxPdmVyZmxvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywg
bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsK
KyAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFs
T3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExl
ZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRv
cFZpc3VhbE92ZXJmbG93KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgIHRleHRCb3gtPnNldExvZ2ljYWxPdmVyZmxvd1JlY3QobG9naWNhbFZpc3VhbE92ZXJmbG93
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJm
bG93KGNvbnN0IElubGluZUJveCogaW5saW5lQm94LCBJbnRSZWN0JiBsb2dpY2FsTGF5b3V0T3Zl
cmZsb3csIEludFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdykKK2lubGluZSB2b2lkIElubGlu
ZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBJbmxpbmVCb3gqIGlubGlu
ZUJveCwgTGF5b3V0UmVjdCYgbG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRSZWN0JiBsb2dp
Y2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChp
bmxpbmVCb3gtPnJlbmRlcmVyKCkpOwogICAgIApAQCAtODEwLDcgKzgxMCw3IEBAIGlubGluZSB2
b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2gKICAgICAvLyB0cmFuc2Zvcm1zIG9yIHJl
bGF0aXZlIHBvc2l0aW9uaW5nIChzaW5jZSB0aG9zZSBvYmplY3RzIGFsd2F5cyBoYXZlIHNlbGYt
cGFpbnRpbmcgbGF5ZXJzKSwgYnV0IGl0IGRvZXMgbmVlZCB0byBiZSBhZGp1c3RlZAogICAgIC8v
IGZvciB3cml0aW5nLW1vZGUgZGlmZmVyZW5jZXMuCiAgICAgaWYgKCFib3gtPmhhc1NlbGZQYWlu
dGluZ0xheWVyKCkpIHsKLSAgICAgICAgSW50UmVjdCBjaGlsZExvZ2ljYWxWaXN1YWxPdmVyZmxv
dyA9IGJveC0+bG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKHJlbmRlcmVy
KCktPnN0eWxlKCkpOworICAgICAgICBMYXlvdXRSZWN0IGNoaWxkTG9naWNhbFZpc3VhbE92ZXJm
bG93ID0gYm94LT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24ocmVuZGVy
ZXIoKS0+c3R5bGUoKSk7CiAgICAgICAgIGNoaWxkTG9naWNhbFZpc3VhbE92ZXJmbG93Lm1vdmUo
aW5saW5lQm94LT5sb2dpY2FsTGVmdCgpLCBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSk7CiAgICAg
ICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy51bml0ZShjaGlsZExvZ2ljYWxWaXN1YWxPdmVyZmxv
dyk7CiAgICAgfQpAQCAtODE4LDcgKzgxOCw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6
OmFkZFJlcGxhY2VkQ2gKICAgICAvLyBMYXlvdXQgb3ZlcmZsb3cgaW50ZXJuYWwgdG8gdGhlIGNo
aWxkIGJveCBvbmx5IHByb3BhZ2F0ZXMgaWYgdGhlIGNoaWxkIGJveCBkb2Vzbid0IGhhdmUgb3Zl
cmZsb3cgY2xpcCBzZXQuCiAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGlsZCBib3JkZXIgYm94IHBy
b3BhZ2F0ZXMgYXMgbGF5b3V0IG92ZXJmbG93LiAgVGhpcyByZWN0YW5nbGUgbXVzdCBpbmNsdWRl
IHRyYW5zZm9ybXMgYW5kIHJlbGF0aXZlIHBvc2l0aW9uaW5nCiAgICAgLy8gYW5kIGJlIGFkanVz
dGVkIGZvciB3cml0aW5nLW1vZGUgZGlmZmVyZW5jZXMuCi0gICAgSW50UmVjdCBjaGlsZExvZ2lj
YWxMYXlvdXRPdmVyZmxvdyA9IGJveC0+bG9naWNhbExheW91dE92ZXJmbG93UmVjdEZvclByb3Bh
Z2F0aW9uKHJlbmRlcmVyKCktPnN0eWxlKCkpOworICAgIExheW91dFJlY3QgY2hpbGRMb2dpY2Fs
TGF5b3V0T3ZlcmZsb3cgPSBib3gtPmxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9wYWdh
dGlvbihyZW5kZXJlcigpLT5zdHlsZSgpKTsKICAgICBjaGlsZExvZ2ljYWxMYXlvdXRPdmVyZmxv
dy5tb3ZlKGlubGluZUJveC0+bG9naWNhbExlZnQoKSwgaW5saW5lQm94LT5sb2dpY2FsVG9wKCkp
OwogICAgIGxvZ2ljYWxMYXlvdXRPdmVyZmxvdy51bml0ZShjaGlsZExvZ2ljYWxMYXlvdXRPdmVy
Zmxvdyk7CiB9CkBAIC0xMDc0LDE0ICsxMDc0LDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFp
bnRCb3hTaGFkb3coR3JhcGgKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6Y29uc3Ry
YWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoSW50UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQg
SW5saW5lRmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0
UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBib29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPmluTm9RdWlya3NNb2RlKCk7CiAgICAgaWYgKCFub1F1aXJrc01vZGUgJiYg
IWhhc1RleHRDaGlsZHJlbigpICYmICEoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRC
YXNlbGluZSgpICYmIGhhc1RleHREZXNjZW5kYW50cygpKSkgewogICAgICAgICBjb25zdCBSb290
SW5saW5lQm94KiByb290Qm94ID0gcm9vdCgpOwotICAgICAgICBpbnQgbG9naWNhbFRvcCA9IGlz
SG9yaXpvbnRhbCgpID8gcmVjdC55KCkgOiByZWN0LngoKTsKLSAgICAgICAgaW50IGxvZ2ljYWxI
ZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IHJlY3QuaGVpZ2h0KCkgOiByZWN0LndpZHRoKCk7Ci0g
ICAgICAgIGludCBib3R0b20gPSBtaW4ocm9vdEJveC0+bGluZUJvdHRvbSgpLCBsb2dpY2FsVG9w
ICsgbG9naWNhbEhlaWdodCk7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IGlzSG9y
aXpvbnRhbCgpID8gcmVjdC55KCkgOiByZWN0LngoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyByZWN0LmhlaWdodCgpIDogcmVjdC53aWR0aCgp
OworICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IG1pbihyb290Qm94LT5saW5lQm90dG9tKCks
IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgbG9naWNhbFRvcCA9IG1heChy
b290Qm94LT5saW5lVG9wKCksIGxvZ2ljYWxUb3ApOwogICAgICAgICBsb2dpY2FsSGVpZ2h0ID0g
Ym90dG9tIC0gbG9naWNhbFRvcDsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCgpKSB7CkBAIC0x
Mjk3LDkgKzEyOTcsOSBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbigpCiAg
ICAgICAgIGJveC0+Y2xlYXJUcnVuY2F0aW9uKCk7CiB9CiAKLWludCBJbmxpbmVGbG93Qm94Ojpj
b21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KGludCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0
CitMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1l
bnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgaW50IHJlc3VsdCA9
IDA7CisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSAwOwogICAgIGZvciAoSW5saW5lQm94KiBjdXJy
ID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRp
b25zLgpAQCAtMTMxNCwxMyArMTMxNCwxMyBAQCBpbnQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92
ZXJBbm5vdGF0aW9uCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmICghcnVieVJ1bi0+c3R5bGUoKS0+aXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IHRvcE9mRmlyc3RSdWJ5VGV4dExpbmUgPSBydWJ5
VGV4dC0+bG9naWNhbFRvcCgpICsgKHJ1YnlUZXh0LT5maXJzdFJvb3RCb3goKSA/IHJ1YnlUZXh0
LT5maXJzdFJvb3RCb3goKS0+bGluZVRvcCgpIDogMCk7CisgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCB0b3BPZkZpcnN0UnVieVRleHRMaW5lID0gcnVieVRleHQtPmxvZ2ljYWxUb3AoKSArIChy
dWJ5VGV4dC0+Zmlyc3RSb290Qm94KCkgPyBydWJ5VGV4dC0+Zmlyc3RSb290Qm94KCktPmxpbmVU
b3AoKSA6IDApOwogICAgICAgICAgICAgICAgIGlmICh0b3BPZkZpcnN0UnVieVRleHRMaW5lID49
IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHRvcE9m
Rmlyc3RSdWJ5VGV4dExpbmUgKz0gY3Vyci0+bG9naWNhbFRvcCgpOwogICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1heChyZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRmlyc3RSdWJ5VGV4
dExpbmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgYm90dG9t
T2ZMYXN0UnVieVRleHRMaW5lID0gcnVieVRleHQtPmxvZ2ljYWxUb3AoKSArIChydWJ5VGV4dC0+
bGFzdFJvb3RCb3goKSA/IHJ1YnlUZXh0LT5sYXN0Um9vdEJveCgpLT5saW5lQm90dG9tKCkgOiBy
dWJ5VGV4dC0+bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGJv
dHRvbU9mTGFzdFJ1YnlUZXh0TGluZSA9IHJ1YnlUZXh0LT5sb2dpY2FsVG9wKCkgKyAocnVieVRl
eHQtPmxhc3RSb290Qm94KCkgPyBydWJ5VGV4dC0+bGFzdFJvb3RCb3goKS0+bGluZUJvdHRvbSgp
IDogcnVieVRleHQtPmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJvdHRv
bU9mTGFzdFJ1YnlUZXh0TGluZSA8PSBjdXJyLT5sb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGJvdHRvbU9mTGFzdFJ1YnlUZXh0
TGluZSArPSBjdXJyLT5sb2dpY2FsVG9wKCk7CkBAIC0xMzQ1LDkgKzEzNDUsOSBAQCBpbnQgSW5s
aW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJBbm5vdGF0aW9uCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotaW50IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KGlu
dCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0CitMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1
dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBvc2l0aW9uKSBj
b25zdAogewotICAgIGludCByZXN1bHQgPSAwOworICAgIExheW91dFVuaXQgcmVzdWx0ID0gMDsK
ICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRl
cnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KQEAgLTEzNTksMTAgKzEzNTksMTAgQEAgaW50
IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpbwogICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gY3Vyci0+cmVuZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpOwogICAg
ICAgICAgICAgaWYgKHN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFy
a05vbmUgJiYgc3R5bGUtPnRleHRFbXBoYXNpc1Bvc2l0aW9uKCkgPT0gVGV4dEVtcGhhc2lzUG9z
aXRpb25VbmRlcikgewogICAgICAgICAgICAgICAgIGlmICghc3R5bGUtPmlzRmxpcHBlZExpbmVz
V3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgYm90dG9tT2ZFbXBoYXNp
c01hcmsgPSBjdXJyLT5sb2dpY2FsQm90dG9tKCkgKyBzdHlsZS0+Zm9udCgpLmVtcGhhc2lzTWFy
a0hlaWdodChzdHlsZS0+dGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBib3R0b21PZkVtcGhhc2lzTWFyayA9IGN1cnItPmxvZ2ljYWxCb3R0
b20oKSArIHN0eWxlLT5mb250KCkuZW1waGFzaXNNYXJrSGVpZ2h0KHN0eWxlLT50ZXh0RW1waGFz
aXNNYXJrU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtYXgocmVzdWx0
LCBib3R0b21PZkVtcGhhc2lzTWFyayAtIGFsbG93ZWRQb3NpdGlvbik7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHRvcE9mRW1waGFzaXNNYXJrID0g
Y3Vyci0+bG9naWNhbFRvcCgpIC0gc3R5bGUtPmZvbnQoKS5lbXBoYXNpc01hcmtIZWlnaHQoc3R5
bGUtPnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIExheW91
dFVuaXQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjdXJyLT5sb2dpY2FsVG9wKCkgLSBzdHlsZS0+Zm9u
dCgpLmVtcGhhc2lzTWFya0hlaWdodChzdHlsZS0+dGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF4KHJlc3VsdCwgYWxsb3dlZFBvc2l0aW9u
IC0gdG9wT2ZFbXBoYXNpc01hcmspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkocmV2aXNpb24g
OTA4MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjUsMTggKzE2NSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1p
bmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHlMYXN0
UnVuV3JhcHBlZCwgUmVuZGVyT2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpOwogICAg
IGludCBnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIGZsb2F0IHBsYWNlQm94ZXNJ
bklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2lu
ZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKLSAgICB2b2lkIGNvbXB1dGVM
b2dpY2FsQm94SGVpZ2h0cyhSb290SW5saW5lQm94KiwgaW50JiBtYXhQb3NpdGlvblRvcCwgaW50
JiBtYXhQb3NpdGlvbkJvdHRvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBib29sJiBzZXRNYXhBc2NlbnQsIGJvb2wm
IHNldE1heERlc2NlbnQsCisgICAgdm9pZCBjb21wdXRlTG9naWNhbEJveEhlaWdodHMoUm9vdElu
bGluZUJveCosIExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3Np
dGlvbkJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2VudCwg
Ym9vbCYgc2V0TWF4RGVzY2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHN0cmljdE1vZGUsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgRm9udEJh
c2VsaW5lLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKLSAgICB2b2lkIGFkanVzdE1heEFzY2Vu
dEFuZERlc2NlbnQoaW50JiBtYXhBc2NlbnQsIGludCYgbWF4RGVzY2VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heFBvc2l0aW9uVG9wLCBpbnQgbWF4UG9zaXRp
b25Cb3R0b20pOworICAgIHZvaWQgYWRqdXN0TWF4QXNjZW50QW5kRGVzY2VudChMYXlvdXRVbml0
JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERlc2NlbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQgbWF4
UG9zaXRpb25Cb3R0b20pOwogICAgIHZvaWQgcGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IG1heEhlaWdodCwgTGF5b3V0VW5pdCBtYXhB
c2NlbnQsIGJvb2wgc3RyaWN0TW9kZSwgTGF5b3V0VW5pdCYgbGluZVRvcCwgTGF5b3V0VW5pdCYg
bGluZUJvdHRvbSwgYm9vbCYgc2V0TGluZVRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQmIGxpbmVUb3BJbmNsdWRpbmdNYXJnaW5zLCBMYXlvdXRVbml0
JiBsaW5lQm90dG9tSW5jbHVkaW5nTWFyZ2lucywgYm9vbCYgaGFzQW5ub3RhdGlvbnNCZWZvcmUs
IGJvb2wmIGhhc0Fubm90YXRpb25zQWZ0ZXIsIEZvbnRCYXNlbGluZSk7CiAgICAgdm9pZCBmbGlw
TGluZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5l
Qm90dG9tKTsKICAgICBib29sIHJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZShjb25zdCBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYpIGNvbnN0OwogCi0gICAgaW50IGNvbXB1dGVP
dmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoaW50IGFsbG93ZWRQb3NpdGlvbikgY29uc3Q7Ci0gICAg
aW50IGNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KGludCBhbGxvd2VkUG9zaXRpb24p
IGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChM
YXlvdXRVbml0IGFsbG93ZWRQb3NpdGlvbikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb21wdXRl
VW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlvdXRVbml0IGFsbG93ZWRQb3NpdGlvbikgY29u
c3Q7CiAKICAgICB2b2lkIGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKICAg
ICAKQEAgLTI3MywxMCArMjczLDEwIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBhZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhJbnRSZWN0JiBsb2dpY2FsVmlzdWFsT3Zl
cmZsb3cpOwotICAgIHZvaWQgYWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRCb3gq
LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIEludFJlY3QmIGxvZ2ljYWxWaXN1
YWxPdmVyZmxvdyk7Ci0gICAgdm9pZCBhZGRSZXBsYWNlZENoaWxkT3ZlcmZsb3coY29uc3QgSW5s
aW5lQm94KiwgSW50UmVjdCYgbG9naWNhbExheW91dE92ZXJmbG93LCBJbnRSZWN0JiBsb2dpY2Fs
VmlzdWFsT3ZlcmZsb3cpOwotICAgIHZvaWQgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZO
ZWVkZWQoSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgYWRkQm94U2hhZG93VmlzdWFsT3ZlcmZs
b3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKKyAgICB2b2lkIGFkZFRleHRC
b3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94KiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOworICAgIHZvaWQg
YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNvbnN0IElubGluZUJveCosIExheW91dFJlY3QmIGxv
Z2ljYWxMYXlvdXRPdmVyZmxvdywgTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsK
KyAgICB2b2lkIGNvbnN0cmFpblRvTGluZVRvcEFuZEJvdHRvbUlmTmVlZGVkKExheW91dFJlY3Qm
KSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIE93blB0cjxSZW5kZXJPdmVyZmxvdz4gbV9vdmVy
ZmxvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2
aXNpb24gOTA4MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDI5LDcgKzMwMjksNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJs
b2NrOjpsb2dpY2FsTGVmdFNlbGVjCiB9CiAKIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2lj
YWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQ
b2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
RnJvbVJvb3RCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJPYmplY3QqIHNlbE9iaiwgaW50IGxvZ2ljYWxSaWdodCwgaW50IGxvZ2lj
YWxUb3AsIGludCBsb2dpY2FsSGVpZ2h0LCBjb25zdCBQYWludEluZm8qIHBhaW50SW5mbykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIHNlbE9iaiwgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQsIExheW91dFVuaXQgbG9naWNhbFRv
cCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBjb25zdCBQYWludEluZm8qIHBhaW50SW5mbykK
IHsKICAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxUb3AgPSBibG9ja0RpcmVjdGlvbk9m
ZnNldChyb290QmxvY2ssIG9mZnNldEZyb21Sb290QmxvY2spICsgbG9naWNhbFRvcDsKICAgICBM
YXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxMZWZ0ID0gbWF4KGlubGluZURpcmVjdGlvbk9mZnNl
dChyb290QmxvY2ssIG9mZnNldEZyb21Sb290QmxvY2spICsgbG9naWNhbFJpZ2h0LCBtYXgobG9n
aWNhbExlZnRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wKSwgbG9naWNhbExl
ZnRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodCkp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiA5
MDgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc05v
blplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAogICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3Rz
Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7Ci0gICAg
SW50UmVjdCBsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBj
b25zdCBJbnRQb2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYg
b2Zmc2V0RnJvbVJvb3RCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogc2VsT2JqLCBpbnQgbG9naWNhbExlZnQsIGludCBsb2dpY2FsVG9wLCBp
bnQgbG9naWNhbEhlaWdodCwgY29uc3QgUGFpbnRJbmZvKik7Ci0gICAgSW50UmVjdCBsb2dpY2Fs
UmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgSW50UG9pbnQm
IHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IEludFNpemUmIG9mZnNldEZyb21Sb290
QmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiBzZWxPYmosIGludCBsb2dpY2FsUmlnaHQsIGludCBsb2dpY2FsVG9wLCBpbnQgbG9naWNhbEhl
aWdodCwgY29uc3QgUGFpbnRJbmZvKik7CisgICAgTGF5b3V0UmVjdCBsb2dpY2FsTGVmdFNlbGVj
dGlvbkdhcChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJs
b2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
c2VsT2JqLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgY29uc3QgUGFpbnRJbmZvKik7CisgICAgTGF5b3V0UmVj
dCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3Qg
TGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290QmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyT2JqZWN0KiBzZWxPYmosIExheW91dFVuaXQgbG9naWNhbFJpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgY29uc3QgUGFpbnRJ
bmZvKik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25HYXBJbmZvKFNlbGVjdGlvblN0YXRlLCBib29s
JiBsZWZ0R2FwLCBib29sJiByaWdodEdhcCk7CiAgICAgSW50UmVjdCBsb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KGNvbnN0IEludFBvaW50JiBwaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBJbnRSZWN0
JiBsb2dpY2FsUmVjdCk7CiAgICAgICAgIApAQCAtNjI2LDggKzYyNiw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsYXN0TG9naWNhbFRv
cCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsYXN0TG9naWNhbFJp
Z2h0LCBjb25zdCBQYWludEluZm8qKTsKICAgICBHYXBSZWN0cyBibG9ja1NlbGVjdGlvbkdhcHMo
UmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNp
Y2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxhc3RMb2dpY2FsVG9wLCBM
YXlvdXRVbml0JiBsYXN0TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsUmlnaHQs
IGNvbnN0IFBhaW50SW5mbyopOwotICAgIEludFJlY3QgYmxvY2tTZWxlY3Rpb25HYXAoUmVuZGVy
QmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9z
aXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxhc3RMb2dpY2FsVG9wLCBMYXlvdXRVbml0
IGxhc3RMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsYXN0TG9naWNhbFJpZ2h0LCBMYXlvdXRVbml0
IGxvZ2ljYWxCb3R0b20sIGNvbnN0IFBhaW50SW5mbyopOworICAgIExheW91dFJlY3QgYmxvY2tT
ZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJv
b3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290
QmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxhc3RM
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxhc3RMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsYXN0TG9n
aWNhbFJpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIGNvbnN0IFBhaW50SW5mbyopOwog
ICAgIExheW91dFVuaXQgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJv
b3RCbG9jaywgTGF5b3V0VW5pdCBwb3NpdGlvbik7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmln
aHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgTGF5b3V0VW5pdCBwb3Np
dGlvbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCShyZXZpc2lvbiA5MDgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUm9v
dElubGluZUJveDo6Y2hpbGRSZW1vdmVkKElubGluZUIKICAgICB9CiB9CiAKLWludCBSb290SW5s
aW5lQm94OjphbGlnbkJveGVzSW5CbG9ja0RpcmVjdGlvbihpbnQgaGVpZ2h0T2ZCbG9jaywgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSkKK0xheW91dFVuaXQgUm9vdElubGlu
ZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBoZWlnaHRPZkJsb2Nr
LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRp
Y2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQogewogI2lmIEVOQUJMRShT
VkcpCiAgICAgLy8gU1ZHIHdpbGwgaGFuZGxlIHZlcnRpY2FsIGFsaWdubWVudCBvbiBpdHMgb3du
LgpAQCAtMjI4LDEwICsyMjgsMTAgQEAgaW50IFJvb3RJbmxpbmVCb3g6OmFsaWduQm94ZXNJbkJs
b2NrRGlyZQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCi0gICAgaW50IG1heFBvc2l0aW9u
VG9wID0gMDsKLSAgICBpbnQgbWF4UG9zaXRpb25Cb3R0b20gPSAwOwotICAgIGludCBtYXhBc2Nl
bnQgPSAwOwotICAgIGludCBtYXhEZXNjZW50ID0gMDsKKyAgICBMYXlvdXRVbml0IG1heFBvc2l0
aW9uVG9wID0gMDsKKyAgICBMYXlvdXRVbml0IG1heFBvc2l0aW9uQm90dG9tID0gMDsKKyAgICBM
YXlvdXRVbml0IG1heEFzY2VudCA9IDA7CisgICAgTGF5b3V0VW5pdCBtYXhEZXNjZW50ID0gMDsK
ICAgICBib29sIHNldE1heEFzY2VudCA9IGZhbHNlOwogICAgIGJvb2wgc2V0TWF4RGVzY2VudCA9
IGZhbHNlOwogCkBAIC0yNDYsMTEgKzI0NiwxMSBAQCBpbnQgUm9vdElubGluZUJveDo6YWxpZ25C
b3hlc0luQmxvY2tEaXJlCiAgICAgaWYgKG1heEFzY2VudCArIG1heERlc2NlbnQgPCBtYXgobWF4
UG9zaXRpb25Ub3AsIG1heFBvc2l0aW9uQm90dG9tKSkKICAgICAgICAgYWRqdXN0TWF4QXNjZW50
QW5kRGVzY2VudChtYXhBc2NlbnQsIG1heERlc2NlbnQsIG1heFBvc2l0aW9uVG9wLCBtYXhQb3Np
dGlvbkJvdHRvbSk7CiAKLSAgICBpbnQgbWF4SGVpZ2h0ID0gbWF4QXNjZW50ICsgbWF4RGVzY2Vu
dDsKLSAgICBpbnQgbGluZVRvcCA9IGhlaWdodE9mQmxvY2s7Ci0gICAgaW50IGxpbmVCb3R0b20g
PSBoZWlnaHRPZkJsb2NrOwotICAgIGludCBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyA9IGhlaWdo
dE9mQmxvY2s7Ci0gICAgaW50IGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zID0gaGVpZ2h0T2ZC
bG9jazsKKyAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IG1heEFzY2VudCArIG1heERlc2NlbnQ7
CisgICAgTGF5b3V0VW5pdCBsaW5lVG9wID0gaGVpZ2h0T2ZCbG9jazsKKyAgICBMYXlvdXRVbml0
IGxpbmVCb3R0b20gPSBoZWlnaHRPZkJsb2NrOworICAgIExheW91dFVuaXQgbGluZVRvcEluY2x1
ZGluZ01hcmdpbnMgPSBoZWlnaHRPZkJsb2NrOworICAgIExheW91dFVuaXQgbGluZUJvdHRvbUlu
Y2x1ZGluZ01hcmdpbnMgPSBoZWlnaHRPZkJsb2NrOwogICAgIGJvb2wgc2V0TGluZVRvcCA9IGZh
bHNlOwogICAgIGJvb2wgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSBmYWxzZTsKICAgICBib29sIGhh
c0Fubm90YXRpb25zQWZ0ZXIgPSBmYWxzZTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBpbnQgUm9vdElu
bGluZUJveDo6YWxpZ25Cb3hlc0luQmxvY2tEaXJlCiAgICAgICAgIGhlaWdodE9mQmxvY2sgKz0g
YW5ub3RhdGlvbnNBZGp1c3RtZW50OwogICAgIH0KIAotICAgIG1heEhlaWdodCA9IG1heCgwLCBt
YXhIZWlnaHQpOworICAgIG1heEhlaWdodCA9IG1heDxMYXlvdXRVbml0PigwLCBtYXhIZWlnaHQp
OwogCiAgICAgcmV0dXJuIGhlaWdodE9mQmxvY2sgKyBtYXhIZWlnaHQ7CiB9CkBAIC0zMDQsOCAr
MzA0LDggQEAgaW50IFJvb3RJbmxpbmVCb3g6OmJlZm9yZUFubm90YXRpb25zQWRqdQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25H
YXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgSW50UG9pbnQmIHJvb3RCbG9ja1BoeXNp
Y2FsUG9zaXRpb24sIGNvbnN0IEludFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VsVG9wLCBpbnQgc2VsSGVp
Z2h0LCBjb25zdCBQYWludEluZm8qIHBhaW50SW5mbykKK0dhcFJlY3RzIFJvb3RJbmxpbmVCb3g6
OmxpbmVTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9p
bnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZy
b21Sb290QmxvY2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWlnaHQsIGNvbnN0IFBhaW50SW5mbyog
cGFpbnRJbmZvKQogewogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbGluZVN0YXRl
ID0gc2VsZWN0aW9uU3RhdGUoKTsKIApAQCAtMzMyLDEzICszMzIsMTMgQEAgR2FwUmVjdHMgUm9v
dElubGluZUJveDo6bGluZVNlbGVjdGlvbkdhcAogICAgIC8vIFdlIGNhbiBzZWUgdGhhdCB0aGUg
fGJiYnwgcnVuIGlzIG5vdCBwYXJ0IG9mIHRoZSBzZWxlY3Rpb24gd2hpbGUgdGhlIHJ1bnMgYXJv
dW5kIGl0IGFyZS4KICAgICBpZiAoZmlyc3RCb3ggJiYgZmlyc3RCb3ggIT0gbGFzdEJveCkgewog
ICAgICAgICAvLyBOb3cgZmlsbCBpbiBhbnkgZ2FwcyBvbiB0aGUgbGluZSB0aGF0IG9jY3VycmVk
IGJldHdlZW4gdHdvIHNlbGVjdGVkIGVsZW1lbnRzLgotICAgICAgICBpbnQgbGFzdExvZ2ljYWxM
ZWZ0ID0gZmlyc3RCb3gtPmxvZ2ljYWxSaWdodCgpOworICAgICAgICBMYXlvdXRVbml0IGxhc3RM
b2dpY2FsTGVmdCA9IGZpcnN0Qm94LT5sb2dpY2FsUmlnaHQoKTsKICAgICAgICAgYm9vbCBpc1By
ZXZpb3VzQm94U2VsZWN0ZWQgPSBmaXJzdEJveC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvbk5vbmU7CiAgICAgICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBmaXJz
dEJveC0+bmV4dExlYWZDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZDaGlsZCgpKSB7
CiAgICAgICAgICAgICBpZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uTm9uZSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgbG9naWNhbFJlY3QobGFz
dExvZ2ljYWxMZWZ0LCBzZWxUb3AsIGJveC0+bG9naWNhbExlZnQoKSAtIGxhc3RMb2dpY2FsTGVm
dCwgc2VsSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlKHJlbmRlcmVy
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvZmZzZXRGcm9tUm9vdEJsb2NrIDogSW50
U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhlaWdodCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndp
ZHRoKCkpKTsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGdhcFJlY3QgPSByb290QmxvY2stPmxv
Z2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNh
bFJlY3QpOworICAgICAgICAgICAgICAgIExheW91dFJlY3QgbG9naWNhbFJlY3QobGFzdExvZ2lj
YWxMZWZ0LCBzZWxUb3AsIGJveC0+bG9naWNhbExlZnQoKSAtIGxhc3RMb2dpY2FsTGVmdCwgc2Vs
SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlKHJlbmRlcmVyKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvZmZzZXRGcm9tUm9vdEJsb2NrIDogTGF5b3V0U2l6
ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhlaWdodCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRo
KCkpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2stPmxv
Z2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNh
bFJlY3QpOwogICAgICAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2Fw
UmVjdC53aWR0aCgpID4gMCAmJiBnYXBSZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAocGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCktPnN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQogICAgICAgICAgICAgICAgICAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJl
cigpLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRBc2NlbnRBbmREZXNjZW50KGludCYgYXNjCiAgICAgfQogfQogCi12b2lkIFJvb3RJbmxp
bmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3goSW5saW5lQm94KiBib3gsIEdseXBoT3ZlcmZs
b3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgaW50JiBhc2NlbnQsIGludCYg
ZGVzY2VudCwKK3ZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChJbmxp
bmVCb3gqIGJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRh
TWFwLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgYWZmZWN0c0FzY2VudCwgYm9v
bCYgYWZmZWN0c0Rlc2NlbnQpIGNvbnN0CiB7CiAgICAgYm9vbCBhc2NlbnREZXNjZW50U2V0ID0g
ZmFsc2U7CkBAIC02MDIsMTEgKzYwMiwxMSBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFu
ZERlc2NlbnRGb3JCCiAgICAgICAgIHVzZWRGb250cy0+YXBwZW5kKGJveC0+cmVuZGVyZXIoKS0+
c3R5bGUobV9maXJzdExpbmUpLT5mb250KCkucHJpbWFyeUZvbnQoKSk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdXNlZEZvbnRzLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gdXNlZEZvbnRzLT5hdChpKS0+Zm9udE1l
dHJpY3MoKTsKLSAgICAgICAgICAgIGludCB1c2VkRm9udEFzY2VudCA9IGZvbnRNZXRyaWNzLmFz
Y2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgICAgICBpbnQgdXNlZEZvbnREZXNjZW50ID0g
Zm9udE1ldHJpY3MuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgICAgICBpbnQgaGFs
ZkxlYWRpbmcgPSAoZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDI7Ci0gICAgICAgICAgICBpbnQgdXNlZEZvbnRBc2NlbnRBbmRMZWFkaW5nID0gdXNl
ZEZvbnRBc2NlbnQgKyBoYWxmTGVhZGluZzsKLSAgICAgICAgICAgIGludCB1c2VkRm9udERlc2Nl
bnRBbmRMZWFkaW5nID0gZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSAtIHVzZWRGb250QXNjZW50
QW5kTGVhZGluZzsKKyAgICAgICAgICAgIExheW91dFVuaXQgdXNlZEZvbnRBc2NlbnQgPSBmb250
TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCB1
c2VkRm9udERlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KGJhc2VsaW5lVHlwZSgpKTsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgaGFsZkxlYWRpbmcgPSAoZm9udE1ldHJpY3MubGluZVNwYWNp
bmcoKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7CisgICAgICAgICAgICBMYXlvdXRVbml0
IHVzZWRGb250QXNjZW50QW5kTGVhZGluZyA9IHVzZWRGb250QXNjZW50ICsgaGFsZkxlYWRpbmc7
CisgICAgICAgICAgICBMYXlvdXRVbml0IHVzZWRGb250RGVzY2VudEFuZExlYWRpbmcgPSBmb250
TWV0cmljcy5saW5lU3BhY2luZygpIC0gdXNlZEZvbnRBc2NlbnRBbmRMZWFkaW5nOwogICAgICAg
ICAgICAgaWYgKGluY2x1ZGVGb250KSB7CiAgICAgICAgICAgICAgICAgc2V0QXNjZW50QW5kRGVz
Y2VudChhc2NlbnQsIGRlc2NlbnQsIHVzZWRGb250QXNjZW50LCB1c2VkRm9udERlc2NlbnQsIGFz
Y2VudERlc2NlbnRTZXQpOwogICAgICAgICAgICAgICAgIHNldFVzZWRGb250ID0gdHJ1ZTsKQEAg
LTY2Nyw3ICs2NjcsNyBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JC
CiAgICAgfQogfQogCi1pbnQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChJ
bmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2Fj
aGUpCitMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5s
aW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hl
KQogewogICAgIGlmIChib3gtPnJlbmRlcmVyKCktPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4g
Ym94LT5wYXJlbnQoKS0+bG9naWNhbFRvcCgpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGludCBSb290
SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm8KICAgICAvLyBDaGVjayB0aGUgY2FjaGUu
CiAgICAgYm9vbCBpc1JlbmRlcklubGluZSA9IHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpOwog
ICAgIGlmIChpc1JlbmRlcklubGluZSAmJiAhZmlyc3RMaW5lKSB7Ci0gICAgICAgIGludCB2ZXJ0
aWNhbFBvc2l0aW9uID0gdmVydGljYWxQb3NpdGlvbkNhY2hlLmdldChyZW5kZXJlciwgYmFzZWxp
bmVUeXBlKCkpOworICAgICAgICBMYXlvdXRVbml0IHZlcnRpY2FsUG9zaXRpb24gPSB2ZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUuZ2V0KHJlbmRlcmVyLCBiYXNlbGluZVR5cGUoKSk7CiAgICAgICAgIGlm
ICh2ZXJ0aWNhbFBvc2l0aW9uICE9IFBvc2l0aW9uVW5kZWZpbmVkKQogICAgICAgICAgICAgcmV0
dXJuIHZlcnRpY2FsUG9zaXRpb247CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oCShyZXZpc2lvbiA5MDgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgaW50IGJsb2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSBjb25zdCB7IHJl
dHVybiBtYXgobGluZVRvcCgpLCBzZWxlY3Rpb25Ub3AoKSk7IH0KIAotICAgIGludCBhbGlnbkJv
eGVzSW5CbG9ja0RpcmVjdGlvbihpbnQgaGVpZ2h0T2ZCbG9jaywgR2x5cGhPdmVyZmxvd0FuZEZh
bGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKKyAgICBMYXlvdXRVbml0
IGFsaWduQm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgaGVpZ2h0T2ZCbG9jaywgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsK
ICAgICB2b2lkIHNldExpbmVUb3BCb3R0b21Qb3NpdGlvbnMoTGF5b3V0VW5pdCB0b3AsIExheW91
dFVuaXQgYm90dG9tKQogICAgIHsgCiAgICAgICAgIG1fbGluZVRvcCA9IHRvcDsgCkBAIC0xMTEs
NyArMTExLDcgQEAgcHVibGljOgogICAgIElubGluZUJveCogZmlyc3RTZWxlY3RlZEJveCgpOwog
ICAgIElubGluZUJveCogbGFzdFNlbGVjdGVkQm94KCk7CiAKLSAgICBHYXBSZWN0cyBsaW5lU2Vs
ZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IEludFBvaW50JiByb290Qmxv
Y2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLCBp
bnQgc2VsVG9wLCBpbnQgc2VsSGVpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKKyAgICBHYXBSZWN0
cyBsaW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBv
aW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRG
cm9tUm9vdEJsb2NrLCBMYXlvdXRVbml0IHNlbFRvcCwgTGF5b3V0VW5pdCBzZWxIZWlnaHQsIGNv
bnN0IFBhaW50SW5mbyopOwogCiAgICAgUmVuZGVyQmxvY2sqIGJsb2NrKCkgY29uc3Q7CiAKQEAg
LTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHBhZGRlZExheW91dE92ZXJm
bG93UmVjdChpbnQgZW5kUGFkZGluZykgY29uc3Q7CiAKLSAgICB2b2lkIGFzY2VudEFuZERlc2Nl
bnRGb3JCb3goSW5saW5lQm94KiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBp
bnQmIGFzY2VudCwgaW50JiBkZXNjZW50LCBib29sJiBhZmZlY3RzQXNjZW50LCBib29sJiBhZmZl
Y3RzRGVzY2VudCkgY29uc3Q7Ci0gICAgaW50IHZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5l
Qm94KiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CisgICAgdm9pZCBhc2NlbnRBbmREZXNjZW50
Rm9yQm94KElubGluZUJveCosIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgTGF5
b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50LCBib29sJiBhZmZlY3RzQXNjZW50
LCBib29sJiBhZmZlY3RzRGVzY2VudCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBv
c2l0aW9uRm9yQm94KElubGluZUJveCosIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwogICAgIGJv
b2wgaW5jbHVkZUxlYWRpbmdGb3JCb3goSW5saW5lQm94KikgY29uc3Q7CiAgICAgYm9vbCBpbmNs
dWRlRm9udEZvckJveChJbmxpbmVCb3gqKSBjb25zdDsKICAgICBib29sIGluY2x1ZGVHbHlwaHNG
b3JCb3goSW5saW5lQm94KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDkwODMwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA0OSw3ICsxMDQ5LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0QmxlbmRlZEZvbnRTaXplKGlu
dAogICAgIGZvbnQoKS51cGRhdGUoY3VycmVudEZvbnRTZWxlY3Rvcik7CiB9CiAKLXZvaWQgUmVu
ZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCAm
dG9wLCBpbnQgJnJpZ2h0LCBpbnQgJmJvdHRvbSwgaW50ICZsZWZ0KSBjb25zdAordm9pZCBSZW5k
ZXJTdHlsZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0
VW5pdCAmdG9wLCBMYXlvdXRVbml0ICZyaWdodCwgTGF5b3V0VW5pdCAmYm90dG9tLCBMYXlvdXRV
bml0ICZsZWZ0KSBjb25zdAogewogICAgIHRvcCA9IDA7CiAgICAgcmlnaHQgPSAwOwpAQCAtMTA2
OCw3ICsxMDY4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93RXh0ZW50KGNvbnN0IAog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCAmbGVmdCwgaW50ICZyaWdodCkgY29uc3QKK3Zv
aWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoY29uc3QgU2hhZG93RGF0
YSogc2hhZG93LCBMYXlvdXRVbml0ICZsZWZ0LCBMYXlvdXRVbml0ICZyaWdodCkgY29uc3QKIHsK
ICAgICBsZWZ0ID0gMDsKICAgICByaWdodCA9IDA7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lk
IFJlbmRlclN0eWxlOjpnZXRTaGFkb3dIb3Jpem9udGFsRXh0CiAgICAgfQogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3csIGludCAmdG9wLCBpbnQgJmJvdHRvbSkgY29uc3QKK3ZvaWQgUmVuZGVyU3R5bGU6OmdldFNo
YWRvd1ZlcnRpY2FsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCAm
dG9wLCBMYXlvdXRVbml0ICZib3R0b20pIGNvbnN0CiB7CiAgICAgdG9wID0gMDsKICAgICBib3R0
b20gPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHJldmlzaW9uIDkwODMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1MSwxMSArNjUxLDExIEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyBy
ZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3cuZ2V0KCk7IH0KLSAgICB2b2lkIGdl
dFRleHRTaGFkb3dFeHRlbnQoaW50JiB0b3AsIGludCYgcmlnaHQsIGludCYgYm90dG9tLCBpbnQm
IGxlZnQpIGNvbnN0IHsgZ2V0U2hhZG93RXh0ZW50KHRleHRTaGFkb3coKSwgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0KTsgfQotICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0hvcml6b250YWxFeHRlbnQo
aW50JiBsZWZ0LCBpbnQmIHJpZ2h0KSBjb25zdCB7IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQo
dGV4dFNoYWRvdygpLCBsZWZ0LCByaWdodCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dWZXJ0
aWNhbEV4dGVudChpbnQmIHRvcCwgaW50JiBib3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93VmVydGlj
YWxFeHRlbnQodGV4dFNoYWRvdygpLCB0b3AsIGJvdHRvbSk7IH0KLSAgICB2b2lkIGdldFRleHRT
aGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoaW50JiBsb2dpY2FsTGVmdCwgaW50JiBsb2dpY2Fs
UmlnaHQpIHsgZ2V0U2hhZG93SW5saW5lRGlyZWN0aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9n
aWNhbExlZnQsIGxvZ2ljYWxSaWdodCk7IH0KLSAgICB2b2lkIGdldFRleHRTaGFkb3dCbG9ja0Rp
cmVjdGlvbkV4dGVudChpbnQmIGxvZ2ljYWxUb3AsIGludCYgbG9naWNhbEJvdHRvbSkgeyBnZXRT
aGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxUb3AsIGxvZ2lj
YWxCb3R0b20pOyB9CisgICAgdm9pZCBnZXRUZXh0U2hhZG93RXh0ZW50KExheW91dFVuaXQmIHRv
cCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVm
dCkgY29uc3QgeyBnZXRTaGFkb3dFeHRlbnQodGV4dFNoYWRvdygpLCB0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQpOyB9CisgICAgdm9pZCBnZXRUZXh0U2hhZG93SG9yaXpvbnRhbEV4dGVudChMYXlv
dXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3QgeyBnZXRTaGFkb3dIb3Jpem9u
dGFsRXh0ZW50KHRleHRTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgdm9pZCBnZXRUZXh0
U2hhZG93VmVydGljYWxFeHRlbnQoTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiBib3R0b20p
IGNvbnN0IHsgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQodGV4dFNoYWRvdygpLCB0b3AsIGJvdHRv
bSk7IH0KKyAgICB2b2lkIGdldFRleHRTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoTGF5b3V0
VW5pdCYgbG9naWNhbExlZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgeyBnZXRTaGFkb3dJ
bmxpbmVEaXJlY3Rpb25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsTGVmdCwgbG9naWNhbFJp
Z2h0KTsgfQorICAgIHZvaWQgZ2V0VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91
dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIHsgZ2V0U2hhZG93
QmxvY2tEaXJlY3Rpb25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90
dG9tKTsgfQogCiAgICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VXaWR0aDsgfQogICAgIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbG9yU3BhY2U+KHJhcmVJbmhlcml0
ZWREYXRhLT5jb2xvclNwYWNlKTsgfQpAQCAtNjcxLDExICs2NzEsMTEgQEAgcHVibGljOgogICAg
IEVCb3hBbGlnbm1lbnQgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hB
bGlnbm1lbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+
cGFjayk7IH0KIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdygpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRvdy5nZXQoKTsgfQotICAgIHZvaWQg
Z2V0Qm94U2hhZG93RXh0ZW50KGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSwgaW50
JiBsZWZ0KSBjb25zdCB7IGdldFNoYWRvd0V4dGVudChib3hTaGFkb3coKSwgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0KTsgfQotICAgIHZvaWQgZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChp
bnQmIGxlZnQsIGludCYgcmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChi
b3hTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgdm9pZCBnZXRCb3hTaGFkb3dWZXJ0aWNh
bEV4dGVudChpbnQmIHRvcCwgaW50JiBib3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93VmVydGljYWxF
eHRlbnQoYm94U2hhZG93KCksIHRvcCwgYm90dG9tKTsgfQotICAgIHZvaWQgZ2V0Qm94U2hhZG93
SW5saW5lRGlyZWN0aW9uRXh0ZW50KGludCYgbG9naWNhbExlZnQsIGludCYgbG9naWNhbFJpZ2h0
KSB7IGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChib3hTaGFkb3coKSwgbG9naWNhbExl
ZnQsIGxvZ2ljYWxSaWdodCk7IH0KLSAgICB2b2lkIGdldEJveFNoYWRvd0Jsb2NrRGlyZWN0aW9u
RXh0ZW50KGludCYgbG9naWNhbFRvcCwgaW50JiBsb2dpY2FsQm90dG9tKSB7IGdldFNoYWRvd0Js
b2NrRGlyZWN0aW9uRXh0ZW50KGJveFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9t
KTsgfQorICAgIHZvaWQgZ2V0Qm94U2hhZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwgTGF5b3V0
VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3Qg
eyBnZXRTaGFkb3dFeHRlbnQoYm94U2hhZG93KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7
IH0KKyAgICB2b2lkIGdldEJveFNoYWRvd0hvcml6b250YWxFeHRlbnQoTGF5b3V0VW5pdCYgbGVm
dCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0IHsgZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChi
b3hTaGFkb3coKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgdm9pZCBnZXRCb3hTaGFkb3dWZXJ0aWNh
bEV4dGVudChMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIGJvdHRvbSkgY29uc3QgeyBnZXRT
aGFkb3dWZXJ0aWNhbEV4dGVudChib3hTaGFkb3coKSwgdG9wLCBib3R0b20pOyB9CisgICAgdm9p
ZCBnZXRCb3hTaGFkb3dJbmxpbmVEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNhbExl
ZnQsIExheW91dFVuaXQmIGxvZ2ljYWxSaWdodCkgeyBnZXRTaGFkb3dJbmxpbmVEaXJlY3Rpb25F
eHRlbnQoYm94U2hhZG93KCksIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsUmlnaHQpOyB9CisgICAgdm9p
ZCBnZXRCb3hTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSB7IGdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0
ZW50KGJveFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAgICAgU3R5
bGVSZWZsZWN0aW9uKiBib3hSZWZsZWN0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYm94UmVmbGVjdC5nZXQoKTsgfQogICAgIEVCb3hTaXppbmcgYm94U2l6aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3gtPmJveFNpemluZygpOyB9CkBAIC0xMzQ2LDE0ICsxMzQ2LDE0
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20o
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVC
aWRpID0gcGFyZW50LT5ub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpOyB9Ci0gICAgdm9p
ZCBnZXRTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIGludCYgdG9wLCBpbnQmIHJpZ2h0
LCBpbnQmIGJvdHRvbSwgaW50JiBsZWZ0KSBjb25zdDsKLSAgICB2b2lkIGdldFNoYWRvd0hvcml6
b250YWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIGludCYgbGVmdCwgaW50JiByaWdodCkgY29u
c3Q7Ci0gICAgdm9pZCBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwg
aW50JiB0b3AsIGludCYgYm90dG9tKSBjb25zdDsKLSAgICB2b2lkIGdldFNoYWRvd0lubGluZURp
cmVjdGlvbkV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGludCYgbG9naWNhbExlZnQs
IGludCYgbG9naWNhbFJpZ2h0KSBjb25zdAorICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0
IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRV
bml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93
SG9yaXpvbnRhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5
b3V0VW5pdCYgcmlnaHQpIGNvbnN0OworICAgIHZvaWQgZ2V0U2hhZG93VmVydGljYWxFeHRlbnQo
Y29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgYm90dG9tKSBj
b25zdDsKKyAgICB2b2lkIGdldFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsb2dp
Y2FsUmlnaHQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93LCBsb2dpY2FsTGVmdCwg
bG9naWNhbFJpZ2h0KSA6IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbExl
ZnQsIGxvZ2ljYWxSaWdodCk7CiAgICAgfQotICAgIHZvaWQgZ2V0U2hhZG93QmxvY2tEaXJlY3Rp
b25FeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBpbnQmIGxvZ2ljYWxUb3AsIGludCYg
bG9naWNhbEJvdHRvbSkgY29uc3QKKyAgICB2b2lkIGdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0
ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5
b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gZ2V0U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93LCBs
b2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKSA6IGdldFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hh
ZG93LCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCShyZXZpc2lvbiA5MDgzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsOSArMjIsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNoYWRvd0RhdGEuaCIKIAotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkludFJl
Y3QuaCIKLQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTYsNyArNTMsNyBAQCBib29sIFNoYWRvd0RhdGE6Om9wZXJhdG9yPT0oY29uc3QgU2hhZG93CiAg
ICAgICAgICYmIG1faXNXZWJraXRCb3hTaGFkb3cgPT0gby5tX2lzV2Via2l0Qm94U2hhZG93Owog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlU2hhZG93RXh0ZW50KGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgaW50IGFkZGl0aW9uYWxPdXRsaW5lU2l6ZSwgaW50JiBzaGFkb3dMZWZ0
LCBpbnQmIHNoYWRvd1JpZ2h0LCBpbnQmIHNoYWRvd1RvcCwgaW50JiBzaGFkb3dCb3R0b20pCitz
dGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlU2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEq
IHNoYWRvdywgaW50IGFkZGl0aW9uYWxPdXRsaW5lU2l6ZSwgTGF5b3V0VW5pdCYgc2hhZG93TGVm
dCwgTGF5b3V0VW5pdCYgc2hhZG93UmlnaHQsIExheW91dFVuaXQmIHNoYWRvd1RvcCwgTGF5b3V0
VW5pdCYgc2hhZG93Qm90dG9tKQogewogICAgIGRvIHsKICAgICAgICAgaW50IGJsdXJBbmRTcHJl
YWQgPSBzaGFkb3ctPmJsdXIoKSArIHNoYWRvdy0+c3ByZWFkKCkgKyBhZGRpdGlvbmFsT3V0bGlu
ZVNpemU7CkBAIC04NiwxMCArODMsMTAgQEAgdm9pZCBTaGFkb3dEYXRhOjphZGp1c3RSZWN0Rm9y
U2hhZG93KEludAogCiB2b2lkIFNoYWRvd0RhdGE6OmFkanVzdFJlY3RGb3JTaGFkb3coRmxvYXRS
ZWN0JiByZWN0LCBpbnQgYWRkaXRpb25hbE91dGxpbmVTaXplKSBjb25zdAogewotICAgIGludCBz
aGFkb3dMZWZ0ID0gMDsKLSAgICBpbnQgc2hhZG93UmlnaHQgPSAwOwotICAgIGludCBzaGFkb3dU
b3AgPSAwOwotICAgIGludCBzaGFkb3dCb3R0b20gPSAwOworICAgIExheW91dFVuaXQgc2hhZG93
TGVmdCA9IDA7CisgICAgTGF5b3V0VW5pdCBzaGFkb3dSaWdodCA9IDA7CisgICAgTGF5b3V0VW5p
dCBzaGFkb3dUb3AgPSAwOworICAgIExheW91dFVuaXQgc2hhZG93Qm90dG9tID0gMDsKICAgICBj
YWxjdWxhdGVTaGFkb3dFeHRlbnQodGhpcywgYWRkaXRpb25hbE91dGxpbmVTaXplLCBzaGFkb3dM
ZWZ0LCBzaGFkb3dSaWdodCwgc2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogCiAgICAgcmVjdC5t
b3ZlKHNoYWRvd0xlZnQsIHNoYWRvd1RvcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFkb3dEYXRhLmgJKHJldmlzaW9uIDkwODMwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQg
KzI2LDEyIEBACiAjZGVmaW5lIFNoYWRvd0RhdGFfaAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNp
bmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0
UmVjdDsKLWNsYXNzIEludFJlY3Q7Ci0KIGVudW0gU2hhZG93U3R5bGUgeyBOb3JtYWwsIEluc2V0
IH07CiAKIC8vIFRoaXMgY2xhc3MgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgc2hhZG93cyBmb3Ig
dGhlIHRleHQtc2hhZG93IGFuZCBib3gtc2hhZG93IHByb3BlcnRpZXMuCkBAIC01MSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgU2hhZG93RGF0YShpbnQgeCwgaW50IHks
IGludCBibHVyLCBpbnQgc3ByZWFkLCBTaGFkb3dTdHlsZSBzdHlsZSwgYm9vbCBpc1dlYmtpdEJv
eFNoYWRvdywgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIFNoYWRvd0RhdGEoTGF5b3V0VW5pdCB4
LCBMYXlvdXRVbml0IHksIGludCBibHVyLCBpbnQgc3ByZWFkLCBTaGFkb3dTdHlsZSBzdHlsZSwg
Ym9vbCBpc1dlYmtpdEJveFNoYWRvdywgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICA6IG1f
eCh4KQogICAgICAgICAsIG1feSh5KQogICAgICAgICAsIG1fYmx1cihibHVyKQpAQCAtNzAsOCAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwogICAgIH0KICAg
ICAKLSAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotICAgIGludCB5KCkgY29uc3Qg
eyByZXR1cm4gbV95OyB9CisgICAgTGF5b3V0VW5pdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9
CisgICAgTGF5b3V0VW5pdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAgICAgaW50IGJsdXIo
KSBjb25zdCB7IHJldHVybiBtX2JsdXI7IH0KICAgICBpbnQgc3ByZWFkKCkgY29uc3QgeyByZXR1
cm4gbV9zcHJlYWQ7IH0KICAgICBTaGFkb3dTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGU7IH0KQEAgLTg1LDggKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRqdXN0UmVjdEZv
clNoYWRvdyhGbG9hdFJlY3QmLCBpbnQgYWRkaXRpb25hbE91dGxpbmVTaXplID0gMCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgaW50IG1feDsKLSAgICBpbnQgbV95OworICAgIExheW91dFVuaXQg
bV94OworICAgIExheW91dFVuaXQgbV95OwogICAgIGludCBtX2JsdXI7CiAgICAgaW50IG1fc3By
ZWFkOwogICAgIENvbG9yIG1fY29sb3I7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>