<?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>89420</bug_id>
          
          <creation_ts>2012-06-18 22:07:03 -0700</creation_ts>
          <short_desc>Web Inspector: Unify FileSystem callbacks.</short_desc>
          <delta_ts>2012-06-21 08:28:32 -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>Web Inspector (Deprecated)</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>
          <dependson>88602</dependson>
          <blocked>68203</blocked>
    
    <blocked>87856</blocked>
    
    <blocked>89642</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652029</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-18 22:07:03 -0700</bug_when>
    <thetext>InspectorFileSystemAgent.cpp has some callback dispatcher classes which are almost same each other, and similar class is going to increase in this way.
I&apos;d like to unify them to single template class to reduce duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652032</commentid>
    <comment_count>1</comment_count>
      <attachid>148246</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-18 22:10:00 -0700</bug_when>
    <thetext>Created attachment 148246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654318</commentid>
    <comment_count>2</comment_count>
      <attachid>148246</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-21 01:30:57 -0700</bug_when>
    <thetext>Comment on attachment 148246
Patch

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

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:181
&gt; +    RefPtr&lt;EntryCallback&gt; successCallback = createCallbackDispatcher(TypeParam&lt;EntryCallback&gt;(), this, &amp;GetFileSystemRootTask::gotEntry);

I think you can remove TypaParam argument and do 
  createCallbackDispatcher&lt;EntryCallback&gt;(this, &amp;GetFileSystemRootTask::gotEntry); 
instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654366</commentid>
    <comment_count>3</comment_count>
      <attachid>148762</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 04:13:08 -0700</bug_when>
    <thetext>Created attachment 148762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654369</commentid>
    <comment_count>4</comment_count>
      <attachid>148246</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 04:20:52 -0700</bug_when>
    <thetext>Comment on attachment 148246
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:181
&gt;&gt; +    RefPtr&lt;EntryCallback&gt; successCallback = createCallbackDispatcher(TypeParam&lt;EntryCallback&gt;(), this, &amp;GetFileSystemRootTask::gotEntry);
&gt; 
&gt; I think you can remove TypaParam argument and do 
&gt;   createCallbackDispatcher&lt;EntryCallback&gt;(this, &amp;GetFileSystemRootTask::gotEntry); 
&gt; instead.

We can&apos;t pass template parameter partially. Another option is like that: CallbackDispatcher&lt;EntryCallback&gt;::create(...).
Is it acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654467</commentid>
    <comment_count>5</comment_count>
      <attachid>148789</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-21 06:52:42 -0700</bug_when>
    <thetext>Created attachment 148789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654549</commentid>
    <comment_count>6</comment_count>
      <attachid>148789</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 08:28:26 -0700</bug_when>
    <thetext>Comment on attachment 148789
Patch

Clearing flags on attachment: 148789

Committed r120926: &lt;http://trac.webkit.org/changeset/120926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654550</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 08:28:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148246</attachid>
            <date>2012-06-18 22:10:00 -0700</date>
            <delta_ts>2012-06-21 04:20:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89420-20120619140959.patch</filename>
            <type>text/plain</type>
            <size>11318</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFhNDY3MmYyYWM0NDgw
YTRlMDUwZmUzNWFmNzVmOWJlMjkzODZmNC4uMmIxNDhlNmE3ZGM4NmI4ZmQ5OWUyODk4NmE0ODE0
NzA0MzljMTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTE4ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
bmlmeSBGaWxlU3lzdGVtIGNhbGxiYWNrcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA2LTE4ICBNaWtlIExhd3RoZXIgIDxtaWtl
bGF3dGhlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5nIHRpdGxl
IGR5bmFtaWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmluZGV4IDg1ZTQxMDVhMzQ0YjIyZDg5YjQxNGYyNWFhNzFh
NGJmNmJkYTkwMzQuLjRkNWYwMTE0M2MxNmYyZWYxZmEyYWUzNDAyMGFhNDg4NzI2NmQzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwCkBAIC05Niw2ICs5NiwzOCBAQCB0eXBlZGVmIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6RnJvbnRlbmRQcm92aWRlciBGcm9udGVuZFByb3ZpZGVyOwogCiBuYW1lc3BhY2Ugewog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVu
YW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnQ+CitjbGFzcyBDYWxsYmFja0Rpc3BhdGNoZXIg
OiBwdWJsaWMgQmFzZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFJlc3VsdCAoSGFu
ZGxlcjo6KkhhbmRsaW5nTWV0aG9kKShBcmd1bWVudCopOworCisgICAgc3RhdGljIFJlZlB0cjxD
YWxsYmFja0Rpc3BhdGNoZXI8QmFzZUNhbGxiYWNrLCBIYW5kbGVyLCBSZXN1bHQsIEFyZ3VtZW50
PiA+IGNyZWF0ZShQYXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRsaW5nTWV0aG9kIGhh
bmRsaW5nTWV0aG9kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWxsYmFj
a0Rpc3BhdGNoZXIoaGFuZGxlciwgaGFuZGxpbmdNZXRob2QpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIFJlc3VsdCBoYW5kbGVFdmVudChBcmd1bWVudCogYXJndW1lbnQpIE9WRVJSSURFCisgICAg
eworICAgICAgICByZXR1cm4gKG1faGFuZGxlci5nZXQoKS0+Km1faGFuZGxpbmdNZXRob2QpKGFy
Z3VtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FsbGJhY2tEaXNwYXRjaGVyKFBhc3NS
ZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwgSGFuZGxpbmdNZXRob2QgaGFuZGxpbmdNZXRob2QpCisg
ICAgICAgIDogbV9oYW5kbGVyKGhhbmRsZXIpCisgICAgICAgICwgbV9oYW5kbGluZ01ldGhvZCho
YW5kbGluZ01ldGhvZCkgeyB9CisKKyAgICBSZWZQdHI8SGFuZGxlcj4gbV9oYW5kbGVyOworICAg
IEhhbmRsaW5nTWV0aG9kIG1faGFuZGxpbmdNZXRob2Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZT4gc3RydWN0IFR5cGVQYXJhbSB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2VDYWxsYmFj
aywgdHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudD4K
K1Bhc3NSZWZQdHI8QmFzZUNhbGxiYWNrPiBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBh
cmFtPEJhc2VDYWxsYmFjaz4sIEhhbmRsZXIqIGhhbmRsZXIsIFJlc3VsdCAoSGFuZGxlcjo6Kmhh
bmRsaW5nTWV0aG9kKShBcmd1bWVudCopKQoreworICAgIHJldHVybiBDYWxsYmFja0Rpc3BhdGNo
ZXI8QmFzZUNhbGxiYWNrLCBIYW5kbGVyLCBSZXN1bHQsIEFyZ3VtZW50Pjo6Y3JlYXRlKGhhbmRs
ZXIsIGhhbmRsaW5nTWV0aG9kKTsKK30KKwogY2xhc3MgR2V0RmlsZVN5c3RlbVJvb3RUYXNrIDog
cHVibGljIFJlZkNvdW50ZWQ8R2V0RmlsZVN5c3RlbVJvb3RUYXNrPiB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR2V0RmlsZVN5c3RlbVJvb3RUYXNrKTsKIHB1YmxpYzoKQEAgLTEwNywxMCAr
MTM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCiBwcml2YXRlOgotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAgY2xhc3MgR2V0RW50
cnlDYWxsYmFjazsKLQotICAgIHZvaWQgZ290RW50cnkoRW50cnkqKTsKKyAgICBib29sIGRpZEhp
dEVycm9yKEZpbGVFcnJvciopOworICAgIGJvb2wgZ290RW50cnkoRW50cnkqKTsKIAogICAgIHZv
aWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+IGVudHJ5KQogICAgIHsKQEAgLTEzMCw0
NSArMTYwLDExIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdHlwZTsKIH07CiAKLWNsYXNzIEdl
dEZpbGVTeXN0ZW1Sb290VGFzazo6RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBXZWJDb3JlOjpFcnJv
ckNhbGxiYWNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFcnJvckNhbGxiYWNrKTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkVycm9y
Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gZ2V0Rmls
ZVN5c3RlbVJvb3RUYXNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRG
aWxlU3lzdGVtUm9vdFRhc2s6OkVycm9yQ2FsbGJhY2soZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3Ip
IE9WRVJSSURFCi0gICAgewotICAgICAgICBtX2dldEZpbGVTeXN0ZW1Sb290VGFzay0+cmVwb3J0
UmVzdWx0KGVycm9yLT5jb2RlKCksIDApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgRXJyb3JDYWxsYmFjayhQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290
VGFzaz4gZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKQotICAgICAgICA6IG1fZ2V0RmlsZVN5c3RlbVJv
b3RUYXNrKGdldEZpbGVTeXN0ZW1Sb290VGFzaykgeyB9Ci0gICAgUmVmUHRyPEdldEZpbGVTeXN0
ZW1Sb290VGFzaz4gbV9nZXRGaWxlU3lzdGVtUm9vdFRhc2s7Ci19OwotCi1jbGFzcyBHZXRGaWxl
U3lzdGVtUm9vdFRhc2s6OkdldEVudHJ5Q2FsbGJhY2sgOiBwdWJsaWMgV2ViQ29yZTo6RW50cnlD
YWxsYmFjayB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RW50cnlDYWxsYmFjayk7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpHZXRF
bnRyeUNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IGdl
dEZpbGVTeXN0ZW1Sb290VGFzaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpHZXRFbnRyeUNhbGxiYWNrKGdldEZpbGVTeXN0ZW1Sb290
VGFzaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSogZW50
cnkpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX2dldEZpbGVTeXN0ZW1Sb290VGFzay0+Z290
RW50cnkoZW50cnkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgR2V0RW50cnlDYWxsYmFjayhQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gZ2V0
RmlsZVN5c3RlbVJvb3RUYXNrKQotICAgICAgICA6IG1fZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKGdl
dEZpbGVTeXN0ZW1Sb290VGFzaykgeyB9Ci0gICAgUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFz
az4gbV9nZXRGaWxlU3lzdGVtUm9vdFRhc2s7Ci19OworYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRh
c2s6OmRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpCit7CisgICAgcmVwb3J0UmVzdWx0KGVy
cm9yLT5jb2RlKCksIDApOworICAgIHJldHVybiB0cnVlOworfQogCiB2b2lkIEdldEZpbGVTeXN0
ZW1Sb290VGFzazo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKIHsKQEAgLTE4MiwxNyArMTc4LDE4IEBAIHZvaWQgR2V0RmlsZVN5c3RlbVJvb3RU
YXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpHZXRFbnRyeUNhbGxiYWNrOjpj
cmVhdGUodGhpcyk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBH
ZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkVycm9yQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlQ2FsbGJhY2tEaXNw
YXRjaGVyKFR5cGVQYXJhbTxFbnRyeUNhbGxiYWNrPigpLCB0aGlzLCAmR2V0RmlsZVN5c3RlbVJv
b3RUYXNrOjpnb3RFbnRyeSk7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2sgPSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBhcmFtPEVycm9yQ2FsbGJhY2s+KCks
IHRoaXMsICZHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEhpdEVycm9yKTsKICAgICBPd25QdHI8
UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxs
YmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHR5cGUsICIvIik7CiAKICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmls
ZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZp
bGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBHZXRGaWxlU3lzdGVtUm9v
dFRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNr
Ojpnb3RFbnRyeShFbnRyeSogZW50cnkpCiB7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxl
U3lzdGVtOjpFbnRyeT4gcmVzdWx0KFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3Jl
YXRlKCkuc2V0VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKCIvIikuc2V0SXNEaXJlY3Rvcnko
dHJ1ZSkpOwogICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29k
ZT4oMCksIHJlc3VsdCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNsYXNzIFJlYWREaXJlY3Rv
cnlUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZERpcmVjdG9yeVRhc2s+IHsKQEAgLTIxMSwx
MiArMjA4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrOwotICAgIGNsYXNzIEdl
dEVudHJ5Q2FsbGJhY2s7Ci0gICAgY2xhc3MgUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazsK
KyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpCisgICAgeworICAgICAgICBy
ZXBvcnRSZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KIAotICAgIHZvaWQgZ290RW50cnkoRW50cnkqKTsKLSAgICB2b2lkIGRpZFJlYWREaXJlY3Rv
cnlFbnRyaWVzKEVudHJ5QXJyYXkqKTsKKyAgICBib29sIGdvdEVudHJ5KEVudHJ5Kik7CisgICAg
Ym9vbCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5Kik7CiAKICAgICB2b2lkIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8QXJy
YXk8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+IGVudHJpZXMpCiAgICAgewpAQCAt
MjQwLDY4ICsyMzksNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IG1f
ZGlyZWN0b3J5UmVhZGVyOwogfTsKIAotY2xhc3MgUmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2Fs
bGJhY2sgOiBwdWJsaWMgV2ViQ29yZTo6RXJyb3JDYWxsYmFjayB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRXJyb3JDYWxsYmFjayk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWRE
aXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2FsbGJhY2socmVhZERpcmVjdG9y
eVRhc2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9y
KiBlcnJvcikgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIGlmIChtX3JlYWREaXJlY3RvcnlUYXNr
KQotICAgICAgICAgICAgbV9yZWFkRGlyZWN0b3J5VGFzay0+cmVwb3J0UmVzdWx0KGVycm9yLT5j
b2RlKCksIDApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
RXJyb3JDYWxsYmFjayhQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5
VGFzaykKLSAgICAgICAgOiBtX3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7
IH0KLSAgICBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19
OwotCi1jbGFzcyBSZWFkRGlyZWN0b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBF
bnRyeUNhbGxiYWNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNr
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzazo6R2V0
RW50cnlDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWRE
aXJlY3RvcnlUYXNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGly
ZWN0b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjayhyZWFkRGlyZWN0b3J5VGFzaykpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSogZmlsZVN5c3RlbSkgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPmdvdEVudHJ5KGZpbGVTeXN0
ZW0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2V0RW50
cnlDYWxsYmFjayhQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFz
aykKLSAgICAgICAgOiBtX3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0K
LSAgICBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19Owot
Ci1jbGFzcyBSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayA6
IHB1YmxpYyBFbnRyaWVzQ2FsbGJhY2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWRE
aXJlY3RvcnlFbnRyaWVzQ2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlYWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5RW50cmllc0NhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0
b3J5RW50cmllc0NhbGxiYWNrKHJlYWREaXJlY3RvcnlUYXNrKSk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KEVudHJ5QXJyYXkqIGVudHJpZXMpIE9WRVJSSURFCi0gICAg
ewotICAgICAgICBBU1NFUlQoZW50cmllcyk7Ci0gICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2st
PmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGVudHJpZXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayhQYXNz
UmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykKLSAgICAgICAgOiBt
X3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0KLSAgICBSZWZQdHI8UmVh
ZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19OwotCiB2b2lkIFJlYWREaXJl
Y3RvcnlUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTMxMywy
MyArMjUwLDI0IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gUmVhZERpcmVj
dG9yeVRhc2s6OkdldEVudHJ5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxi
YWNrOjpjcmVhdGUodGhpcyk7CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RW50cnlDYWxsYmFjaz4o
KSwgdGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpnb3RFbnRyeSk7CisgICAgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVDYWxsYmFja0Rpc3BhdGNoZXIoVHlwZVBh
cmFtPEVycm9yQ2FsbGJhY2s+KCksIHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6ZGlkSGl0RXJy
b3IpOwogICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tz
ID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgcGF0aCk7CiAKICAgICBMb2NhbEZp
bGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotdm9p
ZCBSZWFkRGlyZWN0b3J5VGFzazo6Z290RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBSZWFkRGly
ZWN0b3J5VGFzazo6Z290RW50cnkoRW50cnkqIGVudHJ5KQogewogICAgIGlmICghZW50cnktPmlz
RGlyZWN0b3J5KCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6VFlQRV9NSVNN
QVRDSF9FUlIsIDApOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIG1fZGlyZWN0b3J5UmVhZGVyID0gc3RhdGljX2Nhc3Q8RGlyZWN0b3J5RW50cnkq
PihlbnRyeSktPmNyZWF0ZVJlYWRlcigpOwogICAgIG1fZW50cmllcyA9IEFycmF5PFR5cGVCdWls
ZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT46OmNyZWF0ZSgpOwogICAgIHJlYWREaXJlY3RvcnlFbnRy
aWVzKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnJl
YWREaXJlY3RvcnlFbnRyaWVzKCkKQEAgLTMzOSwxNiArMjc3LDE2IEBAIHZvaWQgUmVhZERpcmVj
dG9yeVRhc2s6OnJlYWREaXJlY3RvcnlFbnRyaWVzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IFJlYWREaXJl
Y3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5RW50cmllc0NhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBSZWFkRGlyZWN0b3J5VGFz
azo6RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOworICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08
RW50cmllc0NhbGxiYWNrPigpLCB0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJl
Y3RvcnlFbnRyaWVzKTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IGNyZWF0ZUNhbGxiYWNrRGlzcGF0Y2hlcihUeXBlUGFyYW08RXJyb3JDYWxsYmFjaz4oKSwgdGhp
cywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRFcnJvcik7CiAgICAgbV9kaXJlY3RvcnlSZWFk
ZXItPnJlYWRFbnRyaWVzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZv
aWQgUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkq
IGVudHJpZXMpCitib29sIFJlYWREaXJlY3RvcnlUYXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmll
cyhFbnRyeUFycmF5KiBlbnRyaWVzKQogewogICAgIGlmICghZW50cmllcy0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigw
KSwgbV9lbnRyaWVzKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cmllcy0+bGVuZ3RoKCk7ICsr
aSkgewpAQCAtMzc1LDYgKzMxMyw3IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJpZXMpCiAgICAgICAgIG1fZW50cmllcy0+
YWRkSXRlbShlbnRyeUZvckZyb250ZW5kKTsKICAgICB9CiAgICAgcmVhZERpcmVjdG9yeUVudHJp
ZXMoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148762</attachid>
            <date>2012-06-21 04:13:08 -0700</date>
            <delta_ts>2012-06-21 06:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89420-20120621201307.patch</filename>
            <type>text/plain</type>
            <size>11402</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiZGMyYjE2ZmMwY2Fh
NTQyZTlmYjQzNTBjZmEzYmVkNTIwODRmZS4uNDg0MjNhZDFkMzg2YzliNWJhOTNhNTk1OTUxNDhh
YTM3ZGU3NzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEyLTA2LTIxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
bmlmeSBGaWxlU3lzdGVtIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisKKzIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgcmVxdWVzdElkIGFs
bG9jYXRpb24gZnJvbSBGaWxlU3lzdGVtIGZyb250ZW5kIHRvIGJhY2tlbmQKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTU1CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5k
ZXggMjAzZmY3Yjk4YmYxZmY2NGFkNzlkNGYwOGQ4MDU3ZjhlNzhhMWZiNy4uNGU0MGU4NzE5NWQz
MGIyNTkyYzhmZmNmMzcxYjJkM2Q1ZWM1ZDI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTk2LDYgKzk2LDQ0
IEBAIHR5cGVkZWYgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpGcm9udGVuZFByb3ZpZGVyIEZy
b250ZW5kUHJvdmlkZXI7CiAKIG5hbWVzcGFjZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2VD
YWxsYmFjaz4KK2NsYXNzIENhbGxiYWNrRGlzcGF0Y2hlciA6IHB1YmxpYyBCYXNlQ2FsbGJhY2sg
eworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIEFyZ3Vt
ZW50PgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbGxiYWNrRGlzcGF0Y2hlcj4gY3JlYXRlKEhh
bmRsZXIqIGhhbmRsZXIsIGJvb2wgKEhhbmRsZXI6OipoYW5kbGluZ01ldGhvZCkoQXJndW1lbnQq
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxsYmFja0Rpc3BhdGNoZXI6Okludm9rZXI8SGFu
ZGxlciwgQXJndW1lbnQ+OjpjcmVhdGUoUGFzc1JlZlB0cjxIYW5kbGVyPihoYW5kbGVyKSwgaGFu
ZGxpbmdNZXRob2QpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXIsIHR5
cGVuYW1lIEFyZ3VtZW50PgorICAgIGNsYXNzIEludm9rZXIgOiBwdWJsaWMgQ2FsbGJhY2tEaXNw
YXRjaGVyPEJhc2VDYWxsYmFjaz4geworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBib29s
IChIYW5kbGVyOjoqSGFuZGxpbmdNZXRob2QpKEFyZ3VtZW50Kik7CisKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW52b2tlcj4gY3JlYXRlKFBhc3NSZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwg
SGFuZGxpbmdNZXRob2QgaGFuZGxpbmdNZXRob2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW52b2tlcihoYW5kbGVyLCBoYW5kbGluZ01ldGhvZCkpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEFyZ3VtZW50KiBhcmd1
bWVudCkgT1ZFUlJJREUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2hhbmRsZXIu
Z2V0KCktPiptX2hhbmRsaW5nTWV0aG9kKShhcmd1bWVudCk7CisgICAgICAgIH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIEludm9rZXIoUGFzc1JlZlB0cjxIYW5kbGVyPiBoYW5kbGVyLCBIYW5k
bGluZ01ldGhvZCBoYW5kbGluZ01ldGhvZCkKKyAgICAgICAgICAgIDogbV9oYW5kbGVyKGhhbmRs
ZXIpCisgICAgICAgICAgICAsIG1faGFuZGxpbmdNZXRob2QoaGFuZGxpbmdNZXRob2QpIHsgfQor
CisgICAgICAgIFJlZlB0cjxIYW5kbGVyPiBtX2hhbmRsZXI7CisgICAgICAgIEhhbmRsaW5nTWV0
aG9kIG1faGFuZGxpbmdNZXRob2Q7CisgICAgfTsKKworcHJvdGVjdGVkOgorICAgIENhbGxiYWNr
RGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkNhbGxiYWNrRGlzcGF0Y2hlcigpIHsgfQor
fTsKKwogY2xhc3MgR2V0RmlsZVN5c3RlbVJvb3RUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8R2V0
RmlsZVN5c3RlbVJvb3RUYXNrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RmlsZVN5
c3RlbVJvb3RUYXNrKTsKIHB1YmxpYzoKQEAgLTEwNywxMCArMTQ1LDggQEAgcHVibGljOgogICAg
IHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiBwcml2YXRlOgotICAgIGNs
YXNzIEVycm9yQ2FsbGJhY2s7Ci0gICAgY2xhc3MgR2V0RW50cnlDYWxsYmFjazsKLQotICAgIHZv
aWQgZ290RW50cnkoRW50cnkqKTsKKyAgICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciopOwor
ICAgIGJvb2wgZ290RW50cnkoRW50cnkqKTsKIAogICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVF
cnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RmlsZVN5
c3RlbTo6RW50cnk+IGVudHJ5KQogICAgIHsKQEAgLTEzMCw0NSArMTY2LDExIEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fdHlwZTsKIH07CiAKLWNsYXNzIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6
RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBXZWJDb3JlOjpFcnJvckNhbGxiYWNrIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShFcnJvckNhbGxiYWNrKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShQYXNz
UmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkVy
cm9yQ2FsbGJhY2soZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpIE9WRVJSSURFCi0gICAgewotICAg
ICAgICBtX2dldEZpbGVTeXN0ZW1Sb290VGFzay0+cmVwb3J0UmVzdWx0KGVycm9yLT5jb2RlKCks
IDApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRXJyb3JD
YWxsYmFjayhQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gZ2V0RmlsZVN5c3RlbVJv
b3RUYXNrKQotICAgICAgICA6IG1fZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKGdldEZpbGVTeXN0ZW1S
b290VGFzaykgeyB9Ci0gICAgUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gbV9nZXRGaWxl
U3lzdGVtUm9vdFRhc2s7Ci19OwotCi1jbGFzcyBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkdldEVu
dHJ5Q2FsbGJhY2sgOiBwdWJsaWMgV2ViQ29yZTo6RW50cnlDYWxsYmFjayB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR2V0RW50cnlDYWxsYmFjayk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpHZXRFbnRyeUNhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IGdldEZpbGVTeXN0ZW1Sb290VGFzaykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0RmlsZVN5c3RlbVJvb3RUYXNr
OjpHZXRFbnRyeUNhbGxiYWNrKGdldEZpbGVTeXN0ZW1Sb290VGFzaykpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSogZW50cnkpIE9WRVJSSURFCi0gICAgewot
ICAgICAgICBtX2dldEZpbGVTeXN0ZW1Sb290VGFzay0+Z290RW50cnkoZW50cnkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2V0RW50cnlDYWxsYmFjayhQ
YXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKQot
ICAgICAgICA6IG1fZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKGdldEZpbGVTeXN0ZW1Sb290VGFzaykg
eyB9Ci0gICAgUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzaz4gbV9nZXRGaWxlU3lzdGVtUm9v
dFRhc2s7Ci19OworYm9vbCBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEhpdEVycm9yKEZpbGVF
cnJvciogZXJyb3IpCit7CisgICAgcmVwb3J0UmVzdWx0KGVycm9yLT5jb2RlKCksIDApOworICAg
IHJldHVybiB0cnVlOworfQogCiB2b2lkIEdldEZpbGVTeXN0ZW1Sb290VGFzazo6c3RhcnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKQEAgLTE4Miwx
NyArMTg0LDE4IEBAIHZvaWQgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpzdGFydChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gR2V0Rmls
ZVN5c3RlbVJvb3RUYXNrOjpHZXRFbnRyeUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0gICAgUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6
OkVycm9yQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyPEVudHJ5Q2FsbGJhY2s+OjpjcmVh
dGUodGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6Z290RW50cnkpOworICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyPEVycm9yQ2Fs
bGJhY2s+OjpjcmVhdGUodGhpcywgJkdldEZpbGVTeXN0ZW1Sb290VGFzazo6ZGlkSGl0RXJyb3Ip
OwogICAgIE93blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0g
UmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgIi8iKTsKIAogICAgIExvY2FsRmlsZVN5
c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgdHlwZSwgZmlsZVN5c3RlbUNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi12b2lkIEdl
dEZpbGVTeXN0ZW1Sb290VGFzazo6Z290RW50cnkoRW50cnkqIGVudHJ5KQorYm9vbCBHZXRGaWxl
U3lzdGVtUm9vdFRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiByZXN1bHQoVHlwZUJ1aWxkZXI6OkZpbGVTeXN0
ZW06OkVudHJ5OjpjcmVhdGUoKS5zZXRVcmwoZW50cnktPnRvVVJMKCkpLnNldE5hbWUoIi8iKS5z
ZXRJc0RpcmVjdG9yeSh0cnVlKSk7CiAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVF
cnJvcjo6RXJyb3JDb2RlPigwKSwgcmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY2xh
c3MgUmVhZERpcmVjdG9yeVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkRGlyZWN0b3J5VGFz
az4gewpAQCAtMjExLDEyICsyMTQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwogCiBwcml2YXRlOgotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7
Ci0gICAgY2xhc3MgR2V0RW50cnlDYWxsYmFjazsKLSAgICBjbGFzcyBSZWFkRGlyZWN0b3J5RW50
cmllc0NhbGxiYWNrOworICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKKyAg
ICB7CisgICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCi0gICAgdm9pZCBnb3RFbnRyeShFbnRyeSopOwotICAgIHZvaWQg
ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlBcnJheSopOworICAgIGJvb2wgZ290RW50cnko
RW50cnkqKTsKKyAgICBib29sIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqKTsK
IAogICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwg
UGFzc1JlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+ID4gZW50cmll
cykKICAgICB7CkBAIC0yNDAsNjggKzI0NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gbV9kaXJlY3RvcnlSZWFkZXI7CiB9OwogCi1jbGFzcyBSZWFkRGlyZWN0b3J5
VGFzazo6RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBXZWJDb3JlOjpFcnJvckNhbGxiYWNrIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShFcnJvckNhbGxiYWNrKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzazo6RXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBh
c3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNrKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0b3J5VGFzazo6RXJyb3JDYWxsYmFj
ayhyZWFkRGlyZWN0b3J5VGFzaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChGaWxlRXJyb3IqIGVycm9yKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgaWYgKG1fcmVh
ZERpcmVjdG9yeVRhc2spCi0gICAgICAgICAgICBtX3JlYWREaXJlY3RvcnlUYXNrLT5yZXBvcnRS
ZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBFcnJvckNhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+
IHJlYWREaXJlY3RvcnlUYXNrKQotICAgICAgICA6IG1fcmVhZERpcmVjdG9yeVRhc2socmVhZERp
cmVjdG9yeVRhc2spIHsgfQotICAgIFJlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gbV9yZWFkRGly
ZWN0b3J5VGFzazsKLX07Ci0KLWNsYXNzIFJlYWREaXJlY3RvcnlUYXNrOjpHZXRFbnRyeUNhbGxi
YWNrIDogcHVibGljIEVudHJ5Q2FsbGJhY2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdl
dEVudHJ5Q2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWREaXJl
Y3RvcnlUYXNrOjpHZXRFbnRyeUNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxSZWFkRGlyZWN0
b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpHZXRFbnRyeUNhbGxiYWNrKHJlYWREaXJlY3RvcnlU
YXNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEVudHJ5KiBmaWxl
U3lzdGVtKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9yZWFkRGlyZWN0b3J5VGFzay0+Z290
RW50cnkoZmlsZVN5c3RlbSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBHZXRFbnRyeUNhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJl
YWREaXJlY3RvcnlUYXNrKQotICAgICAgICA6IG1fcmVhZERpcmVjdG9yeVRhc2socmVhZERpcmVj
dG9yeVRhc2spIHsgfQotICAgIFJlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gbV9yZWFkRGlyZWN0
b3J5VGFzazsKLX07Ci0KLWNsYXNzIFJlYWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5RW50
cmllc0NhbGxiYWNrIDogcHVibGljIEVudHJpZXNDYWxsYmFjayB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayk7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s6OlJlYWREaXJlY3RvcnlFbnRyaWVzQ2Fs
bGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5
VGFzaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZERpcmVjdG9yeVRh
c2s6OlJlYWREaXJlY3RvcnlFbnRyaWVzQ2FsbGJhY2socmVhZERpcmVjdG9yeVRhc2spKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRW50cnlBcnJheSogZW50cmllcykg
T1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChlbnRyaWVzKTsKLSAgICAgICAgbV9yZWFk
RGlyZWN0b3J5VGFzay0+ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoZW50cmllcyk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWFkRGlyZWN0b3J5RW50cmll
c0NhbGxiYWNrKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJlY3RvcnlUYXNr
KQotICAgICAgICA6IG1fcmVhZERpcmVjdG9yeVRhc2socmVhZERpcmVjdG9yeVRhc2spIHsgfQot
ICAgIFJlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gbV9yZWFkRGlyZWN0b3J5VGFzazsKLX07Ci0K
IHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwpAQCAtMzEzLDIzICsyNTYsMjQgQEAgdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBSZWFkRGlyZWN0b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwot
ICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gUmVhZERpcmVjdG9yeVRh
c2s6OkVycm9yQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyPEVudHJ5Q2FsbGJhY2s+Ojpj
cmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpnb3RFbnRyeSk7CisgICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXI8RXJyb3JDYWxs
YmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEhpdEVycm9yKTsKICAg
ICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29s
dmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUmVhZERp
cmVjdG9yeVRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgUmVhZERpcmVjdG9yeVRh
c2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9y
eSgpKSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJS
LCAwKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAg
ICBtX2RpcmVjdG9yeVJlYWRlciA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkp
LT5jcmVhdGVSZWFkZXIoKTsKICAgICBtX2VudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6Rmls
ZVN5c3RlbTo6RW50cnk+OjpjcmVhdGUoKTsKICAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpyZWFkRGlyZWN0
b3J5RW50cmllcygpCkBAIC0zMzksMTYgKzI4MywxNiBAQCB2b2lkIFJlYWREaXJlY3RvcnlUYXNr
OjpyZWFkRGlyZWN0b3J5RW50cmllcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBSZWFkRGlyZWN0b3J5VGFz
azo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gUmVhZERpcmVjdG9yeVRhc2s6OkVycm9y
Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXI8RW50cmllc0NhbGxiYWNrPjo6Y3JlYXRl
KHRoaXMsICZSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMpOworICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVy
PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJlJlYWREaXJlY3RvcnlUYXNrOjpkaWRIaXRF
cnJvcik7CiAgICAgbV9kaXJlY3RvcnlSZWFkZXItPnJlYWRFbnRyaWVzKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7CiB9CiAKLXZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWRE
aXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJpZXMpCitib29sIFJlYWREaXJlY3RvcnlU
YXNrOjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5KiBlbnRyaWVzKQogewogICAg
IGlmICghZW50cmllcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19j
YXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgbV9lbnRyaWVzKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZW50cmllcy0+bGVuZ3RoKCk7ICsraSkgewpAQCAtMzc1LDYgKzMxOSw3IEBAIHZvaWQg
UmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVu
dHJpZXMpCiAgICAgICAgIG1fZW50cmllcy0+YWRkSXRlbShlbnRyeUZvckZyb250ZW5kKTsKICAg
ICB9CiAgICAgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148789</attachid>
            <date>2012-06-21 06:52:42 -0700</date>
            <delta_ts>2012-06-21 08:28:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89420-20120621225241.patch</filename>
            <type>text/plain</type>
            <size>11356</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FiZGMyYjE2ZmMwY2Fh
NTQyZTlmYjQzNTBjZmEzYmVkNTIwODRmZS4uNDg0MjNhZDFkMzg2YzliNWJhOTNhNTk1OTUxNDhh
YTM3ZGU3NzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEyLTA2LTIxICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBV
bmlmeSBGaWxlU3lzdGVtIGNhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisKKzIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgcmVxdWVzdElkIGFs
bG9jYXRpb24gZnJvbSBGaWxlU3lzdGVtIGZyb250ZW5kIHRvIGJhY2tlbmQKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTU1CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5k
ZXggMjAzZmY3Yjk4YmYxZmY2NGFkNzlkNGYwOGQ4MDU3ZjhlNzhhMWZiNy4uNzJhMjc4OGM2NTdl
NzUyMjEyZGE0YmMxYzVhMDNjNDgwZmIyMWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTk2LDYgKzk2LDQw
IEBAIHR5cGVkZWYgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpGcm9udGVuZFByb3ZpZGVyIEZy
b250ZW5kUHJvdmlkZXI7CiAKIG5hbWVzcGFjZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEJhc2VD
YWxsYmFjaywgdHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgQXJndW1lbnQ+CitjbGFzcyBDYWxs
YmFja0Rpc3BhdGNoZXIgOiBwdWJsaWMgQmFzZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIGJvb2wgKEhhbmRsZXI6OipIYW5kbGluZ01ldGhvZCkoQXJndW1lbnQqKTsKKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhbGxiYWNrRGlzcGF0Y2hlcj4gY3JlYXRlKFBhc3NSZWZQdHI8SGFu
ZGxlcj4gaGFuZGxlciwgSGFuZGxpbmdNZXRob2QgaGFuZGxpbmdNZXRob2QpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGxiYWNrRGlzcGF0Y2hlcihoYW5kbGVyLCBoYW5k
bGluZ01ldGhvZCkpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChBcmd1
bWVudCogYXJndW1lbnQpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gKG1faGFuZGxl
ci5nZXQoKS0+Km1faGFuZGxpbmdNZXRob2QpKGFyZ3VtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ2FsbGJhY2tEaXNwYXRjaGVyKFBhc3NSZWZQdHI8SGFuZGxlcj4gaGFuZGxlciwgSGFu
ZGxpbmdNZXRob2QgaGFuZGxpbmdNZXRob2QpCisgICAgICAgIDogbV9oYW5kbGVyKGhhbmRsZXIp
CisgICAgICAgICwgbV9oYW5kbGluZ01ldGhvZChoYW5kbGluZ01ldGhvZCkgeyB9CisKKyAgICBS
ZWZQdHI8SGFuZGxlcj4gbV9oYW5kbGVyOworICAgIEhhbmRsaW5nTWV0aG9kIG1faGFuZGxpbmdN
ZXRob2Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2s+CitjbGFzcyBDYWxs
YmFja0Rpc3BhdGNoZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YW5kbGVyLCB0eXBlbmFtZSBBcmd1bWVudD4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxsYmFj
a0Rpc3BhdGNoZXI8QmFzZUNhbGxiYWNrLCBIYW5kbGVyLCBBcmd1bWVudD4gPiBjcmVhdGUoSGFu
ZGxlciogaGFuZGxlciwgYm9vbCAoSGFuZGxlcjo6KmhhbmRsaW5nTWV0aG9kKShBcmd1bWVudCop
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrRGlzcGF0Y2hlcjxCYXNlQ2FsbGJhY2ss
IEhhbmRsZXIsIEFyZ3VtZW50Pjo6Y3JlYXRlKFBhc3NSZWZQdHI8SGFuZGxlcj4oaGFuZGxlciks
IGhhbmRsaW5nTWV0aG9kKTsKKyAgICB9Cit9OworCiBjbGFzcyBHZXRGaWxlU3lzdGVtUm9vdFRh
c2sgOiBwdWJsaWMgUmVmQ291bnRlZDxHZXRGaWxlU3lzdGVtUm9vdFRhc2s+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHZXRGaWxlU3lzdGVtUm9vdFRhc2spOwogcHVibGljOgpAQCAtMTA3
LDEwICsxNDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgRXJyb3JDYWxsYmFjazsKLSAgICBjbGFzcyBH
ZXRFbnRyeUNhbGxiYWNrOwotCi0gICAgdm9pZCBnb3RFbnRyeShFbnRyeSopOworICAgIGJvb2wg
ZGlkSGl0RXJyb3IoRmlsZUVycm9yKik7CisgICAgYm9vbCBnb3RFbnRyeShFbnRyeSopOwogCiAg
ICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gZW50cnkpCiAgICAgewpAQCAt
MTMwLDQ1ICsxNjIsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV90eXBlOwogfTsKIAotY2xh
c3MgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpFcnJvckNhbGxiYWNrIDogcHVibGljIFdlYkNvcmU6
OkVycm9yQ2FsbGJhY2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVycm9yQ2FsbGJhY2sp
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFzazo6
RXJyb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJvb3RUYXNrPiBn
ZXRGaWxlU3lzdGVtUm9vdFRhc2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdldEZpbGVTeXN0ZW1Sb290VGFzazo6RXJyb3JDYWxsYmFjayhnZXRGaWxlU3lzdGVtUm9vdFRh
c2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBl
cnJvcikgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fZ2V0RmlsZVN5c3RlbVJvb3RUYXNrLT5y
ZXBvcnRSZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBFcnJvckNhbGxiYWNrKFBhc3NSZWZQdHI8R2V0RmlsZVN5c3Rl
bVJvb3RUYXNrPiBnZXRGaWxlU3lzdGVtUm9vdFRhc2spCi0gICAgICAgIDogbV9nZXRGaWxlU3lz
dGVtUm9vdFRhc2soZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKSB7IH0KLSAgICBSZWZQdHI8R2V0Rmls
ZVN5c3RlbVJvb3RUYXNrPiBtX2dldEZpbGVTeXN0ZW1Sb290VGFzazsKLX07Ci0KLWNsYXNzIEdl
dEZpbGVTeXN0ZW1Sb290VGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBXZWJDb3JlOjpF
bnRyeUNhbGxiYWNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNr
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXRGaWxlU3lzdGVtUm9vdFRhc2s6
OkdldEVudHJ5Q2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEdldEZpbGVTeXN0ZW1Sb290VGFz
az4gZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkdldEVudHJ5Q2FsbGJhY2soZ2V0RmlsZVN5c3Rl
bVJvb3RUYXNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEVudHJ5
KiBlbnRyeSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fZ2V0RmlsZVN5c3RlbVJvb3RUYXNr
LT5nb3RFbnRyeShlbnRyeSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBHZXRFbnRyeUNhbGxiYWNrKFBhc3NSZWZQdHI8R2V0RmlsZVN5c3RlbVJvb3RUYXNr
PiBnZXRGaWxlU3lzdGVtUm9vdFRhc2spCi0gICAgICAgIDogbV9nZXRGaWxlU3lzdGVtUm9vdFRh
c2soZ2V0RmlsZVN5c3RlbVJvb3RUYXNrKSB7IH0KLSAgICBSZWZQdHI8R2V0RmlsZVN5c3RlbVJv
b3RUYXNrPiBtX2dldEZpbGVTeXN0ZW1Sb290VGFzazsKLX07Citib29sIEdldEZpbGVTeXN0ZW1S
b290VGFzazo6ZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKK3sKKyAgICByZXBvcnRSZXN1
bHQoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKIHZvaWQgR2V0Rmls
ZVN5c3RlbVJvb3RUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQogewpAQCAtMTgyLDE3ICsxODAsMTggQEAgdm9pZCBHZXRGaWxlU3lzdGVt
Um9vdFRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSBHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OkdldEVudHJ5Q2FsbGJh
Y2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayA9IEdldEZpbGVTeXN0ZW1Sb290VGFzazo6RXJyb3JDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwor
ICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3Bh
dGNoZXJGYWN0b3J5PEVudHJ5Q2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkdldEZpbGVTeXN0ZW1S
b290VGFzazo6Z290RW50cnkpOworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRo
aXMsICZHZXRGaWxlU3lzdGVtUm9vdFRhc2s6OmRpZEhpdEVycm9yKTsKICAgICBPd25QdHI8UmVz
b2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFj
a3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHR5cGUsICIvIik7CiAKICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5
c3RlbSgpLnJlYWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVT
eXN0ZW1DYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBHZXRGaWxlU3lzdGVtUm9vdFRh
c2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgR2V0RmlsZVN5c3RlbVJvb3RUYXNrOjpn
b3RFbnRyeShFbnRyeSogZW50cnkpCiB7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lz
dGVtOjpFbnRyeT4gcmVzdWx0KFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeTo6Y3JlYXRl
KCkuc2V0VXJsKGVudHJ5LT50b1VSTCgpKS5zZXROYW1lKCIvIikuc2V0SXNEaXJlY3RvcnkodHJ1
ZSkpOwogICAgIHJlcG9ydFJlc3VsdChzdGF0aWNfY2FzdDxGaWxlRXJyb3I6OkVycm9yQ29kZT4o
MCksIHJlc3VsdCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNsYXNzIFJlYWREaXJlY3RvcnlU
YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZERpcmVjdG9yeVRhc2s+IHsKQEAgLTIxMSwxMiAr
MjEwLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrOwotICAgIGNsYXNzIEdldEVu
dHJ5Q2FsbGJhY2s7Ci0gICAgY2xhc3MgUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazsKKyAg
ICBib29sIGRpZEhpdEVycm9yKEZpbGVFcnJvciogZXJyb3IpCisgICAgeworICAgICAgICByZXBv
cnRSZXN1bHQoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
IAotICAgIHZvaWQgZ290RW50cnkoRW50cnkqKTsKLSAgICB2b2lkIGRpZFJlYWREaXJlY3RvcnlF
bnRyaWVzKEVudHJ5QXJyYXkqKTsKKyAgICBib29sIGdvdEVudHJ5KEVudHJ5Kik7CisgICAgYm9v
bCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFycmF5Kik7CiAKICAgICB2b2lkIHJlcG9y
dFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8QXJyYXk8
VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+IGVudHJpZXMpCiAgICAgewpAQCAtMjQw
LDY4ICsyNDEsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IG1fZGly
ZWN0b3J5UmVhZGVyOwogfTsKIAotY2xhc3MgUmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2FsbGJh
Y2sgOiBwdWJsaWMgV2ViQ29yZTo6RXJyb3JDYWxsYmFjayB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRXJyb3JDYWxsYmFjayk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVh
ZERpcmVjdG9yeVRhc2s6OkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWREaXJl
Y3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2FsbGJhY2socmVhZERpcmVjdG9yeVRh
c2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZUVycm9yKiBl
cnJvcikgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIGlmIChtX3JlYWREaXJlY3RvcnlUYXNrKQot
ICAgICAgICAgICAgbV9yZWFkRGlyZWN0b3J5VGFzay0+cmVwb3J0UmVzdWx0KGVycm9yLT5jb2Rl
KCksIDApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRXJy
b3JDYWxsYmFjayhQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFz
aykKLSAgICAgICAgOiBtX3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0K
LSAgICBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19Owot
Ci1jbGFzcyBSZWFkRGlyZWN0b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjayA6IHB1YmxpYyBFbnRy
eUNhbGxiYWNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXRFbnRyeUNhbGxiYWNrKTsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzazo6R2V0RW50
cnlDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHJlYWREaXJl
Y3RvcnlUYXNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFkRGlyZWN0
b3J5VGFzazo6R2V0RW50cnlDYWxsYmFjayhyZWFkRGlyZWN0b3J5VGFzaykpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSogZmlsZVN5c3RlbSkgT1ZFUlJJREUK
LSAgICB7Ci0gICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPmdvdEVudHJ5KGZpbGVTeXN0ZW0p
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR2V0RW50cnlD
YWxsYmFjayhQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykK
LSAgICAgICAgOiBtX3JlYWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0KLSAg
ICBSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19OwotCi1j
bGFzcyBSZWFkRGlyZWN0b3J5VGFzazo6UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayA6IHB1
YmxpYyBFbnRyaWVzQ2FsbGJhY2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWREaXJl
Y3RvcnlFbnRyaWVzQ2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJl
YWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5RW50cmllc0NhbGxiYWNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gcmVhZERpcmVjdG9yeVRhc2spCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrOjpSZWFkRGlyZWN0b3J5
RW50cmllc0NhbGxiYWNrKHJlYWREaXJlY3RvcnlUYXNrKSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KEVudHJ5QXJyYXkqIGVudHJpZXMpIE9WRVJSSURFCi0gICAgewot
ICAgICAgICBBU1NFUlQoZW50cmllcyk7Ci0gICAgICAgIG1fcmVhZERpcmVjdG9yeVRhc2stPmRp
ZFJlYWREaXJlY3RvcnlFbnRyaWVzKGVudHJpZXMpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjayhQYXNzUmVm
UHRyPFJlYWREaXJlY3RvcnlUYXNrPiByZWFkRGlyZWN0b3J5VGFzaykKLSAgICAgICAgOiBtX3Jl
YWREaXJlY3RvcnlUYXNrKHJlYWREaXJlY3RvcnlUYXNrKSB7IH0KLSAgICBSZWZQdHI8UmVhZERp
cmVjdG9yeVRhc2s+IG1fcmVhZERpcmVjdG9yeVRhc2s7Ci19OwotCiB2b2lkIFJlYWREaXJlY3Rv
cnlUYXNrOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTMxMywyMyAr
MjUyLDI0IEBAIHZvaWQgUmVhZERpcmVjdG9yeVRhc2s6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gUmVhZERpcmVjdG9y
eVRhc2s6OkdldEVudHJ5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IFJlYWREaXJlY3RvcnlUYXNrOjpFcnJvckNhbGxiYWNr
OjpjcmVhdGUodGhpcyk7CisgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
ayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlz
LCAmUmVhZERpcmVjdG9yeVRhc2s6OmdvdEVudHJ5KTsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZEhpdEVycm9yKTsKICAgICBP
d25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVV
UklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwogCiAgICAgTG9jYWxGaWxlU3lzdGVtOjps
b2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0
eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUmVhZERpcmVj
dG9yeVRhc2s6OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKK2Jvb2wgUmVhZERpcmVjdG9yeVRhc2s6
OmdvdEVudHJ5KEVudHJ5KiBlbnRyeSkKIHsKICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgp
KSB7CiAgICAgICAgIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSLCAw
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBt
X2RpcmVjdG9yeVJlYWRlciA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkpLT5j
cmVhdGVSZWFkZXIoKTsKICAgICBtX2VudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5
c3RlbTo6RW50cnk+OjpjcmVhdGUoKTsKICAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOworICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpyZWFkRGlyZWN0b3J5
RW50cmllcygpCkBAIC0zMzksMTYgKzI3OSwxNiBAQCB2b2lkIFJlYWREaXJlY3RvcnlUYXNrOjpy
ZWFkRGlyZWN0b3J5RW50cmllcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBSZWFkRGlyZWN0b3J5VGFzazo6
UmVhZERpcmVjdG9yeUVudHJpZXNDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gUmVhZERpcmVjdG9yeVRhc2s6OkVycm9yQ2Fs
bGJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVudHJpZXNDYWxsYmFjaz46OmNy
ZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKTsK
KyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0
Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmUmVhZERpcmVjdG9yeVRh
c2s6OmRpZEhpdEVycm9yKTsKICAgICBtX2RpcmVjdG9yeVJlYWRlci0+cmVhZEVudHJpZXMoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZWFkRGlyZWN0b3J5VGFz
azo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50cnlBcnJheSogZW50cmllcykKK2Jvb2wgUmVh
ZERpcmVjdG9yeVRhc2s6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJp
ZXMpCiB7CiAgICAgaWYgKCFlbnRyaWVzLT5sZW5ndGgoKSkgewogICAgICAgICByZXBvcnRSZXN1
bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCBtX2VudHJpZXMpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBlbnRyaWVzLT5sZW5ndGgoKTsgKytpKSB7CkBAIC0zNzUsNiArMzE1
LDcgQEAgdm9pZCBSZWFkRGlyZWN0b3J5VGFzazo6ZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoRW50
cnlBcnJheSogZW50cmllcykKICAgICAgICAgbV9lbnRyaWVzLT5hZGRJdGVtKGVudHJ5Rm9yRnJv
bnRlbmQpOwogICAgIH0KICAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOworICAgIHJldHVybiB0
cnVlOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>