<?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>31420</bug_id>
          
          <creation_ts>2009-11-12 10:34:27 -0800</creation_ts>
          <short_desc>[V8] Table-driven setup for binding template callback functions</short_desc>
          <delta_ts>2009-11-12 16:25:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31217</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Alfke">jens</reporter>
          <assigned_to name="Jens Alfke">jens</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162951</commentid>
    <comment_count>0</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-12 10:34:27 -0800</bug_when>
    <thetext>The ConfigureXXXTemplate() function generated for each binding class has a lot of common boilerplace that can be de-inlined, esp. since each of these functions is only called once. It also sets up the class&apos;s callback functions/methods with individual function calls, instead of using a table-driven approach (the way it already sets up accessors.)
Changing these results in 100kbytes of code size savings on x86/32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162955</commentid>
    <comment_count>1</comment_count>
      <attachid>43076</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-12 10:37:28 -0800</bug_when>
    <thetext>Created attachment 43076
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162962</commentid>
    <comment_count>2</comment_count>
      <attachid>43076</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-12 10:51:10 -0800</bug_when>
    <thetext>Comment on attachment 43076
patch

r=me, feel free to commit after this fix-up:

  
&gt; +v8::Local&lt;v8::Signature&gt; configureTemplate(v8::Persistent&lt;v8::FunctionTemplate&gt;desc,
&gt; +                                           const char *interfaceName,
&gt; +                                           V8ClassIndex::V8WrapperType parentClassIndex,
&gt; +                                           int fieldCount,
&gt; +                                           const BatchedAttribute* attributes, 
&gt; +                                           size_t attributeCount,
&gt; +                                           const BatchedCallback* callbacks,
&gt; +                                           size_t callbackCount)
&gt; +{
&gt; +    desc-&gt;SetClassName(v8::String::New(interfaceName));
&gt; +    v8::Local&lt;v8::ObjectTemplate&gt; instance = desc-&gt;InstanceTemplate();
&gt; +    instance-&gt;SetInternalFieldCount(fieldCount);
&gt; +    if (parentClassIndex)
&gt; +        desc-&gt;Inherit(V8DOMWrapper::getTemplate(parentClassIndex));
&gt; +    if (attributeCount)
&gt; +        batchConfigureAttributes(instance, desc-&gt;PrototypeTemplate(),
&gt; +                                 attributes, attributeCount);
&gt; +    v8::Local&lt;v8::Signature&gt; default_signature = v8::Signature::New(desc);


Should be defaultSignature in WebKit-land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163027</commentid>
    <comment_count>3</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-12 13:18:57 -0800</bug_when>
    <thetext>Fixed that variable name, thanks.
Committed revision 50897.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43076</attachid>
            <date>2009-11-12 10:37:28 -0800</date>
            <delta_ts>2009-11-12 10:51:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>configureTemplate.patch</filename>
            <type>text/plain</type>
            <size>16487</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDg4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMTEtMTIgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUYWJs
ZS1kcml2ZW4gc2V0dXAgZm9yIFY4IGJpbmRpbmcgdGVtcGxhdGUgY2FsbGJhY2sgZnVuY3Rpb25z
LiAxMDBrIGluIGNvZGUgc2F2aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNDIwCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbTogIENoYW5nZSBnZW5lcmF0ZWQgQ29uZmlndXJlWFhYVGVtcGxhdGUgZm4K
KyAgICAgICAgICAgIHRvIGNhbGwgY29uZmlndXJlVGVtcGxhdGUoKS4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uZmlndXJlVGVtcGxh
dGUpOiAgTmV3IGZ1bmN0aW9uOyBkb2VzIGFsbCB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbiB3
b3JrLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbGJhY2spOiAgRGUtaW5saW5lZCB3cmFw
cGVyIGZvciBGdW5jdGlvblRlbXBsYXRlIGNyZWF0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKTogIEp1c3Qgd3JhcHBlZCB0aGUg
dmVyeSBsb25nIGZuIHBhcmFtZXRlciBsaXN0LgorICAgICAgICAoV2ViQ29yZTo6YmF0Y2hDb25m
aWd1cmVDYWxsYmFja3MpOiAgTmV3IGZ1bmN0aW9uLCB1c2VkIGJ5IGNvbmZpZ3VyZVRlbXBsYXRl
LgorICAgICAgICAoV2ViQ29yZTo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMpOiAgSnVzdCB3cmFw
cGVkIHRoZSB2ZXJ5IGxvbmcgZm4gcGFyYW1ldGVyIGxpc3QuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhQcm94eS5oOgorCiAyMDA5LTExLTEyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24g
NTA4NDYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3
b3JraW5nIGNvcHkpCkBAIC03OTMsMTIgKzc5MywxMSBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICB9XG5cbiIpOyAgIyBlbmQgb2Ygc2V0dGVyCiB9CiAKLXN1YiBHZW5lcmF0
ZU5ld0Z1bmN0aW9uVGVtcGxhdGUKK3N1YiBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1l
CiB7CiAgICAgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgJGRhdGFOb2RlID0gc2hpZnQ7Ci0gICAg
JHNpZ25hdHVyZSA9IHNoaWZ0OwotCisgICAgCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0
YU5vZGUtPm5hbWU7CiAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsK
IApAQCAtODEzLDEyICs4MTIsMjIgQEAgc3ViIEdlbmVyYXRlTmV3RnVuY3Rpb25UZW1wbGF0ZQog
ICAgICAgICBpZiAoJGN1c3RvbUZ1bmMgZXEgMSkgewogICAgICAgICAgICAgJGN1c3RvbUZ1bmMg
PSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gInY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhDdXN0
b206OnY4JHtjdXN0b21GdW5jfUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgJHNp
Z25hdHVyZSkiOworICAgICAgICByZXR1cm4gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tRnVuY31DYWxs
YmFjayI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuICJ2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KCR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtuYW1lfUNhbGxiYWNrLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSwgJHNpZ25hdHVyZSkiOworICAgICAgICByZXR1cm4gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHtuYW1lfUNhbGxiYWNrIjsKICAgICB9CiB9CiAKK3N1YiBHZW5l
cmF0ZU5ld0Z1bmN0aW9uVGVtcGxhdGUKK3sKKyAgICAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICAk
ZGF0YU5vZGUgPSBzaGlmdDsKKyAgICAkc2lnbmF0dXJlID0gc2hpZnQ7CisKKyAgICBteSAkY2Fs
bGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGRhdGFO
b2RlKTsKKyAgICByZXR1cm4gInY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoJGNhbGxiYWNrLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgJHNpZ25hdHVyZSkiOworfQorCiBzdWIgR2VuZXJhdGVG
dW5jdGlvbkNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CkBAIC0xMjA2LDYg
KzEyMTUsMzggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgR2VuZXJhdGVC
YXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsICRhdHRyaWJ1dGVzKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9O1xuIik7CiAgICAgfQorICAgIAorICAgICMgU2V0dXAgdGFibGUg
b2Ygc3RhbmRhcmQgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgJG51bV9jYWxsYmFja3MgPSAwOwor
ICAgICRoYXNfY2FsbGJhY2tzID0gMDsKKyAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0
YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworICAgICAgICAjIERvbid0IHB1dCBhbnkgbm9u
c3RhbmRhcmQgZnVuY3Rpb25zIGludG8gdGhpcyB0YWJsZToKKyAgICAgICAgaWYgKCRhdHRyRXh0
LT57IlY4T25JbnN0YW5jZSJ9KSB7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAg
ICAgIGlmICgkYXR0ckV4dC0+eyJFbmFibGVkQXRSdW50aW1lIn0gfHwgUmVxdWlyZXNDdXN0b21T
aWduYXR1cmUoJGZ1bmN0aW9uKSB8fCAkYXR0ckV4dC0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUi
fSkgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0gJiYKKyAgICAgICAgICAgICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gfHwgJGludGVyZmFj
ZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSB7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9Cisg
ICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9IHx8ICRhdHRyRXh0LT57IlY4UmVhZE9u
bHkifSkgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoISRoYXNf
Y2FsbGJhY2tzKSB7CisgICAgICAgICAgICAkaGFzX2NhbGxiYWNrcyA9IDE7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgJHtpbnRl
cmZhY2VOYW1lfV9jYWxsYmFja3NbXSA9IHtcbiIpOworICAgICAgICB9CisgICAgICAgIG15ICRu
YW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRjYWxsYmFjayA9
IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICB7IiRuYW1lIiwgJGNhbGxiYWNr
fSwKK0VORAorICAgICAgICAkbnVtX2NhbGxiYWNrcysrOworICAgIH0KKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn07XG4iKSAgaWYgJGhhc19jYWxsYmFja3M7CiAKICAgICAjIFNldHVwIGNvbnN0
YW50cwogICAgIG15ICRoYXNfY29uc3RhbnRzID0gMDsKQEAgLTEyMjksNyArMTI3MCw3IEBAIEVO
RAogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn0gLy8gbmFtZXNwYWNlICR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbFxuXG4iKTsKIAotICAgIG15ICRhY2Nlc3NfY2hlY2sgPSAiLyogbm8g
YWNjZXNzIGNoZWNrICovIjsKKyAgICBteSAkYWNjZXNzX2NoZWNrID0gIiI7CiAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAh
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgewogICAgICAgICAkYWNjZXNzX2NoZWNr
ID0gImluc3RhbmNlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOEN1c3RvbTo6djgke2ludGVy
ZmFjZU5hbWV9TmFtZWRTZWN1cml0eUNoZWNrLCBWOEN1c3RvbTo6djgke2ludGVyZmFjZU5hbWV9
SW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpUb0lu
dChWOENsYXNzSW5kZXg6OiR7Y2xhc3NJbmRleH0pKSk7IjsKICAgICB9CkBAIC0xMjQ4LDM1ICsx
Mjg5LDU5IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGUKIEVORAog
ICAgIH0KIAorICAgICMgZmluZCB0aGUgc3VwZXIgZGVzY3JpcHRvcgorICAgIG15ICRwYXJlbnRD
bGFzc0luZGV4ID0gIklOVkFMSURfQ0xBU1NfSU5ERVgiOworICAgIGZvcmVhY2ggKEB7JGRhdGFO
b2RlLT5wYXJlbnRzfSkgeworICAgICAgICBteSAkcGFyZW50ID0gJGNvZGVHZW5lcmF0b3ItPlN0
cmlwTW9kdWxlKCRfKTsKKyAgICAgICAgaWYgKCRwYXJlbnQgZXEgIkV2ZW50VGFyZ2V0IikgeyBu
ZXh0OyB9CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4JHtwYXJlbnR9LmgifSA9IDE7CisgICAg
ICAgICRwYXJlbnRDbGFzc0luZGV4ID0gdWMoJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRw
YXJlbnQpKTsKKyAgICAgICAgbGFzdDsKKyAgICB9CisKKyAgICAjIGZpbmQgdGhlIGZpZWxkIGNv
dW50CisgICAgbXkgJGZpZWxkQ291bnQgPSAiVjhDdXN0b206OmtEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCI7CisgICAgaWYgKElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgeworICAg
ICAgICAkZmllbGRDb3VudCA9ICJWOEN1c3RvbTo6a05vZGVNaW5pbXVtSW50ZXJuYWxGaWVsZENv
dW50IjsKKyAgICB9CisgICAgCiAgICAgIyBHZW5lcmF0ZSB0aGUgdGVtcGxhdGUgY29uZmlndXJh
dGlvbiBtZXRob2QKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlJHtjbGFzc05hbWV9VGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpIHsKLSAgdjg6
OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBs
YXRlKCk7CisgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0X3NpZ25hdHVyZSA9IGNv
bmZpZ3VyZVRlbXBsYXRlKGRlc2MsIFwiJHtpbnRlcmZhY2VOYW1lfVwiLAorICAgICAgVjhDbGFz
c0luZGV4OjokcGFyZW50Q2xhc3NJbmRleCwgJGZpZWxkQ291bnQsCiBFTkQKLSAgICBpZiAoSXNO
b2RlU3ViVHlwZSgkZGF0YU5vZGUpKSB7CisKKyAgICAjIFNldCB1cCBvdXIgYXR0cmlidXRlcyBp
ZiB3ZSBoYXZlIHRoZW0KKyAgICBpZiAoJGhhc19hdHRyaWJ1dGVzKSB7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7CisgICAgICAke2ludGVyZmFjZU5hbWV9X2F0dHJzLCBzaXpl
b2YoJHtpbnRlcmZhY2VOYW1lfV9hdHRycykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9X2F0dHJz
KSwKK0VORAorICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci0gIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtOb2RlTWluaW11
bUludGVybmFsRmllbGRDb3VudCk7CisgICAgICBOVUxMLCAwLAorRU5ECisgICAgfQorICAgIAor
ICAgIGlmICgkaGFzX2NhbGxiYWNrcykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOworICAgICAgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3MsIHNpemVvZigke2ludGVyZmFj
ZU5hbWV9X2NhbGxiYWNrcykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNrcykpOwog
RU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAg
aW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICAgIE5VTEwsIDApOwogRU5ECiAgICAgfQogCisgICAg
aWYgKCRhY2Nlc3NfY2hlY2sgb3IgQGVuYWJsZWRBdFJ1bnRpbWUgb3IgQHskZGF0YU5vZGUtPmZ1
bmN0aW9uc30gb3IgJGhhc19jb25zdGFudHMpIHsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8
RU5EKTsKLSAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRfc2lnbmF0dXJlID0gdjg6
OlNpZ25hdHVyZTo6TmV3KGRlc2MpOworICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBp
bnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwotICAkYWNjZXNz
X2NoZWNrCi1FTkQKLQotCi0gICAgIyBTZXQgdXAgb3VyIGF0dHJpYnV0ZXMgaWYgd2UgaGF2ZSB0
aGVtCi0gICAgaWYgKCRoYXNfYXR0cmlidXRlcykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwotICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMoaW5zdGFuY2UsIHByb3RvLCAk
e2ludGVyZmFjZU5hbWV9X2F0dHJzLCBzaXplb2YoJHtpbnRlcmZhY2VOYW1lfV9hdHRycykvc2l6
ZW9mKCoke2ludGVyZmFjZU5hbWV9X2F0dHJzKSk7CiBFTkQKICAgICB9CiAKKyAgICBwdXNoKEBp
bXBsQ29udGVudCwgICIgICRhY2Nlc3NfY2hlY2tcbiIpOworICAgIAogICAgICMgU2V0dXAgdGhl
IGVuYWJsZS1hdC1ydW50aW1lIGF0dHJzIGlmIHdlIGhhdmUgdGhlbQogICAgIGZvcmVhY2ggbXkg
JHJ1bnRpbWVfYXR0ciAoQGVuYWJsZWRBdFJ1bnRpbWUpIHsKICAgICAgICAgJGVuYWJsZV9mdW5j
dGlvbiA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJHJ1bnRp
bWVfYXR0ci0+c2lnbmF0dXJlLT5uYW1lKTsKQEAgLTEyOTMsNyArMTM1OCw5IEBAIEVORAogICAg
IH0KIAogICAgICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nlc3Nv
cigpCisgICAgJHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICR0b3RhbF9mdW5jdGlvbnMrKzsK
ICAgICAgICAgbXkgJGF0dHJFeHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzOwogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwog
CkBAIC0xMzQ3LDYgKzE0MTQsNyBAQCBFTkQKICAgICAgIHY4OjpBTExfQ0FOX1JFQUQsCiAgICAg
ICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9hdHRyaWJ1dGVz
KSk7CiBFTkQKKyAgICAgICAgICAkbnVtX2NhbGxiYWNrcysrOwogICAgICAgICAgIG5leHQ7CiAg
ICAgICB9CiAKQEAgLTEzNjEsMzEgKzE0MjksMjYgQEAgRU5ECiAgICAgICB9CiAKICAgICAgICMg
Tm9ybWFsIGZ1bmN0aW9uIGNhbGwgaXMgYSB0ZW1wbGF0ZQotICAgICAgbXkgJHRlbXBsYXRlRnVu
Y3Rpb24gPSBHZW5lcmF0ZU5ld0Z1bmN0aW9uVGVtcGxhdGUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUs
ICRzaWduYXR1cmUpOwotCi0KKyAgICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxh
dGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgICAgCisgICAgICBpZiAo
JHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgInY4OjpEb250RGVsZXRlIikgeworICAgICAgICAgICRw
cm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiI7CisgICAgICB9IGVsc2UgeworICAgICAgICAgICRwcm9w
ZXJ0eV9hdHRyaWJ1dGVzID0gIiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigk
cHJvcGVydHlfYXR0cmlidXRlcykiOworICAgICAgfQorICAgICAgCisgICAgICBpZiAoJHRlbXBs
YXRlIGVxICJwcm90byIgJiYgJGNvbmRpdGlvbmFsIGVxICIiICYmICRzaWduYXR1cmUgZXEgImRl
ZmF1bHRfc2lnbmF0dXJlIiAmJiAkcHJvcGVydHlfYXR0cmlidXRlcyBlcSAiIikgeworICAgICAg
ICAgICMgU3RhbmRhcmQgdHlwZSBvZiBjYWxsYmFjaywgYWxyZWFkeSBjcmVhdGVkIGluIHRoZSBi
YXRjaCwgc28gc2tpcCBpdCBoZXJlLgorICAgICAgICAgIG5leHQ7CisgICAgICB9CisgICAgICAK
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0KLSAgLy8gJGNvbW1lbnRJbmZvCi0g
ICRjb25kaXRpb25hbCAke3RlbXBsYXRlfS0+U2V0KAotICAgICAgdjg6OlN0cmluZzo6TmV3KCIk
bmFtZSIpLAotICAgICAgJHRlbXBsYXRlRnVuY3Rpb24sCi0gICAgICBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9hdHRyaWJ1dGVzKSk7CisgICR7Y29uZGl0aW9u
YWx9Y3JlYXRlQ2FsbGJhY2soJHRlbXBsYXRlLCAiJG5hbWUiLCAkY2FsbGJhY2ssICR7c2lnbmF0
dXJlfSRwcm9wZXJ0eV9hdHRyaWJ1dGVzKTsKIEVORAorICAgICAgJG51bV9jYWxsYmFja3MrKzsK
ICAgICB9Ci0KLSAgICAjIHNldCB0aGUgc3VwZXIgZGVzY3JpcHRvcgotICAgIGZvcmVhY2ggKEB7
JGRhdGFOb2RlLT5wYXJlbnRzfSkgewotICAgICAgICBteSAkcGFyZW50ID0gJGNvZGVHZW5lcmF0
b3ItPlN0cmlwTW9kdWxlKCRfKTsKLSAgICAgICAgaWYgKCRwYXJlbnQgZXEgIkV2ZW50VGFyZ2V0
IikgeyBuZXh0OyB9Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlY4JHtwYXJlbnR9LmgifSA9IDE7
Ci0gICAgICAgIG15ICRwYXJlbnRDbGFzc0luZGV4ID0gdWMoJGNvZGVHZW5lcmF0b3ItPlN0cmlw
TW9kdWxlKCRwYXJlbnQpKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgIGRlc2MtPklu
aGVyaXQoVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENsYXNzSW5kZXg6OiR7cGFyZW50Q2xh
c3NJbmRleH0pKTtcbiIpOwotICAgICAgICBsYXN0OwotICAgIH0KLQotICAgICMgU2V0IHRoZSBj
bGFzcyBuYW1lLiAgVGhpcyBpcyB1c2VkIHdoZW4gcHJpbnRpbmcgb2JqZWN0cy4KLSAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgZGVzYy0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldyhcIiR7
aW50ZXJmYWNlTmFtZX1cIikpO1xuIik7CisgICAgCisgICAgZGllICJXcm9uZyBudW1iZXIgb2Yg
Y2FsbGJhY2tzIGdlbmVyYXRlZCBmb3IgJGludGVyZmFjZU5hbWUgKCRudW1fY2FsbGJhY2tzLCBz
aG91bGQgYmUgJHRvdGFsX2Z1bmN0aW9ucykiIGlmICRudW1fY2FsbGJhY2tzICE9ICR0b3RhbF9m
dW5jdGlvbnM7CiAKICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHJldmlz
aW9uIDUwODQ2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zODcsNCArMzg3LDQxIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBjcmUKICAgICByZXR1cm4gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcocmVzdWx0KTsKIH0gICAgICAgIAogCit2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ZGVz
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICppbnRlcmZhY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSBwYXJlbnRDbGFzc0luZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZENvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRy
aWJ1dGUqIGF0dHJpYnV0ZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxiYWNrcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3Vu
dCkKK3sKKyAgICBkZXNjLT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3KGludGVyZmFjZU5h
bWUpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2Mt
Pkluc3RhbmNlVGVtcGxhdGUoKTsKKyAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KGZpZWxkQ291bnQpOworICAgIGlmIChwYXJlbnRDbGFzc0luZGV4KQorICAgICAgICBkZXNjLT5J
bmhlcml0KFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUocGFyZW50Q2xhc3NJbmRleCkpOworICAg
IGlmIChhdHRyaWJ1dGVDb3VudCkKKyAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGlu
c3RhbmNlLCBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlcywgYXR0cmlidXRlQ291bnQpOworICAgIHY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPiBkZWZhdWx0X3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
KTsKKyAgICBpZiAoY2FsbGJhY2tDb3VudCkKKyAgICAgICAgYmF0Y2hDb25maWd1cmVDYWxsYmFj
a3MoZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdF9zaWduYXR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MsIGNhbGxiYWNrQ291bnQpOwor
ICAgIHJldHVybiBkZWZhdWx0X3NpZ25hdHVyZTsKK30KKwordm9pZCBjcmVhdGVDYWxsYmFjayh2
ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgdjg6Okludm9jYXRpb25DYWxs
YmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBzaWduYXR1cmUsCisgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBhdHRyaWJ1dGUpCit7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcobmFtZSksCisg
ICAgICAgICAgICAgICB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSwgc2lnbmF0dXJlKSwKKyAgICAgICAgICAgICAgIGF0dHJpYnV0ZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAkocmV2aXNpb24gNTA4NDYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVt
cGxhdGUoKTsKIAorICAgIHN0cnVjdCBCYXRjaGVkQXR0cmlidXRlOworICAgIHN0cnVjdCBCYXRj
aGVkQ2FsbGJhY2s7CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3Vy
ZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW50ZXJm
YWNlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHBhcmVudENsYXNzSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZENvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVk
QXR0cmlidXRlKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNrKiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQpOwor
ICAgIAorICAgIHZvaWQgY3JlYXRlQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0
ZT4gcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6Okludm9jYXRpb25DYWxsYmFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4sCisgICAgICAgICAgICAgICAg
ICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlcyA9IHY4OjpEb250RGVsZXRl
KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4QmluZGluZ19o
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTMgKzcyLDM0
IEBAIFY4RXh0ZW5zaW9ucyBWOFByb3h5OjptX2V4dGVuc2lvbnM7CiBjb25zdCBjaGFyKiBWOFBy
b3h5OjprQ29udGV4dERlYnVnRGF0YVR5cGUgPSAidHlwZSI7CiBjb25zdCBjaGFyKiBWOFByb3h5
OjprQ29udGV4dERlYnVnRGF0YVZhbHVlID0gInZhbHVlIjsKIAotdm9pZCBiYXRjaENvbmZpZ3Vy
ZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUq
IGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3VudCkKK3ZvaWQgYmF0Y2hDb25maWd1cmVB
dHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4g
cHJvdG8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSogYXR0cmlidXRlcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
YXR0cmlidXRlQ291bnQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVD
b3VudDsgKytpKQogICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBh
dHRyaWJ1dGVzW2ldKTsKIH0KIAotdm9pZCBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgY29uc3QgQmF0Y2hlZENvbnN0YW50KiBjb25zdGFu
dHMsIHNpemVfdCBjb25zdGFudENvdW50KQordm9pZCBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxi
YWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsYmFja0NvdW50OyArK2kpIHsKKyAg
ICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLAorICAg
ICAgICAgICAgICAgICAgIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY2FsbGJhY2tzW2ldLmNh
bGxiYWNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2lnbmF0dXJlKSwKKyAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzKTsK
KyAgICB9Cit9CisKK3ZvaWQgYmF0Y2hDb25maWd1cmVDb25zdGFudHModjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDb25zdGFudCogY29uc3RhbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29uc3RhbnRDb3VudCkKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50Q291bnQ7ICsraSkgewogICAgICAgICBj
b25zdCBCYXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50ID0gJmNvbnN0YW50c1tpXTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIHZvaWQgYmF0Y2hDb25maWd1cmVDb25zdGFudHModjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgY29u
c3QgQmF0Y2hlZENvbnN0YW50Kiwgc2l6ZV90IGNvbnN0YW50Q291bnQpOwogCisgICAgc3RydWN0
IEJhdGNoZWRDYWxsYmFjayB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CisgICAg
ICAgIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2s7CisgICAgfTsKKworICAgIHZvaWQg
YmF0Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJh
Y2sqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0Nv
dW50KTsKKwogICAgIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAyMDsKIAogICAgIC8v
IEluZm9ybWF0aW9uIGFib3V0IGFuIGV4dGVuc2lvbiB0aGF0IGlzIHJlZ2lzdGVyZWQgZm9yIHVz
ZSB3aXRoIFY4LiBJZgo=
</data>
<flag name="review"
          id="24732"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>