<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/e6469bd6b3677f76e7b6657a3b2b59b622b6885c">https://github.com/macports/macports-ports/commit/e6469bd6b3677f76e7b6657a3b2b59b622b6885c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e6469bd6b3677f76e7b6657a3b2b59b622b6885c
</span>Author: Chih-Hsuan Yen <yan12125@gmail.com>
AuthorDate: Sat Feb 24 00:21:44 2018 +0800

<span style='display:block; white-space:pre;color:#404040;'>    py-mitmproxy: update to 3.0.3
</span>---
 python/py-mitmproxy/Portfile           |  20 +-
 python/py-mitmproxy/files/pr2170.patch |  13 --
 python/py-mitmproxy/files/pr2208.patch |  70 -------
 python/py-mitmproxy/files/pr2239.patch | 352 ---------------------------------
 4 files changed, 7 insertions(+), 448 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/Portfile b/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 18dee34..4966404 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup           python 1.0
</span> PortGroup           github 1.0
 
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        mitmproxy mitmproxy 2.0.2 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        mitmproxy mitmproxy 3.0.3 v
</span> 
 name                py-${github.project}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,9 +24,9 @@ long_description    \
</span> 
 homepage            http://mitmproxy.org/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           md5     187145b3044ba4a9684e47d10652bd11 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  4bb785c9cd18ee16d7d865710cdd4bbdca8df1cb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  48e2e4bcaf39d9a8b7fa478e9ca0a9e335baa5b8e90d1adea46cdcba2b80fa05
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           md5     10dad9fd64341911088aab69fe7246bd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rmd160  984900dd57989c6bdece066b95a3cd9bda77dd59 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  543a697ff6a3d1dd97e7f72470a60e3abb8d8524b5686b3b333407b980150ea7
</span> 
 python.versions     36
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -38,14 +38,12 @@ if {${name} ne ${subport}} {
</span>                             port:py${python.version}-brotlipy \
                             port:py${python.version}-click \
                             port:py${python.version}-certifi \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:py${python.version}-construct \
</span>                             port:py${python.version}-cryptography \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:py${python.version}-cssutils \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${python.version}-h11 \
</span>                             port:py${python.version}-h2 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:py${python.version}-html2text \
</span>                             port:py${python.version}-hyperframe \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:py${python.version}-jsbeautifier \
</span>                             port:py${python.version}-kaitaistruct \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${python.version}-ldap3 \
</span>                             port:py${python.version}-openssl \
                             port:py${python.version}-parsing \
                             port:py${python.version}-passlib \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,7 +53,7 @@ if {${name} ne ${subport}} {
</span>                             port:py${python.version}-sortedcontainers \
                             port:py${python.version}-tornado \
                             port:py${python.version}-urwid \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:py${python.version}-watchdog
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${python.version}-wsproto
</span> 
     # Testing dependencies
     depends_build-append    port:py${python.version}-pytest \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,10 +61,6 @@ if {${name} ne ${subport}} {
</span>                             port:py${python.version}-flask \
                             port:py${python.version}-tz
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles              pr2208.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            pr2239.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            pr2170.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     post-patch {
         # Remove all upper bounds - potential breakings are detected by test
         reinplace "s/, *<\[0-9=.\]*//" ${worksrcpath}/setup.py
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2170.patch b/python/py-mitmproxy/files/pr2170.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 7f3ca3f..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2170.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git test/mitmproxy/contentviews/test_xml_html.py test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 899ecfded..2b0aee4d6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,7 +23,7 @@ def test_format_xml(filename):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     path = data.path(filename)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     with open(path) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         input = f.read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    with open(path.replace(".", "-formatted.")) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    with open("-formatted.".join(path.rsplit(".", 1))) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         expected = f.read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     tokens = xml_html.tokenize(input)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     assert xml_html.format_xml(tokens) == expected
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2208.patch b/python/py-mitmproxy/files/pr2208.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index b541ca2..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2208.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,70 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/proxy/protocol/http2.py mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a6e8a4dd9..c1812b3da 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -188,7 +188,7 @@ def _handle_data_received(self, eid, event, source_conn):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.streams[eid].kill()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.connections[source_conn].safe_reset_stream(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 event.stream_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                h2.errors.REFUSED_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                h2.errors.ErrorCodes.REFUSED_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.log("HTTP body too large. Limit is {}.".format(bsl), "info")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -207,7 +207,7 @@ def _handle_stream_ended(self, eid):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def _handle_stream_reset(self, eid, event, is_server, other_conn):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self.streams[eid].kill()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if eid in self.streams and event.error_code == h2.errors.CANCEL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if eid in self.streams and event.error_code == h2.errors.ErrorCodes.CANCEL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if is_server:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 other_stream_id = self.streams[eid].client_stream_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -228,7 +228,7 @@ def _handle_connection_terminated(self, event, is_server):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             event.last_stream_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             event.additional_data), "info")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if event.error_code != h2.errors.NO_ERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if event.error_code != h2.errors.ErrorCodes.NO_ERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             # Something terrible has happened - kill everything!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.connections[self.client_conn].close_connection(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 error_code=event.error_code,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git test/mitmproxy/proxy/protocol/test_http2.py test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1f695cc5f..23027c242 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -36,7 +36,11 @@ class _Http2ServerBase(net_tservers.ServerTestBase):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class handler(mitmproxy.net.tcp.BaseHandler):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         def handle(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            h2_conn = h2.connection.H2Connection(client_side=False, header_encoding=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            config = h2.config.H2Configuration(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                client_side=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                validate_outbound_headers=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                validate_inbound_headers=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            h2_conn = h2.connection.H2Connection(config)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             preamble = self.rfile.read(24)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             h2_conn.initiate_connection()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -138,7 +142,11 @@ def _setup_connection(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         client.convert_to_ssl(alpn_protos=[b'h2'])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        h2_conn = h2.connection.H2Connection(client_side=True, header_encoding=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        config = h2.config.H2Configuration(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            client_side=True,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            validate_outbound_headers=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            validate_inbound_headers=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        h2_conn = h2.connection.H2Connection(config)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         h2_conn.initiate_connection()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         client.wfile.write(h2_conn.data_to_send())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         client.wfile.flush()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -756,7 +764,7 @@ class TestMaxConcurrentStreams(_Http2Test):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     @classmethod
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def setup_class(cls):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         _Http2TestBase.setup_class()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        _Http2ServerBase.setup_class(h2_server_settings={h2.settings.MAX_CONCURRENT_STREAMS: 2})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        _Http2ServerBase.setup_class(h2_server_settings={h2.settings.SettingCodes.MAX_CONCURRENT_STREAMS: 2})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     @classmethod
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def handle_server_event(cls, event, h2_conn, rfile, wfile):
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2239.patch b/python/py-mitmproxy/files/pr2239.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c291d67..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2239.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,352 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contentviews/image/image_parser.py mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 062fb38e3..7c74669af 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,7 +37,7 @@ def parse_gif(data: bytes) -> Metadata:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     descriptor = img.logical_screen_descriptor
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     parts = [
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         ('Format', 'Compuserve GIF'),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        ('Version', "GIF{}".format(img.header.version.decode('ASCII'))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        ('Version', "GIF{}".format(img.hdr.version)),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         ('Size', "{} x {} px".format(descriptor.screen_width, descriptor.screen_height)),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         ('background', str(descriptor.bg_color_index))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif.py mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6236a7086..2e8f1f9ff 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,16 +1,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif_be import ExifBe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Exif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -22,3 +24,5 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.body = ExifLe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         elif _on == 19789:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.body = ExifBe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif_be.py mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7980a9e8f..8a6e7a2b5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif_be.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif_be.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ExifBe(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -569,3 +572,5 @@ def ifd0(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._m_ifd0 = self._root.Ifd(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io.seek(_pos)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return self._m_ifd0 if hasattr(self, '_m_ifd0') else None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif_le.py mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 207b3bebe..84e53a38d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif_le.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif_le.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ExifLe(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -569,3 +572,5 @@ def ifd0(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._m_ifd0 = self._root.Ifd(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io.seek(_pos)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return self._m_ifd0 if hasattr(self, '_m_ifd0') else None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/gif.py mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 61499cc73..820df568c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was png.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/562154250bea0081fed4e232751b934bc270a0c7/image/gif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Gif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class BlockType(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -24,8 +27,8 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        self.header = self._root.Header(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        self.logical_screen_descriptor = self._root.LogicalScreenDescriptor(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        self.hdr = self._root.Header(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        self.logical_screen_descriptor = self._root.LogicalScreenDescriptorStruct(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if self.logical_screen_descriptor.has_color_table:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._raw_global_color_table = self._io.read_bytes((self.logical_screen_descriptor.color_table_size * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             io = KaitaiStream(BytesIO(self._raw_global_color_table))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -55,7 +58,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.blue = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    class LogicalScreenDescriptor(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    class LogicalScreenDescriptorStruct(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -163,7 +166,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.magic = self._io.ensure_fixed_contents(struct.pack('3b', 71, 73, 70))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.version = self._io.read_bytes(3)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.version = (self._io.read_bytes(3)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class ExtGraphicControl(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -245,3 +248,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 self.body = self._root.ExtGraphicControl(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 self.body = self._root.Subblocks(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/jpeg.py mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 08e382a97..a49c83b93 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,15 +1,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was jpeg.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/jpeg.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Jpeg(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class ComponentId(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -127,7 +130,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.magic = self._io.read_strz("ASCII", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.magic = (self._io.read_bytes_term(0, False, True, True)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             _on = self.magic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if _on == u"Exif":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 self.body = self._root.ExifInJpeg(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -195,7 +198,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.magic = self._io.read_str_byte_limit(5, "ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.magic = (self._io.read_bytes(5)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.version_major = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.version_minor = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.density_units = self._root.SegmentApp0.DensityUnit(self._io.read_u1())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -204,3 +207,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail_x = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail_y = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail = self._io.read_bytes(((self.thumbnail_x * self.thumbnail_y) * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/make.sh mitmproxy/contrib/kaitaistruct/make.sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-new file mode 100755
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 000000000..218d51989
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- /dev/null
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/make.sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#!/usr/bin/env bash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif_be.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif_le.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/gif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/jpeg.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/png.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+kaitai-struct-compiler --target python --opaque-types=true *.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/png.py mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2f3c1a5c3..98a706937 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was png.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/9370c720b7d2ad329102d89bdc880ba6a706ef26/image/png.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Png(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class ColorType(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -51,7 +54,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.len = self._io.read_u4be()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.type = self._io.read_str_byte_limit(4, "UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.type = (self._io.read_bytes(4)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             _on = self.type
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if _on == u"iTXt":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 self._raw_body = self._io.read_bytes(self.len)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -194,7 +197,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.compression_method = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._raw_text_datastream = self._io.read_bytes_full()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.text_datastream = zlib.decompress(self._raw_text_datastream)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -259,12 +262,12 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.compression_flag = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.compression_method = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.language_tag = self._io.read_strz("ASCII", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.translated_keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.text = self._io.read_str_eos("UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.language_tag = (self._io.read_bytes_term(0, False, True, True)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.translated_keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.text = (self._io.read_bytes_full()).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class TextChunk(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -272,8 +275,8 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.keyword = self._io.read_strz("iso8859-1", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            self.text = self._io.read_str_eos("iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            self.text = (self._io.read_bytes_full()).decode(u"iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class TimeChunk(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -287,3 +290,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.hour = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.minute = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.second = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif.py mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2e8f1f9ff..d99cceef1 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,7 +12,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif_be import ExifBe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Exif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -24,5 +26,3 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.body = ExifLe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         elif _on == 19789:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.body = ExifBe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/jpeg.py mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a49c83b93..33fc012fa 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,7 +12,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Jpeg(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     class ComponentId(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -207,6 +208,3 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail_x = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail_y = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             self.thumbnail = self._io.read_bytes(((self.thumbnail_x * self.thumbnail_y) * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span></pre><pre style='margin:0'>

</pre>