<?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>39100</bug_id>
          
          <creation_ts>2010-05-13 18:20:01 -0700</creation_ts>
          <short_desc>Implement TypedArray BYTES_PER_ELEMENT</short_desc>
          <delta_ts>2010-06-10 11:53:39 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>225611</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-05-13 18:20:01 -0700</bug_when>
    <thetext>The constant value BYTES_PER_ELEMENT needs to be added to the various TypedArray interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236083</commentid>
    <comment_count>1</comment_count>
      <attachid>58308</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-09 16:52:28 -0700</bug_when>
    <thetext>Created attachment 58308
Patch

From the ChangeLog:

Implemented BYTES_PER_ELEMENT on all ArrayBufferView subclasses. Required bug fixes to JSC bindings&apos; custom constructors. Updated fast/canvas/webgl/array-unit-tests.html to verify. Ran all WebGL layout tests in Safari and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236429</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 10:43:23 -0700</bug_when>
    <thetext>Note: the modifications to the JSC custom bindings came from looking at the autogenerated JSCSSValue.{cpp.h}, which has values like CSS_INHERIT attached to its prototype. From experimentation these are the minimal changes to the custom constructors which allow the BYTES_PER_ELEMENT lookup to succeed on the constructor functions (i.e., &quot;Float32Array.BYTES_PER_ELEMENT&quot;) while also not perturbing the functionality in any way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236433</commentid>
    <comment_count>3</comment_count>
      <attachid>58308</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-10 10:46:20 -0700</bug_when>
    <thetext>Comment on attachment 58308
Patch

ok. Can we not make the constructors non-custom with the new overloading goodness that Yaar had built?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236441</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 10:55:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58308 [details])
&gt; ok. Can we not make the constructors non-custom with the new overloading goodness that Yaar had built?

It may be possible; I&apos;ll ask Yaar. I don&apos;t know how the IDL and code generator handle autogenerated constructors and/or overloaded constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236476</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 11:53:39 -0700</bug_when>
    <thetext>Committed r60967: &lt;http://trac.webkit.org/changeset/60967&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58308</attachid>
            <date>2010-06-09 16:52:28 -0700</date>
            <delta_ts>2010-06-10 10:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bytes-per-element.patch</filename>
            <type>text/plain</type>
            <size>32313</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBUeXBlZEFycmF5IEJZVEVTX1BFUl9FTEVNRU5UCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTEwMAorCisgICAgICAgIEltcGxlbWVudGVk
IEJZVEVTX1BFUl9FTEVNRU5UIG9uIGFsbCBBcnJheUJ1ZmZlclZpZXcgc3ViY2xhc3Nlcy4KKyAg
ICAgICAgUmVxdWlyZWQgYnVnIGZpeGVzIHRvIEpTQyBiaW5kaW5ncycgY3VzdG9tIGNvbnN0cnVj
dG9ycy4gVXBkYXRlZAorICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3Rz
Lmh0bWwgdG8gdmVyaWZ5LiBSYW4gYWxsIFdlYkdMCisgICAgICAgIGxheW91dCB0ZXN0cyBpbiBT
YWZhcmkgYW5kIENocm9taXVtLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNGbG9hdDMyQXJy
YXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0MzJBcnJheUNvbnN0
cnVjdG9yOjpKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q29uc3RydWN0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OkpTSW50MTZBcnJh
eUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MTZBcnJheUNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQxNkFycmF5Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJbnQxNkFycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MTZB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW50MzJBcnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50MzJB
cnJheUNvbnN0cnVjdG9yOjpKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50MzJBcnJheUNvbnN0cnVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDhBcnJheUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW50OEFycmF5Q29uc3RydWN0b3I6OkpTSW50OEFycmF5Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50OEFycmF5Q29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
bnQ4QXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnQ4QXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQx
NkFycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNVaW50MTZBcnJheUNv
bnN0cnVjdG9yOjpKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
V2ViQ29yZTo6SlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5Q29uc3RydWN0b3I6OkpTVWludDMyQXJy
YXlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5Q29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1VpbnQzMkFycmF5
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Vp
bnQzMkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNVaW50OEFycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNV
aW50OEFycmF5Q29uc3RydWN0b3I6OkpTVWludDhBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNVaW50OEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMv
SW50MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvVWludDMyQXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRs
OgorCiAyMDEwLTA2LTA5ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNjA5MjMp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwyMiBAQCBjb25zdCBDbGFzc0luZm8gSlNGbG9hdDMy
QXJyYXlDb25zdHJ1Y3RvCiBKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yOjpKU0Zsb2F0MzJBcnJh
eUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTRmxvYXQzMkFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xv
YmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBKU0Zsb2F0MzJBcnJheVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBO
b25lKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0Zsb2F0MzJBcnJheVByb3RvdHlw
ZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworfQor
CitKU09iamVjdCogSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gbmV3IChleGVjKSBKU0Zsb2F0MzJBcnJheVByb3RvdHlwZShnbG9iYWxPYmplY3QsIEpTRmxv
YXQzMkFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSkpOworfQorCitib29sIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNs
b3Q8SlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCBKU0Zsb2F0MzJB
cnJheVByb3RvdHlwZTo6c19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUsIHRoaXMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yLCBET01P
YmplY3Q+KGV4ZWMsIEpTRmxvYXQzMkFycmF5UHJvdG90eXBlOjpzX2luZm8uc3RhdGljUHJvcEhh
c2hUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0Q2FudmFzRmxvYXRBcnJheShFeGVj
U3RhdGUqIGV4ZWMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFy
cmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gNjA5MjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmxvYXQzMkFycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMy
LDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKU0Zsb2F0MzJBcnJheUNv
bnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKKyAgICAgICAgdHlwZWRl
ZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogICAgIHB1YmxpYzoKICAgICAgICAgSlNGbG9h
dDMyQXJyYXlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwogCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUocHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBBbm9ueW1vdXNTbG90Q291bnQpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29u
c3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIH07CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gNjA5MjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwyMiBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6CiBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpKU0lu
dDhBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTSW50OEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwg
Z2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCBKU0ludDhBcnJheVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBO
b25lKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOworICAgIHB1dERpcmVj
dChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0ludDhBcnJheVByb3RvdHlwZTo6
c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworfQorCitK
U09iamVjdCogSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gbmV3
IChleGVjKSBKU0ludDhBcnJheVByb3RvdHlwZShnbG9iYWxPYmplY3QsIEpTSW50OEFycmF5UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OworfQorCitib29sIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNJbnQ4QXJyYXlD
b25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCBKU0ludDhBcnJheVByb3RvdHlwZTo6c19pbmZv
LnN0YXRpY1Byb3BIYXNoVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jv
b2wgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRv
cjxKU0ludDhBcnJheUNvbnN0cnVjdG9yLCBET01PYmplY3Q+KGV4ZWMsIEpTSW50OEFycmF5UHJv
dG90eXBlOjpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0Q2FudmFzQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA2MDkyMykKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMyArMzIsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEpTSW50OEFycmF5Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qgewor
ICAgICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgcHVibGljOgog
ICAgICAgICBKU0ludDhBcnJheUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CisgICAgICAgIH0KKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAg
fTsKIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
dDE2QXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDIyIEBA
IGNvbnN0IENsYXNzSW5mbyBKU0ludDE2QXJyYXlDb25zdHJ1Y3RvcjoKIEpTSW50MTZBcnJheUNv
bnN0cnVjdG9yOjpKU0ludDE2QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChK
U0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6c2VsZihleGVj
LCBnbG9iYWxPYmplY3QpLCBOb25lKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVu
dW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU0lu
dDE2QXJyYXlQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKK30KKworSlNPYmplY3QqIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTSW50MTZBcnJheVByb3RvdHlwZShnbG9iYWxP
YmplY3QsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworYm9vbCBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlU2xvdDxKU0ludDE2QXJyYXlDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCBKU0lu
dDE2QXJyYXlQcm90b3R5cGU6OnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1
cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTSW50MTZBcnJheUNvbnN0cnVjdG9yLCBET01P
YmplY3Q+KGV4ZWMsIEpTSW50MTZBcnJheVByb3RvdHlwZTo6c19pbmZvLnN0YXRpY1Byb3BIYXNo
VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdENhbnZhc1Nob3J0QXJyYXkoRXhlY1N0
YXRlKiBleGVjKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q29u
c3RydWN0b3IuaAkocmV2aXNpb24gNjA5MjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50
MTZBcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNJbnQxNkFycmF5Q29uc3RydWN0b3Ig
OiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworICAgICAgICB0eXBlZGVmIERPTUNvbnN0
cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgcHVibGljOgogICAgICAgICBKU0ludDE2QXJyYXlDb25z
dHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgY29uc3Qg
SlNDOjpDbGFzc0luZm8gc19pbmZvOwogCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6
U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUocHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1v
dXNTbG90Q291bnQpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IEpTQzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6Q29uc3RydWN0RGF0YSYp
OwogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmc19pbmZvOyB9CisgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2
MDkyMykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwyMiBAQCBjb25zdCBDbGFzc0luZm8gSlNJbnQz
MkFycmF5Q29uc3RydWN0b3I6CiBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6SlNJbnQzMkFycmF5
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNJbnQzMkFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFs
T2JqZWN0KQogewotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU0ludDMyQXJyYXlQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7
Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4
ZWMsIDIpLCBSZWFkT25seXxEb250RGVsZXRlfERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNJbnQzMkFycmF5UHJvdG90eXBlOjpzZWxm
KGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7Cit9CisKK0pTT2Jq
ZWN0KiBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gbmV3IChl
eGVjKSBKU0ludDMyQXJyYXlQcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBKU0ludDMyQXJyYXlQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK2Jvb2wgSlNJbnQzMkFycmF5Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNJbnQzMkFycmF5
Q29uc3RydWN0b3IsIERPTU9iamVjdD4oZXhlYywgSlNJbnQzMkFycmF5UHJvdG90eXBlOjpzX2lu
Zm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwor
Ym9vbCBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3Jp
cHRvcjxKU0ludDMyQXJyYXlDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCBKU0ludDMyQXJy
YXlQcm90b3R5cGU6OnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RDYW52YXNJbnRBcnJheShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA2MDky
MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q29uc3RydWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBKU0ludDMyQXJyYXlDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9i
amVjdCB7CisgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKICAgICBw
dWJsaWM6CiAgICAgICAgIEpTSW50MzJBcnJheUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNET01HbG9iYWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yJik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CisgICAgICAgIH0K
KwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgY29uc3Qg
SlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4
QXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDgg
KzQ2LDIyIEBAIGNvbnN0IENsYXNzSW5mbyBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3RvcjoKIEpTVWlu
dDhBcnJheUNvbnN0cnVjdG9yOjpKU1VpbnQ4QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3Rv
ck9iamVjdChKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVWludDhBcnJheVByb3RvdHlwZTo6
c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxl
dGV8RG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBKU1VpbnQ4QXJyYXlQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KTsKK30KKworSlNPYmplY3QqIEpTVWludDhBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVWludDhBcnJheVByb3RvdHlw
ZShnbG9iYWxPYmplY3QsIEpTVWludDhBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworYm9vbCBKU1VpbnQ4QXJyYXlD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY1ZhbHVlU2xvdDxKU1VpbnQ4QXJyYXlDb25zdHJ1Y3RvciwgRE9NT2JqZWN0Pihl
eGVjLCBKU1VpbnQ4QXJyYXlQcm90b3R5cGU6OnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVWludDhBcnJheUNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVWludDhBcnJheUNvbnN0cnVj
dG9yLCBET01PYmplY3Q+KGV4ZWMsIEpTVWludDhBcnJheVByb3RvdHlwZTo6c19pbmZvLnN0YXRp
Y1Byb3BIYXNoVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdENhbnZhc1Vuc2lnbmVk
Qnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNV
aW50OEFycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDhBcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxMyArMzIsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTVWludDhB
cnJheUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKKyAgICAgICAg
dHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogICAgIHB1YmxpYzoKICAgICAgICAg
SlNVaW50OEFycmF5Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAg
ICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6
OkNvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICB9OwogCiB9
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiA2MDkyMykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZB
cnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsMjIgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTVWludDE2QXJyYXlDb25zdHJ1Y3RvcgogSlNVaW50MTZBcnJheUNvbnN0
cnVjdG9yOjpKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNV
aW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSksIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNVaW50MTZBcnJheVByb3RvdHlwZTo6c2VsZihleGVj
LCBnbG9iYWxPYmplY3QpLCBOb25lKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVu
dW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Vp
bnQxNkFycmF5UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSk7Cit9CisKK0pTT2JqZWN0KiBKU1VpbnQxNkFycmF5Q29uc3RydWN0b3I6OmNy
ZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNVaW50MTZBcnJheVByb3RvdHlwZShnbG9i
YWxPYmplY3QsIEpTVWludDE2QXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK2Jvb2wgSlNVaW50MTZBcnJheUNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVWludDE2QXJyYXlDb25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVj
LCBKU1VpbnQxNkFycmF5UHJvdG90eXBlOjpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhp
cywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1VpbnQxNkFycmF5Q29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNVaW50MTZBcnJheUNvbnN0cnVj
dG9yLCBET01PYmplY3Q+KGV4ZWMsIEpTVWludDE2QXJyYXlQcm90b3R5cGU6OnNfaW5mby5zdGF0
aWNQcm9wSGFzaFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RDYW52YXNVbnNpZ25l
ZFNob3J0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQxNkFycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDE2QXJyYXlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA2MDkyMykKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDEzICszMiwyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNV
aW50MTZBcnJheUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKKyAg
ICAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogICAgIHB1YmxpYzoKICAg
ICAgICAgSlNVaW50MTZBcnJheUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CisgICAgICAgIH0KKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgSlNDOjpDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAg
fTsKIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNjA5MjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VWludDMyQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDIy
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IKIEpTVWludDMyQXJy
YXlDb25zdHJ1Y3Rvcjo6SlNVaW50MzJBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IERPTUNvbnN0cnVjdG9yT2Jq
ZWN0KEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVWludDMyQXJyYXlQcm90b3R5cGU6OnNl
bGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seXxEb250RGVsZXRl
fERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgSlNVaW50MzJBcnJheVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworfQorCitKU09iamVjdCogSlNVaW50MzJBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTVWludDMyQXJyYXlQcm90b3R5
cGUoZ2xvYmFsT2JqZWN0LCBKU1VpbnQzMkFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitib29sIEpTVWludDMyQXJy
YXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0
dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IsIERPTU9iamVj
dD4oZXhlYywgSlNVaW50MzJBcnJheVByb3RvdHlwZTo6c19pbmZvLnN0YXRpY1Byb3BIYXNoVGFi
bGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNVaW50MzJBcnJheUNv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVWludDMyQXJyYXlD
b25zdHJ1Y3RvciwgRE9NT2JqZWN0PihleGVjLCBKU1VpbnQzMkFycmF5UHJvdG90eXBlOjpzX2lu
Zm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0Q2FudmFz
VW5zaWduZWRJbnRBcnJheShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVWludDMyQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYwOTIzKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTMgKzMyLDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qg
eworICAgICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgcHVibGlj
OgogICAgICAgICBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJv
dG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgfQorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6
OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCShyZXZp
c2lvbiA2MDkyMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEN1c3Rv
bUNvbnN0cnVjdG9yLAogICAgICAgICBDdXN0b21Ub0pTCiAgICAgXSBGbG9hdDMyQXJyYXkgOiBB
cnJheUJ1ZmZlclZpZXcgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQllURVNfUEVSX0VM
RU1FTlQgPSA0OworCiAgICAgICAgIC8vIHZvaWQgc2V0KGluIEZsb2F0MzJBcnJheSBhcnJheSwg
W09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0
KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0KTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvSW50OEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0lu
dDhBcnJheS5pZGwJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4
QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAgICAgIEN1c3RvbVRvSlMKICAgICBdIElu
dDhBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBC
WVRFU19QRVJfRUxFTUVOVCA9IDE7CisKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gSW50OEFycmF5
IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8g
dm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQg
bG9uZyBvZmZzZXQpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDE2QXJyYXkuaWRsCShyZXZpc2lvbiA2MDkyMykKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvSW50MTZBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbW9k
dWxlIGh0bWwgewogICAgICAgICBDdXN0b21Db25zdHJ1Y3RvciwKICAgICAgICAgQ3VzdG9tVG9K
UwogICAgIF0gSW50MTZBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBCWVRFU19QRVJfRUxFTUVOVCA9IDI7CisKICAgICAgICAgLy8gdm9pZCBzZXQo
aW4gSW50MTZBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7
CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxd
IGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQoKTsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAkocmV2aXNpb24gNjA5MjMpCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAg
ICAgIEN1c3RvbVRvSlMKICAgICBdIEludDMyQXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgeworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQllURVNfUEVSX0VMRU1FTlQgPSA0OworCiAgICAgICAg
IC8vIHZvaWQgc2V0KGluIEludDMyQXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQg
bG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJh
eSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIFtDdXN0b21d
IHZvaWQgc2V0KCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwJKHJldmlzaW9u
IDYwOTIzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEN1c3RvbUNvbnN0
cnVjdG9yLAogICAgICAgICBDdXN0b21Ub0pTCiAgICAgXSBVaW50OEFycmF5IDogQXJyYXlCdWZm
ZXJWaWV3IHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IEJZVEVTX1BFUl9FTEVNRU5UID0g
MTsKKwogICAgICAgICAvLyB2b2lkIHNldChpbiBVaW50OEFycmF5IGFycmF5LCBbT3B0aW9uYWxd
IGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVu
Y2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50
MTZBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJh
eS5pZGwJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJh
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbW9kdWxlIGh0bWwgewogICAg
ICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgQ3VzdG9tVG9KUwogICAgIF0g
VWludDE2QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgQllURVNfUEVSX0VMRU1FTlQgPSAyOworCiAgICAgICAgIC8vIHZvaWQgc2V0KGluIFVpbnQx
NkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAg
ICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5z
aWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOwpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwJKHJldmlzaW9uIDYwOTIzKQorKysgV2ViQ29y
ZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAg
ICAgICAgQ3VzdG9tVG9KUwogICAgIF0gVWludDMyQXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQllURVNfUEVSX0VMRU1FTlQgPSA0OworCiAgICAg
ICAgIC8vIHZvaWQgc2V0KGluIFVpbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4g
YXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHNldCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA5MjMpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNi0wOSAg
S2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFR5cGVkQXJyYXkgQllURVNfUEVS
X0VMRU1FTlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5MTAwCisKKyAgICAgICAgSW1wbGVtZW50ZWQgQllURVNfUEVSX0VMRU1FTlQgb24gYWxsIEFy
cmF5QnVmZmVyVmlldyBzdWJjbGFzc2VzLgorICAgICAgICBSZXF1aXJlZCBidWcgZml4ZXMgdG8g
SlNDIGJpbmRpbmdzJyBjdXN0b20gY29uc3RydWN0b3JzLiBVcGRhdGVkCisgICAgICAgIGZhc3Qv
Y2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMuaHRtbCB0byB2ZXJpZnkuIFJhbiBhbGwgV2Vi
R0wKKyAgICAgICAgbGF5b3V0IHRlc3RzIGluIFNhZmFyaSBhbmQgQ2hyb21pdW0uCisKKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS11bml0LXRlc3RzLmh0bWw6CisKIDIwMTAtMDYt
MDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5
LXVuaXQtdGVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9hcnJheS11bml0LXRlc3RzLmh0bWwJKHJldmlzaW9uIDYwOTIzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsMTYgKzE3MywxNyBAQCBmdW5jdGlvbiB0ZXN0T2Zmc2V0c0FuZFNpemVzKHR5cGUs
IG5hbWUsCiAgIHJ1bm5pbmcoJ3Rlc3QgJyArIG5hbWUgKyAnIE9mZnNldHNBbmRTaXplcycpOwog
ICB0cnkgewogICAgIHZhciBsZW4gPSAxMDsKKyAgICBhc3NlcnRFcSgndHlwZS5CWVRFU19QRVJf
RUxFTUVOVCcsIGVsZW1lbnRTaXplSW5CeXRlcywgdHlwZS5CWVRFU19QRVJfRUxFTUVOVCk7CiAg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGUobGVuKTsKICAgICBhc3NlcnQoJ2FycmF5LmJ1ZmZlcics
IGFycmF5LmJ1ZmZlcik7Ci0gICAgYXNzZXJ0RXEoJ2FycmF5LmJ5dGVPZmZzZXQnLCBhcnJheS5i
eXRlT2Zmc2V0LCAwKTsKLSAgICBhc3NlcnRFcSgnYXJyYXkubGVuZ3RoJywgYXJyYXkubGVuZ3Ro
LCBsZW4pOwotICAgIGFzc2VydEVxKCdhcnJheS5ieXRlTGVuZ3RoJywgYXJyYXkuYnl0ZUxlbmd0
aCwgbGVuICogZWxlbWVudFNpemVJbkJ5dGVzKTsKKyAgICBhc3NlcnRFcSgnYXJyYXkuYnl0ZU9m
ZnNldCcsIDAsIGFycmF5LmJ5dGVPZmZzZXQpOworICAgIGFzc2VydEVxKCdhcnJheS5sZW5ndGgn
LCBsZW4sIGFycmF5Lmxlbmd0aCk7CisgICAgYXNzZXJ0RXEoJ2FycmF5LmJ5dGVMZW5ndGgnLCBs
ZW4gKiBlbGVtZW50U2l6ZUluQnl0ZXMsIGFycmF5LmJ5dGVMZW5ndGgpOwogICAgIGFycmF5ID0g
bmV3IHR5cGUoYXJyYXkuYnVmZmVyLCBlbGVtZW50U2l6ZUluQnl0ZXMsIGxlbiAtIDEpOwogICAg
IGFzc2VydCgnYXJyYXkuYnVmZmVyJywgYXJyYXkuYnVmZmVyKTsKLSAgICBhc3NlcnRFcSgnYXJy
YXkuYnl0ZU9mZnNldCcsIGFycmF5LmJ5dGVPZmZzZXQsIGVsZW1lbnRTaXplSW5CeXRlcyk7Ci0g
ICAgYXNzZXJ0RXEoJ2FycmF5Lmxlbmd0aCcsIGFycmF5Lmxlbmd0aCwgbGVuIC0gMSk7Ci0gICAg
YXNzZXJ0RXEoJ2FycmF5LmJ5dGVMZW5ndGgnLCBhcnJheS5ieXRlTGVuZ3RoLCAobGVuIC0gMSkg
KiBlbGVtZW50U2l6ZUluQnl0ZXMpOworICAgIGFzc2VydEVxKCdhcnJheS5ieXRlT2Zmc2V0Jywg
ZWxlbWVudFNpemVJbkJ5dGVzLCBhcnJheS5ieXRlT2Zmc2V0KTsKKyAgICBhc3NlcnRFcSgnYXJy
YXkubGVuZ3RoJywgbGVuIC0gMSwgYXJyYXkubGVuZ3RoKTsKKyAgICBhc3NlcnRFcSgnYXJyYXku
Ynl0ZUxlbmd0aCcsIChsZW4gLSAxKSAqIGVsZW1lbnRTaXplSW5CeXRlcywgYXJyYXkuYnl0ZUxl
bmd0aCk7CiAgICAgcGFzcygpOwogICB9IGNhdGNoIChlKSB7CiAgICAgZmFpbChlKTsK
</data>
<flag name="review"
          id="43300"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="43301"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>