<?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>148245</bug_id>
          
          <creation_ts>2015-08-20 14:16:49 -0700</creation_ts>
          <short_desc>[JSC] Get rid of DFG&apos;s MergeMode</short_desc>
          <delta_ts>2015-08-28 19:04:52 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119350</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-08-20 14:16:49 -0700</bug_when>
    <thetext>[JSC] Get rid of DFG&apos;s MergeMode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119351</commentid>
    <comment_count>1</comment_count>
      <attachid>259493</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-08-20 14:17:24 -0700</bug_when>
    <thetext>Created attachment 259493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119446</commentid>
    <comment_count>2</comment_count>
      <attachid>259493</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-20 16:39:00 -0700</bug_when>
    <thetext>Comment on attachment 259493
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.h:86
&gt;      // the block&apos;s data structures. There are three return modes, depending
&gt;      // on the value of mergeMode:
&gt;      //
&gt; -    // DontMerge:
&gt; -    //    Always returns false.
&gt; -    //
&gt; -    // MergeToTail:
&gt; -    //    Returns true if the state of the block at the tail was changed.
&gt; -    //    This means that you must call mergeToSuccessors(), and if that
&gt; -    //    returns true, then you must revisit (at least) the successor
&gt; -    //    blocks. False will always be returned if the block is terminal
&gt; -    //    (i.e. ends in Throw or Return, or has a ForceOSRExit inside it).
&gt; -    //
&gt; -    // MergeToSuccessors:
&gt;      //    Returns true if the state of the block at the tail was changed,
&gt;      //    and, if the state at the heads of successors was changed.
&gt;      //    A true return means that you must revisit (at least) the successor
&gt;      //    blocks. This also sets cfaShouldRevisit to true for basic blocks
&gt;      //    that must be visited next.
&gt; -    bool endBasicBlock(MergeMode);
&gt; +    bool endBasicBlock();

You should probably update this comment a bit!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119491</commentid>
    <comment_count>3</comment_count>
      <attachid>259538</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-08-20 17:38:45 -0700</bug_when>
    <thetext>Created attachment 259538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121726</commentid>
    <comment_count>4</comment_count>
      <attachid>259538</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-28 09:38:37 -0700</bug_when>
    <thetext>Comment on attachment 259538
Patch

r=me.

Please also remove the entries for DFGMergeMode.h from JavaScriptCore.vcxproj and JavaScriptCore.vcxproj.filters in Source/JavaScriptCore/JavaScriptCore.vcxproj.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121918</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-08-28 19:04:52 -0700</bug_when>
    <thetext>Committed r189138: &lt;http://trac.webkit.org/changeset/189138&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259493</attachid>
            <date>2015-08-20 14:17:24 -0700</date>
            <delta_ts>2015-08-20 17:38:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148245-20150820141720.patch</filename>
            <type>text/plain</type>
            <size>13449</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmI3N2EyZjI4ODcyNTgzODhjOGQ5Mzg2NmY1N2M2YWUzYjgxOTY3Li41OGMxZTk5ZDNkOTdlZmZi
YTJhOGNkY2RjYzYwYjJlY2U5ZDIxYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0wOC0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBHZXQgcmlkIG9mIERGRydzIE1lcmdlTW9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MjQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhhdCBjb2RlIGhhcyBi
ZWNvbWUgdXNlbGVzcywgdGhlIG1lcmdlIG1vZGUgaXMgYWx3YXlzIE1lcmdlVG9TdWNjZXNzb3Jz
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGQVBo
YXNlOjpwZXJmb3JtQmxvY2tDRkEpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJh
c2ljQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAg
ICAgICAqIGRmZy9ERkdNZXJnZU1vZGUuaDogUmVtb3ZlZC4KKwogMjAxNS0wOC0xOCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgYWxsIHVzZXMgb2Yg
c3RkOjptdXRleC9zdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSB3aXRoIFdURjo6TG9jay9XVEY6OkNv
bmRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGZmY2M2OTYzOGVmZjlh
NzRhMWQwYWE0MGUxMGNjMDdmMWFhOTAzLi4xMmUyZTJmNTQzYzVlZDgyMDlmZTVjNWQ1ZTZlMDA2
Njk4OTdiM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw3ICsxMzcx
LDYgQEAKIAkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzA0RDhGRjE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzA0RDkwNTE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNEQ5MDAxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCAqLzsgfTsKIAkJQTcw
NEQ5MDYxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0RDkwMTE3QTBCQUE4
MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQg
LyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzA0RDkwMjE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwOUYyRjAxN0Ew
QUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRo
Q2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3MDlGMkYyMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOUYyRjExN0EwQUMyQTAw
NTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0Mw
MEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29k
ZXMzMl82NC5jcHAgKi87IH07CkBAIC0zMjA0LDcgKzMyMDMsNiBAQAogCQlBNzA0RDhGRjE3QTBC
QUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDsg
cGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzA0RDkwMDE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNEQ5MDExN0EwQkFBODAw
NkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcwNEQ5
MDIxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdNZXJnZU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdNZXJnZU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8q
IFNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbG93UGF0
aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOUYyRjExN0EwQUMyQTAw
NTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTc3LDcgKzUxNzUsNiBAQAogCQkJCUE3NjdC
NUI0MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICov
LAogCQkJCTBGNTg3NEVCMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCAqLywKIAkJ
CQkwRjU4NzRFQzE5NEZFQjEyMDBBQUIyQzEgLyogREZHTWF5RXhpdC5oICovLAotCQkJCUE3MDRE
OTAyMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdNZXJnZU1vZGUuaCAqLywKIAkJCQkwRjE3MjVGRTFC
NDg3MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAgKi8sCiAJCQkJMEYyQkRDM0Qx
NTIyODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkR3JhcGguaCAqLywKIAkJCQkwRkI0QjUxMDE2
QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICovLApAQCAtNjA2Niw3ICs2MDYzLDYg
QEAKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNy
ZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VEMTlEMEJBN0QwMEIxRDFC
NSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTcwNEQ5
MDcxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQkRDNDUxNTIyODAxQjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkR3JhcGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElE
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZBUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5j
cHAKaW5kZXggNmJmNDc1OWNlNWMxM2M4MTA2ZTQ0MTdmOGExZWFmOTMwZDdmNjBkMy4uMDAwYzM4
OWI1ZjkyNGE3N2FlMWNhNDhkNjVjOWQ1OTVjM2JiMTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9pbnRlcnByZXRlci5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgICAg
ICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgfQotICAgICAgICBtX2NoYW5nZWQgfD0gbV9zdGF0
ZS5lbmRCYXNpY0Jsb2NrKE1lcmdlVG9TdWNjZXNzb3JzKTsKKyAgICAgICAgbV9jaGFuZ2VkIHw9
IG1fc3RhdGUuZW5kQmFzaWNCbG9jaygpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgdGFpbCB2YXJzOiAiLCBibG9jay0+dmFs
dWVzQXRUYWlsLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggYjEyNjljMWI3MDBjOWI4OTA5ZTI4MjM2
MjhhMzJkYWFlM2FlOGNhMi4uMTM3M2RiZTVkYzlhOTU5ZTNmNjc5NDg4MDY5NjBkZDVjMDhjOTRj
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICB9CiB9CiAKLWJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmVuZEJhc2ljQmxvY2soTWVyZ2VNb2RlIG1lcmdlTW9kZSkKK2Jvb2wgSW5QbGFjZUFic3RyYWN0
U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogewogICAgIEFTU0VSVChtX2Jsb2NrKTsKICAgICAKQEAg
LTE3Nyw1MCArMTc3LDQxIEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxv
Y2soTWVyZ2VNb2RlIG1lcmdlTW9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAoKG1lcmdlTW9kZSAh
PSBEb250TWVyZ2UpIHx8ICFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgY2hhbmdlZCB8PSBj
aGVja0FuZFNldChibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsLCBtX3N0cnVj
dHVyZUNsb2JiZXJTdGF0ZSk7CisgICAgYm9vbCBjaGFuZ2VkID0gY2hlY2tBbmRTZXQoYmxvY2st
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCwgbV9zdHJ1Y3R1cmVDbG9iYmVyU3RhdGUp
OwogICAgIAotICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7Ci0gICAgICAgIGNhc2Ug
VGhyZWFkZWRDUFM6IHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJn
dW1lbnQgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJn
dW1lbnQpIHsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJs
b2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMuYXJndW1l
bnQoYXJndW1lbnQpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGxv
Y2FsID0gMDsgbG9jYWwgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7
ICsrbG9jYWwpIHsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9
IGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpOwotICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwobG9j
YWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7CisgICAg
Y2FzZSBUaHJlYWRlZENQUzogeworICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2Fy
Z3VtZW50KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJsb2Nr
LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVN0YXRlQXRUYWlsKGRlc3RpbmF0aW9uLCBtX3ZhcmlhYmxlcy5hcmd1bWVudChhcmd1
bWVudCksIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgU1NBOiB7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBibG9jay0+dmFsdWVzQXRUYWlsW2ldLm1lcmdlKG1fdmFy
aWFibGVzW2ldKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSGFzaFNldDxOb2RlKj46Oml0
ZXJhdG9yIGl0ZXIgPSBibG9jay0+c3NhLT5saXZlQXRUYWlsLmJlZ2luKCk7Ci0gICAgICAgICAg
ICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgZW5kID0gYmxvY2stPnNzYS0+bGl2ZUF0VGFpbC5l
bmQoKTsKLSAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
YmxvY2stPnNzYS0+dmFsdWVzQXRUYWlsLmZpbmQobm9kZSktPnZhbHVlLm1lcmdlKGZvck5vZGUo
bm9kZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZm9y
IChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKTsgKytsb2NhbCkgeworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGlu
YXRpb24gPSBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwo
bG9jYWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CiAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTU0E6
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRUYWlsLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgY2hhbmdlZCB8PSBibG9jay0+dmFsdWVzQXRUYWlsW2ld
Lm1lcmdlKG1fdmFyaWFibGVzW2ldKTsKKworICAgICAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0
b3IgaXRlciA9IGJsb2NrLT5zc2EtPmxpdmVBdFRhaWwuYmVnaW4oKTsKKyAgICAgICAgSGFzaFNl
dDxOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IGJsb2NrLT5zc2EtPmxpdmVBdFRhaWwuZW5kKCk7Cisg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICBOb2RlKiBu
b2RlID0gKml0ZXI7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGJsb2NrLT5zc2EtPnZhbHVlc0F0
VGFpbC5maW5kKG5vZGUpLT52YWx1ZS5tZXJnZShmb3JOb2RlKG5vZGUpKTsKICAgICAgICAgfQor
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKG1lcmdlTW9kZSAhPSBEb250
TWVyZ2UgfHwgIWNoYW5nZWQpOwotICAgIAorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKICAgICByZXNldCgpOwogICAgIAotICAg
IGlmIChtZXJnZU1vZGUgIT0gTWVyZ2VUb1N1Y2Nlc3NvcnMpCi0gICAgICAgIHJldHVybiBjaGFu
Z2VkOwotICAgIAogICAgIHJldHVybiBtZXJnZVRvU3VjY2Vzc29ycyhibG9jayk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
aAppbmRleCAyMDE0NDRjODY0NWZkMTZlNGU0Y2Y1NDg0NzQ5NzdlZWQxMzQzOGNhLi45MTRjZmIz
NmY3NTJjNzJmZDU3YWRmMWU0MzdhNDlmMjhhOTc1NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR0JyYW5jaERp
cmVjdGlvbi5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHTWVyZ2VNb2Rl
LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CkBAIC03OSwyMyArNzgsMTIgQEAgcHVibGljOgogICAgIC8vIHRoZSBibG9jaydzIGRhdGEg
c3RydWN0dXJlcy4gVGhlcmUgYXJlIHRocmVlIHJldHVybiBtb2RlcywgZGVwZW5kaW5nCiAgICAg
Ly8gb24gdGhlIHZhbHVlIG9mIG1lcmdlTW9kZToKICAgICAvLwotICAgIC8vIERvbnRNZXJnZToK
LSAgICAvLyAgICBBbHdheXMgcmV0dXJucyBmYWxzZS4KLSAgICAvLwotICAgIC8vIE1lcmdlVG9U
YWlsOgotICAgIC8vICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RhdGUgb2YgdGhlIGJsb2NrIGF0
IHRoZSB0YWlsIHdhcyBjaGFuZ2VkLgotICAgIC8vICAgIFRoaXMgbWVhbnMgdGhhdCB5b3UgbXVz
dCBjYWxsIG1lcmdlVG9TdWNjZXNzb3JzKCksIGFuZCBpZiB0aGF0Ci0gICAgLy8gICAgcmV0dXJu
cyB0cnVlLCB0aGVuIHlvdSBtdXN0IHJldmlzaXQgKGF0IGxlYXN0KSB0aGUgc3VjY2Vzc29yCi0g
ICAgLy8gICAgYmxvY2tzLiBGYWxzZSB3aWxsIGFsd2F5cyBiZSByZXR1cm5lZCBpZiB0aGUgYmxv
Y2sgaXMgdGVybWluYWwKLSAgICAvLyAgICAoaS5lLiBlbmRzIGluIFRocm93IG9yIFJldHVybiwg
b3IgaGFzIGEgRm9yY2VPU1JFeGl0IGluc2lkZSBpdCkuCi0gICAgLy8KLSAgICAvLyBNZXJnZVRv
U3VjY2Vzc29yczoKICAgICAvLyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHN0YXRlIG9mIHRoZSBi
bG9jayBhdCB0aGUgdGFpbCB3YXMgY2hhbmdlZCwKICAgICAvLyAgICBhbmQsIGlmIHRoZSBzdGF0
ZSBhdCB0aGUgaGVhZHMgb2Ygc3VjY2Vzc29ycyB3YXMgY2hhbmdlZC4KICAgICAvLyAgICBBIHRy
dWUgcmV0dXJuIG1lYW5zIHRoYXQgeW91IG11c3QgcmV2aXNpdCAoYXQgbGVhc3QpIHRoZSBzdWNj
ZXNzb3IKICAgICAvLyAgICBibG9ja3MuIFRoaXMgYWxzbyBzZXRzIGNmYVNob3VsZFJldmlzaXQg
dG8gdHJ1ZSBmb3IgYmFzaWMgYmxvY2tzCiAgICAgLy8gICAgdGhhdCBtdXN0IGJlIHZpc2l0ZWQg
bmV4dC4KLSAgICBib29sIGVuZEJhc2ljQmxvY2soTWVyZ2VNb2RlKTsKKyAgICBib29sIGVuZEJh
c2ljQmxvY2soKTsKICAgICAKICAgICAvLyBSZXNldCB0aGUgQWJzdHJhY3RTdGF0ZS4gVGhpcyB0
aHJvd3MgYXdheSBhbnkgcmVzdWx0cywgYW5kIGF0IHRoaXMgcG9pbnQKICAgICAvLyB5b3UgY2Fu
IHNhZmVseSBjYWxsIGJlZ2luQmFzaWNCbG9jaygpIG9uIGFueSBiYXNpYyBibG9jay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWVyZ2VNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01lcmdlTW9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NjE5ZmVhYWZhMzczYjk1ODcxYWVmMDgwYjkzY2QxN2M1NWEyODE5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWVyZ2VNb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZH
TWVyZ2VNb2RlX2gKLSNkZWZpbmUgREZHTWVyZ2VNb2RlX2gKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewotCi1lbnVtIE1lcmdlTW9kZSB7Ci0gICAgLy8gRG9uJ3QgbWVyZ2UgdGhl
IHN0YXRlIGluIEFic3RyYWN0U3RhdGUgd2l0aCBiYXNpYyBibG9ja3MuCi0gICAgRG9udE1lcmdl
LAotICAgIAotICAgIC8vIE1lcmdlIHRoZSBzdGF0ZSBpbiBBYnN0cmFjdFN0YXRlIHdpdGggdGhl
IHRhaWwgb2YgdGhlIGJhc2ljCi0gICAgLy8gYmxvY2sgYmVpbmcgYW5hbHl6ZWQuCi0gICAgTWVy
Z2VUb1RhaWwsCi0gICAgCi0gICAgLy8gTWVyZ2UgdGhlIHN0YXRlIGluIEFic3RyYWN0U3RhdGUg
d2l0aCB0aGUgdGFpbCBvZiB0aGUgYmFzaWMKLSAgICAvLyBibG9jaywgYW5kIHdpdGggdGhlIGhl
YWRzIG9mIHN1Y2Nlc3NvciBibG9ja3MuCi0gICAgTWVyZ2VUb1N1Y2Nlc3NvcnMKLX07Ci0KLX0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIERGR01lcmdlTW9kZV9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259538</attachid>
            <date>2015-08-20 17:38:45 -0700</date>
            <delta_ts>2015-08-28 09:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148245-20150820173840.patch</filename>
            <type>text/plain</type>
            <size>14028</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NmI3N2EyZjI4ODcyNTgzODhjOGQ5Mzg2NmY1N2M2YWUzYjgxOTY3Li41OGMxZTk5ZDNkOTdlZmZi
YTJhOGNkY2RjYzYwYjJlY2U5ZDIxYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0wOC0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBHZXQgcmlkIG9mIERGRydzIE1lcmdlTW9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MjQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhhdCBjb2RlIGhhcyBi
ZWNvbWUgdXNlbGVzcywgdGhlIG1lcmdlIG1vZGUgaXMgYWx3YXlzIE1lcmdlVG9TdWNjZXNzb3Jz
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGQVBo
YXNlOjpwZXJmb3JtQmxvY2tDRkEpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJh
c2ljQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOgorICAg
ICAgICAqIGRmZy9ERkdNZXJnZU1vZGUuaDogUmVtb3ZlZC4KKwogMjAxNS0wOC0xOCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgYWxsIHVzZXMgb2Yg
c3RkOjptdXRleC9zdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSB3aXRoIFdURjo6TG9jay9XVEY6OkNv
bmRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGZmY2M2OTYzOGVmZjlh
NzRhMWQwYWE0MGUxMGNjMDdmMWFhOTAzLi4xMmUyZTJmNTQzYzVlZDgyMDlmZTVjNWQ1ZTZlMDA2
Njk4OTdiM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw3ICsxMzcx
LDYgQEAKIAkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzA0RDhGRjE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzA0RDkwNTE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNEQ5MDAxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCAqLzsgfTsKIAkJQTcw
NEQ5MDYxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0RDkwMTE3QTBCQUE4
MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQg
LyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzA0RDkwMjE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwOUYyRjAxN0Ew
QUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRo
Q2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3MDlGMkYyMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOUYyRjExN0EwQUMyQTAw
NTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0Mw
MEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29k
ZXMzMl82NC5jcHAgKi87IH07CkBAIC0zMjA0LDcgKzMyMDMsNiBAQAogCQlBNzA0RDhGRjE3QTBC
QUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDsg
cGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzA0RDkwMDE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwNEQ5MDExN0EwQkFBODAw
NkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcwNEQ5
MDIxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdNZXJnZU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdNZXJnZU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8q
IFNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbG93UGF0
aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwOUYyRjExN0EwQUMyQTAw
NTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTc3LDcgKzUxNzUsNiBAQAogCQkJCUE3NjdC
NUI0MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICov
LAogCQkJCTBGNTg3NEVCMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCAqLywKIAkJ
CQkwRjU4NzRFQzE5NEZFQjEyMDBBQUIyQzEgLyogREZHTWF5RXhpdC5oICovLAotCQkJCUE3MDRE
OTAyMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdNZXJnZU1vZGUuaCAqLywKIAkJCQkwRjE3MjVGRTFC
NDg3MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAgKi8sCiAJCQkJMEYyQkRDM0Qx
NTIyODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkR3JhcGguaCAqLywKIAkJCQkwRkI0QjUxMDE2
QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICovLApAQCAtNjA2Niw3ICs2MDYzLDYg
QEAKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNy
ZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VEMTlEMEJBN0QwMEIxRDFC
NSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTcwNEQ5
MDcxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQkRDNDUxNTIyODAxQjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkR3JhcGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElE
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZBUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5j
cHAKaW5kZXggNmJmNDc1OWNlNWMxM2M4MTA2ZTQ0MTdmOGExZWFmOTMwZDdmNjBkMy4uMDAwYzM4
OWI1ZjkyNGE3N2FlMWNhNDhkNjVjOWQ1OTVjM2JiMTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9pbnRlcnByZXRlci5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgICAg
ICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgfQotICAgICAgICBtX2NoYW5nZWQgfD0gbV9zdGF0
ZS5lbmRCYXNpY0Jsb2NrKE1lcmdlVG9TdWNjZXNzb3JzKTsKKyAgICAgICAgbV9jaGFuZ2VkIHw9
IG1fc3RhdGUuZW5kQmFzaWNCbG9jaygpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgdGFpbCB2YXJzOiAiLCBibG9jay0+dmFs
dWVzQXRUYWlsLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggYjEyNjljMWI3MDBjOWI4OTA5ZTI4MjM2
MjhhMzJkYWFlM2FlOGNhMi4uMTM3M2RiZTVkYzlhOTU5ZTNmNjc5NDg4MDY5NjBkZDVjMDhjOTRj
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKICAgICB9CiB9CiAKLWJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6
OmVuZEJhc2ljQmxvY2soTWVyZ2VNb2RlIG1lcmdlTW9kZSkKK2Jvb2wgSW5QbGFjZUFic3RyYWN0
U3RhdGU6OmVuZEJhc2ljQmxvY2soKQogewogICAgIEFTU0VSVChtX2Jsb2NrKTsKICAgICAKQEAg
LTE3Nyw1MCArMTc3LDQxIEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxv
Y2soTWVyZ2VNb2RlIG1lcmdlTW9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAoKG1lcmdlTW9kZSAh
PSBEb250TWVyZ2UpIHx8ICFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgY2hhbmdlZCB8PSBj
aGVja0FuZFNldChibG9jay0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsLCBtX3N0cnVj
dHVyZUNsb2JiZXJTdGF0ZSk7CisgICAgYm9vbCBjaGFuZ2VkID0gY2hlY2tBbmRTZXQoYmxvY2st
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCwgbV9zdHJ1Y3R1cmVDbG9iYmVyU3RhdGUp
OwogICAgIAotICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7Ci0gICAgICAgIGNhc2Ug
VGhyZWFkZWRDUFM6IHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZ3VtZW50ID0gMDsgYXJn
dW1lbnQgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJn
dW1lbnQpIHsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJs
b2NrLT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMuYXJndW1l
bnQoYXJndW1lbnQpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGxv
Y2FsID0gMDsgbG9jYWwgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7
ICsrbG9jYWwpIHsKLSAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9
IGJsb2NrLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpOwotICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwobG9j
YWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG1fZ3JhcGgubV9mb3JtKSB7CisgICAg
Y2FzZSBUaHJlYWRlZENQUzogeworICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2Fy
Z3VtZW50KSB7CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJsb2Nr
LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVN0YXRlQXRUYWlsKGRlc3RpbmF0aW9uLCBtX3ZhcmlhYmxlcy5hcmd1bWVudChhcmd1
bWVudCksIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgU1NBOiB7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBibG9jay0+dmFsdWVzQXRUYWlsW2ldLm1lcmdlKG1fdmFy
aWFibGVzW2ldKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSGFzaFNldDxOb2RlKj46Oml0
ZXJhdG9yIGl0ZXIgPSBibG9jay0+c3NhLT5saXZlQXRUYWlsLmJlZ2luKCk7Ci0gICAgICAgICAg
ICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgZW5kID0gYmxvY2stPnNzYS0+bGl2ZUF0VGFpbC5l
bmQoKTsKLSAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9ICppdGVyOwotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
YmxvY2stPnNzYS0+dmFsdWVzQXRUYWlsLmZpbmQobm9kZSktPnZhbHVlLm1lcmdlKGZvck5vZGUo
bm9kZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZm9y
IChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKTsgKytsb2NhbCkgeworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGlu
YXRpb24gPSBibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwo
bG9jYWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CiAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTU0E6
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFsdWVzQXRUYWlsLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgY2hhbmdlZCB8PSBibG9jay0+dmFsdWVzQXRUYWlsW2ld
Lm1lcmdlKG1fdmFyaWFibGVzW2ldKTsKKworICAgICAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0
b3IgaXRlciA9IGJsb2NrLT5zc2EtPmxpdmVBdFRhaWwuYmVnaW4oKTsKKyAgICAgICAgSGFzaFNl
dDxOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IGJsb2NrLT5zc2EtPmxpdmVBdFRhaWwuZW5kKCk7Cisg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICBOb2RlKiBu
b2RlID0gKml0ZXI7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGJsb2NrLT5zc2EtPnZhbHVlc0F0
VGFpbC5maW5kKG5vZGUpLT52YWx1ZS5tZXJnZShmb3JOb2RlKG5vZGUpKTsKICAgICAgICAgfQor
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKG1lcmdlTW9kZSAhPSBEb250
TWVyZ2UgfHwgIWNoYW5nZWQpOwotICAgIAorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKICAgICByZXNldCgpOwogICAgIAotICAg
IGlmIChtZXJnZU1vZGUgIT0gTWVyZ2VUb1N1Y2Nlc3NvcnMpCi0gICAgICAgIHJldHVybiBjaGFu
Z2VkOwotICAgIAogICAgIHJldHVybiBtZXJnZVRvU3VjY2Vzc29ycyhibG9jayk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
aAppbmRleCAyMDE0NDRjODY0NWZkMTZlNGU0Y2Y1NDg0NzQ5NzdlZWQxMzQzOGNhLi4xMDIyMGNk
ZjYwZWY5YTQ4ZGZjMTlmY2YzNDAxZjE2NDY5M2MzOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR0JyYW5jaERp
cmVjdGlvbi5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHTWVyZ2VNb2Rl
LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CkBAIC03NiwyNiArNzUsMTQgQEAgcHVibGljOgogICAgIC8vIEZpbmlzaCBhYnN0cmFjdGx5
IGV4ZWN1dGluZyBhIGJhc2ljIGJsb2NrLiBJZiBNZXJnZVRvVGFpbCBvcgogICAgIC8vIE1lcmdl
VG9TdWNjZXNzb3JzIGlzIHBhc3NlZCwgdGhlbiB0aGlzIG1lcmdlcyBldmVyeXRoaW5nIHdlIGhh
dmUKICAgICAvLyBsZWFybmVkIGFib3V0IGhvdyB0aGUgc3RhdGUgY2hhbmdlcyBkdXJpbmcgdGhp
cyBibG9jaydzIGV4ZWN1dGlvbiBpbnRvCi0gICAgLy8gdGhlIGJsb2NrJ3MgZGF0YSBzdHJ1Y3R1
cmVzLiBUaGVyZSBhcmUgdGhyZWUgcmV0dXJuIG1vZGVzLCBkZXBlbmRpbmcKLSAgICAvLyBvbiB0
aGUgdmFsdWUgb2YgbWVyZ2VNb2RlOgorICAgIC8vIHRoZSBibG9jaydzIGRhdGEgc3RydWN0dXJl
cy4KICAgICAvLwotICAgIC8vIERvbnRNZXJnZToKLSAgICAvLyAgICBBbHdheXMgcmV0dXJucyBm
YWxzZS4KLSAgICAvLwotICAgIC8vIE1lcmdlVG9UYWlsOgotICAgIC8vICAgIFJldHVybnMgdHJ1
ZSBpZiB0aGUgc3RhdGUgb2YgdGhlIGJsb2NrIGF0IHRoZSB0YWlsIHdhcyBjaGFuZ2VkLgotICAg
IC8vICAgIFRoaXMgbWVhbnMgdGhhdCB5b3UgbXVzdCBjYWxsIG1lcmdlVG9TdWNjZXNzb3JzKCks
IGFuZCBpZiB0aGF0Ci0gICAgLy8gICAgcmV0dXJucyB0cnVlLCB0aGVuIHlvdSBtdXN0IHJldmlz
aXQgKGF0IGxlYXN0KSB0aGUgc3VjY2Vzc29yCi0gICAgLy8gICAgYmxvY2tzLiBGYWxzZSB3aWxs
IGFsd2F5cyBiZSByZXR1cm5lZCBpZiB0aGUgYmxvY2sgaXMgdGVybWluYWwKLSAgICAvLyAgICAo
aS5lLiBlbmRzIGluIFRocm93IG9yIFJldHVybiwgb3IgaGFzIGEgRm9yY2VPU1JFeGl0IGluc2lk
ZSBpdCkuCi0gICAgLy8KLSAgICAvLyBNZXJnZVRvU3VjY2Vzc29yczoKLSAgICAvLyAgICBSZXR1
cm5zIHRydWUgaWYgdGhlIHN0YXRlIG9mIHRoZSBibG9jayBhdCB0aGUgdGFpbCB3YXMgY2hhbmdl
ZCwKLSAgICAvLyAgICBhbmQsIGlmIHRoZSBzdGF0ZSBhdCB0aGUgaGVhZHMgb2Ygc3VjY2Vzc29y
cyB3YXMgY2hhbmdlZC4KLSAgICAvLyAgICBBIHRydWUgcmV0dXJuIG1lYW5zIHRoYXQgeW91IG11
c3QgcmV2aXNpdCAoYXQgbGVhc3QpIHRoZSBzdWNjZXNzb3IKLSAgICAvLyAgICBibG9ja3MuIFRo
aXMgYWxzbyBzZXRzIGNmYVNob3VsZFJldmlzaXQgdG8gdHJ1ZSBmb3IgYmFzaWMgYmxvY2tzCi0g
ICAgLy8gICAgdGhhdCBtdXN0IGJlIHZpc2l0ZWQgbmV4dC4KLSAgICBib29sIGVuZEJhc2ljQmxv
Y2soTWVyZ2VNb2RlKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0YXRlIG9mIHRoZSBi
bG9jayBhdCB0aGUgdGFpbCB3YXMgY2hhbmdlZCwKKyAgICAvLyBhbmQsIGlmIHRoZSBzdGF0ZSBh
dCB0aGUgaGVhZHMgb2Ygc3VjY2Vzc29ycyB3YXMgY2hhbmdlZC4KKyAgICAvLyBBIHRydWUgcmV0
dXJuIG1lYW5zIHRoYXQgeW91IG11c3QgcmV2aXNpdCAoYXQgbGVhc3QpIHRoZSBzdWNjZXNzb3IK
KyAgICAvLyBibG9ja3MuIFRoaXMgYWxzbyBzZXRzIGNmYVNob3VsZFJldmlzaXQgdG8gdHJ1ZSBm
b3IgYmFzaWMgYmxvY2tzCisgICAgLy8gdGhhdCBtdXN0IGJlIHZpc2l0ZWQgbmV4dC4KKyAgICBi
b29sIGVuZEJhc2ljQmxvY2soKTsKICAgICAKICAgICAvLyBSZXNldCB0aGUgQWJzdHJhY3RTdGF0
ZS4gVGhpcyB0aHJvd3MgYXdheSBhbnkgcmVzdWx0cywgYW5kIGF0IHRoaXMgcG9pbnQKICAgICAv
LyB5b3UgY2FuIHNhZmVseSBjYWxsIGJlZ2luQmFzaWNCbG9jaygpIG9uIGFueSBiYXNpYyBibG9j
ay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWVyZ2VNb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01lcmdlTW9kZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NjE5ZmVhYWZhMzczYjk1ODcxYWVmMDgwYjkzY2QxN2M1NWEyODE5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWVyZ2VNb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgREZHTWVyZ2VNb2RlX2gKLSNkZWZpbmUgREZHTWVyZ2VNb2RlX2gKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIE1lcmdlTW9kZSB7Ci0gICAgLy8gRG9uJ3Qg
bWVyZ2UgdGhlIHN0YXRlIGluIEFic3RyYWN0U3RhdGUgd2l0aCBiYXNpYyBibG9ja3MuCi0gICAg
RG9udE1lcmdlLAotICAgIAotICAgIC8vIE1lcmdlIHRoZSBzdGF0ZSBpbiBBYnN0cmFjdFN0YXRl
IHdpdGggdGhlIHRhaWwgb2YgdGhlIGJhc2ljCi0gICAgLy8gYmxvY2sgYmVpbmcgYW5hbHl6ZWQu
Ci0gICAgTWVyZ2VUb1RhaWwsCi0gICAgCi0gICAgLy8gTWVyZ2UgdGhlIHN0YXRlIGluIEFic3Ry
YWN0U3RhdGUgd2l0aCB0aGUgdGFpbCBvZiB0aGUgYmFzaWMKLSAgICAvLyBibG9jaywgYW5kIHdp
dGggdGhlIGhlYWRzIG9mIHN1Y2Nlc3NvciBibG9ja3MuCi0gICAgTWVyZ2VUb1N1Y2Nlc3NvcnMK
LX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIERGR01lcmdlTW9k
ZV9oCi0K
</data>
<flag name="review"
          id="284723"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>