__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.148: ~ $
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2011 Daniel Gerber.
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program.  If not, see <http://www.gnu.org/licenses/>.

r"""
Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987).

This module provides regular expressions according to `RFC 3986 "Uniform
Resource Identifier (URI): Generic Syntax"
<http://tools.ietf.org/html/rfc3986>`_ and `RFC 3987 "Internationalized
Resource Identifiers (IRIs)" <http://tools.ietf.org/html/rfc3987>`_, and
utilities for composition and relative resolution of references.


API
---

**match** (string, rule='IRI_reference')
    {match.__doc__}

**parse** (string, rule='IRI_reference')
    {parse.__doc__}

**compose** (\*\*parts)
    {compose.__doc__}

**resolve** (base, uriref, strict=True, return_parts=False)
    {resolve.__doc__}

**patterns**
    A dict of regular expressions with useful group names.
    Compilable (with regex_ only) without need for any particular compilation
    flag.

**[bmp_][u]patterns[_no_names]**
    Alternative versions of `patterns`.
    [u]nicode strings without group names for the re_ module.
    BMP only for narrow builds.

**get_compiled_pattern** (rule, flags=0)
    {get_compiled_pattern.__doc__}

**format_patterns** (\*\*names)
    {format_patterns.__doc__}


Dependencies
------------

Some features require regex_.

This package's docstrings are tested on python 2.6, 2.7, and 3.2 to 3.6.
Note that in python<=3.2, characters beyond the Basic Multilingual Plane are
not supported on narrow builds (see `issue12729
<http://bugs.python.org/issue12729>`_).


Release notes
-------------

version 1.3.8:

- fixed deprecated escape sequence

version 1.3.6:

- fixed a bug in IPv6 pattern:

  >>> assert match('::0:0:0:0:0.0.0.0', 'IPv6address')

version 1.3.4:

- allowed for lower case percent encoding

version 1.3.3:

- fixed a bug in `resolve` which left "../" at the beginning of some paths

version 1.3.2:

- convenience function `match`
- patterns restricted to the BMP for narrow builds
- adapted doctests for python 3.3
- compatibility with python 2.6 (thanks to Thijs Janssen)

version 1.3.1:

- some re_ compatibility: get_compiled_pattern, parse
- dropped regex_ from setup.py requirements

version 1.3.0:

- python 3.x compatibility
- format_patterns

version 1.2.1:

- compose, resolve


.. _re: http://docs.python.org/library/re
.. _regex: http://pypi.python.org/pypi/regex


Support
-------
This is free software. You may show your appreciation with a `donation`_.

.. _donation: http://danielgerber.net/ยค#Thanks-for-python-package-rfc3987

"""
__version__ = '1.3.8'

import sys as _sys

NARROW_BUILD = _sys.maxunicode == 0xffff

try:
    basestring
except NameError:
    basestring = str

try:
    import regex as _re
    REGEX = True
except ImportError:
    import re as _re
    REGEX = False

__all__ = ('get_compiled_pattern', 'parse', 'format_patterns', 'patterns',
           'compose', 'resolve', 'match')


_common_rules = (

    ########   SCHEME   ########
    ('scheme',       r"[a-zA-Z][a-zA-Z0-9+.-]*"),

    ########   PORT   ########
    ('port',         r"[0-9]*"),

    ########   IP ADDRESSES   ########
    ('IP_literal',   r"\[(?:{IPv6address}|{IPvFuture})\]"),
    ('IPv6address', (r"(?:                             (?:{h16}:){{6}} {ls32}"
                     r"|                            :: (?:{h16}:){{5}} {ls32}"
                     r"| (?:                {h16})? :: (?:{h16}:){{4}} {ls32}"
                     r"| (?:(?:{h16}:)?     {h16})? :: (?:{h16}:){{3}} {ls32}"
                     r"| (?:(?:{h16}:){{,2}}{h16})? :: (?:{h16}:){{2}} {ls32}"
                     r"| (?:(?:{h16}:){{,3}}{h16})? :: (?:{h16}:)      {ls32}"
                     r"| (?:(?:{h16}:){{,4}}{h16})? ::                 {ls32}"
                     r"| (?:(?:{h16}:){{,5}}{h16})? ::                 {h16} "
                     r"| (?:(?:{h16}:){{,6}}{h16})? ::                      )"
                      ).replace(' ', '')),
    ('ls32',         r"(?:{h16}:{h16}|{IPv4address})"),
    ('h16',          r"{hexdig}{{1,4}}"),
    ('IPv4address',  r"(?:{dec_octet}\.){{3}}{dec_octet}"),
    ('dec_octet',    r"(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"),
    ('IPvFuture',    r"v{hexdig}+\.(?:{unreserved}|{sub_delims}|:)+"),

    ########  CHARACTER CLASSES   ########
    ('unreserved',    r"[a-zA-Z0-9_.~-]"),
    ('reserved',      r"(?:{gen_delims}|{sub_delims})"),
    ('pct_encoded',   r"%{hexdig}{{2}}"),
    ('gen_delims',    r"[:/?#[\]@]"),
    ('sub_delims',    r"[!$&'()*+,;=]"),
    ('hexdig',        r"[0-9A-Fa-f]"),

)


_uri_rules = (

    ########   REFERENCES   ########
    ('URI_reference',   r"(?:{URI}|{relative_ref})"),
    ('URI',             r"{absolute_URI}(?:\#{fragment})?"),
    ('absolute_URI',    r"{scheme}:{hier_part}(?:\?{query})?"),
    ('relative_ref',    r"{relative_part}(?:\?{query})?(?:\#{fragment})?"),

    ('hier_part',      (r"(?://{authority}{path_abempty}"
                        r"|{path_absolute}|{path_rootless}|{path_empty})")),
    ('relative_part',  (r"(?://{authority}{path_abempty}"
                        r"|{path_absolute}|{path_noscheme}|{path_empty})")),

    ########   AUTHORITY   ########
    ('authority', r"(?:{userinfo}@)?{host}(?::{port})?"),
    ('host',      r"(?:{IP_literal}|{IPv4address}|{reg_name})"),
    ('userinfo',  r"(?:{unreserved}|{pct_encoded}|{sub_delims}|:)*"),
    ('reg_name',  r"(?:{unreserved}|{pct_encoded}|{sub_delims})*"),

    ########   PATH   ########
    ('path',         (r"(?:{path_abempty}|{path_absolute}|{path_noscheme}"
                      r"|{path_rootless}|{path_empty})")),
    ('path_abempty',  r"(?:/{segment})*"),
    ('path_absolute', r"/(?:{segment_nz}(?:/{segment})*)?"),
    ('path_noscheme', r"{segment_nz_nc}(?:/{segment})*"),
    ('path_rootless', r"{segment_nz}(?:/{segment})*"),
    ('path_empty',    r""),

    ('segment',       r"{pchar}*"),
    ('segment_nz',    r"{pchar}+"),
    ('segment_nz_nc', r"(?:{unreserved}|{pct_encoded}|{sub_delims}|@)+"),

    ########   QUERY   ########
    ('query',         r"(?:{pchar}|/|\?)*"),

    ########   FRAGMENT   ########
    ('fragment',      r"(?:{pchar}|/|\?)*"),

    ########  CHARACTER CLASSES   ########
    ('pchar',         r"(?:{unreserved}|{pct_encoded}|{sub_delims}|:|@)"),

)


#: http://tools.ietf.org/html/rfc3987
#: January 2005
_iri_rules = (

    ########   REFERENCES   ########
    ('IRI_reference',   r"(?:{IRI}|{irelative_ref})"),
    ('IRI',             r"{absolute_IRI}(?:\#{ifragment})?"),
    ('absolute_IRI',    r"{scheme}:{ihier_part}(?:\?{iquery})?"),
    ('irelative_ref',  (r"(?:{irelative_part}"
                        r"(?:\?{iquery})?(?:\#{ifragment})?)")),

    ('ihier_part',     (r"(?://{iauthority}{ipath_abempty}"
                        r"|{ipath_absolute}|{ipath_rootless}|{ipath_empty})")),
    ('irelative_part', (r"(?://{iauthority}{ipath_abempty}"
                        r"|{ipath_absolute}|{ipath_noscheme}|{ipath_empty})")),


    ########   AUTHORITY   ########
    ('iauthority', r"(?:{iuserinfo}@)?{ihost}(?::{port})?"),
    ('iuserinfo',  r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|:)*"),
    ('ihost',      r"(?:{IP_literal}|{IPv4address}|{ireg_name})"),

    ('ireg_name',  r"(?:{iunreserved}|{pct_encoded}|{sub_delims})*"),

    ########   PATH   ########
    ('ipath',         (r"(?:{ipath_abempty}|{ipath_absolute}|{ipath_noscheme}"
                       r"|{ipath_rootless}|{ipath_empty})")),

    ('ipath_empty',    r""),
    ('ipath_rootless', r"{isegment_nz}(?:/{isegment})*"),
    ('ipath_noscheme', r"{isegment_nz_nc}(?:/{isegment})*"),
    ('ipath_absolute', r"/(?:{isegment_nz}(?:/{isegment})*)?"),
    ('ipath_abempty',  r"(?:/{isegment})*"),

    ('isegment_nz_nc', r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|@)+"),
    ('isegment_nz',    r"{ipchar}+"),
    ('isegment',       r"{ipchar}*"),

    ########   QUERY   ########
    ('iquery',    r"(?:{ipchar}|{iprivate}|/|\?)*"),

    ########   FRAGMENT   ########
    ('ifragment', r"(?:{ipchar}|/|\?)*"),

    ########   CHARACTER CLASSES   ########
    ('ipchar',      r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|:|@)"),
    ('iunreserved', r"(?:[a-zA-Z0-9._~-]|{ucschar})"),
    ('iprivate', r"[\uE000-\uF8FF\U000F0000-\U000FFFFD\U00100000-\U0010FFFD]"),
    ('ucschar', (r"[\xA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF"
                 r"\U00010000-\U0001FFFD\U00020000-\U0002FFFD"
                 r"\U00030000-\U0003FFFD\U00040000-\U0004FFFD"
                 r"\U00050000-\U0005FFFD\U00060000-\U0006FFFD"
                 r"\U00070000-\U0007FFFD\U00080000-\U0008FFFD"
                 r"\U00090000-\U0009FFFD\U000A0000-\U000AFFFD"
                 r"\U000B0000-\U000BFFFD\U000C0000-\U000CFFFD"
                 r"\U000D0000-\U000DFFFD\U000E1000-\U000EFFFD]")),

)


def format_patterns(**names):
    r"""Returns a dict of patterns (regular expressions) keyed by
    `rule names for URIs`_ and `rule names for IRIs`_.

    See also the module level dicts of patterns, and `get_compiled_pattern`.

    To wrap a rule in a named capture group, pass it as keyword argument:
    rule_name='group_name'. By default, the formatted patterns contain no
    named groups.

    Patterns are `str` instances (be it in python 2.x or 3.x) containing ASCII
    characters only.

    Caveats:

      - with re_, named capture groups cannot occur on multiple branches of an
        alternation

      - with re_ before python 3.3, ``\u`` and ``\U`` escapes must be
        preprocessed (see `issue3665 <http://bugs.python.org/issue3665>`_)

      - on narrow builds, character ranges beyond BMP are not supported

    .. _rule names for URIs: http://tools.ietf.org/html/rfc3986#appendix-A
    .. _rule names for IRIs: http://tools.ietf.org/html/rfc3987#section-2.2
    """
    formatted = {}
    for name, pat in _common_rules[::-1] + _uri_rules[::-1] + _iri_rules[::-1]:
        if name in names:
            n = names[name]
            if callable(n):
                pat = n(pat)
            else:
                pat = '(?P<%s>%s)' % (n, pat)
        formatted[name] = pat.format(**formatted)
    return formatted


_GROUP_NAMES_BASE = [
        'scheme', 'port',
        'IPv6address', 'IPv4address', 'IPvFuture',
        'URI_reference',
        'URI', 'absolute_URI', 'relative_ref', 'relative_part',
        'authority', 'host', 'userinfo', 'reg_name',
        'query', 'fragment',
        'IRI_reference',
        'IRI', 'absolute_IRI', 'irelative_ref', 'irelative_part',
        'iauthority', 'ihost', 'iuserinfo', 'ireg_name',
        'iquery', 'ifragment'
        ]

DEFAULT_GROUP_NAMES = dict(zip(_GROUP_NAMES_BASE,_GROUP_NAMES_BASE),
    path_abempty='path', path_absolute='path', path_noscheme='path',
    path_rootless='path', path_empty='path',
    ipath_abempty='ipath', ipath_absolute='ipath', ipath_noscheme='ipath',
    ipath_rootless='ipath', ipath_empty='ipath')

#: mapping of rfc3986 / rfc3987 rule names to regular expressions
patterns = format_patterns(**DEFAULT_GROUP_NAMES)


def _interpret_unicode_escapes(string):
    return string.encode('ascii').decode('raw-unicode-escape')

patterns_no_names = format_patterns()

# if not REGEX:
#: patterns compilable with re
upatterns_no_names = dict((k, _interpret_unicode_escapes(v)) for k,v
                          in format_patterns().items())

_bmp = lambda s: _re.sub(r'\\U[0-9A-F]{8}-\\U[0-9A-F]{8}', '', s)
#: patterns restricted to the basic multilingual plane
#: compilable on narrow build
bmp_patterns = dict((k, _bmp(v)) for k,v in patterns.items())
#: compilable on narrow build with re
bmp_upatterns_no_names = dict((k, _interpret_unicode_escapes(_bmp(v)))
                              for k,v in patterns_no_names.items())


def get_compiled_pattern(rule, flags=0):
    """Returns a compiled pattern object for a rule name or template string.

    Usage for validation::

        >>> uri = get_compiled_pattern('^%(URI)s$')
        >>> assert uri.match('http://tools.ietf.org/html/rfc3986#appendix-A')
        >>> assert not get_compiled_pattern('^%(relative_ref)s$').match('#f#g')
        >>> from unicodedata import lookup
        >>> smp = 'urn:' + lookup('OLD ITALIC LETTER A')  # U+00010300
        >>> assert not uri.match(smp)
        >>> m = get_compiled_pattern('^%(IRI)s$').match(smp)

    On narrow builds, non-BMP characters are (incorrectly) excluded::

        >>> assert NARROW_BUILD == (not m)

    For parsing, some subcomponents are captured in named groups (*only if*
    regex_ is available, otherwise see `parse`)::

        >>> match = uri.match('http://tools.ietf.org/html/rfc3986#appendix-A')
        >>> d = match.groupdict()
        >>> if REGEX:
        ...     assert all([ d['scheme'] == 'http',
        ...                  d['authority'] == 'tools.ietf.org',
        ...                  d['path'] == '/html/rfc3986',
        ...                  d['query'] == None,
        ...                  d['fragment'] == 'appendix-A' ])

        >>> for r in patterns.keys():
        ...     assert get_compiled_pattern(r)

    """
    cache, key = get_compiled_pattern.cache, (rule, flags)
    if key not in cache:
        if NARROW_BUILD:
            pats = bmp_patterns if REGEX else bmp_upatterns_no_names
        else:
            pats = patterns if REGEX else upatterns_no_names
        p = pats.get(rule) or rule % pats
        cache[key] = _re.compile(p, flags)
    return cache[key]
get_compiled_pattern.cache = {}


def match(string, rule='IRI_reference'):
    """Convenience function for checking if `string` matches a specific rule.

    Returns a match object or None::

        >>> assert match('%C7X', 'pct_encoded') is None
        >>> assert match('%C7', 'pct_encoded')
        >>> assert match('%c7', 'pct_encoded')

    """
    return get_compiled_pattern('^%%(%s)s$' % rule).match(string)


#: http://tools.ietf.org/html/rfc3986#appendix-B
_iri_non_validating_re = _re.compile(
    r"^((?P<scheme>[^:/?#]+):)?(//(?P<authority>[^/?#]*))?"
    r"(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?")

REFERENCE_RULES = ('IRI_reference', 'IRI', 'absolute_IRI',
                   'irelative_ref', 'irelative_part',
                   'URI_reference', 'URI', 'absolute_URI',
                   'relative_ref', 'relative_part')

def parse(string, rule='IRI_reference'):
    """Parses `string` according to `rule` into a dict of subcomponents.

    If `rule` is None, parse an IRI_reference `without validation
    <http://tools.ietf.org/html/rfc3986#appendix-B>`_.

    If regex_ is available, any rule is supported; with re_, `rule` must be
    'IRI_reference' or some special case thereof ('IRI', 'absolute_IRI',
    'irelative_ref', 'irelative_part', 'URI_reference', 'URI', 'absolute_URI',
    'relative_ref', 'relative_part'). ::

        >>> d = parse('http://tools.ietf.org/html/rfc3986#appendix-A',
        ...           rule='URI')
        >>> assert all([ d['scheme'] == 'http',
        ...              d['authority'] == 'tools.ietf.org',
        ...              d['path'] == '/html/rfc3986',
        ...              d['query'] == None,
        ...              d['fragment'] == 'appendix-A' ])

    """
    if not REGEX and rule and rule not in REFERENCE_RULES:
        raise ValueError(rule)
    if rule:
        m = match(string, rule)
        if not m:
            raise ValueError('%r is not a valid %r.' % (string, rule))
        if REGEX:
            return _i2u(m.groupdict())
    return _i2u(_iri_non_validating_re.match(string).groupdict())


def _i2u(dic):
    for (name, iname) in [('authority', 'iauthority'), ('path', 'ipath'),
                          ('query', 'iquery'), ('fragment', 'ifragment')]:
        if dic.get(name) is None:
            dic[name] = dic.get(iname)
    return dic


def compose(scheme=None, authority=None, path=None, query=None, fragment=None,
            iauthority=None, ipath=None, iquery=None, ifragment=None, **kw):
    """Returns an URI composed_ from named parts.

    .. _composed: http://tools.ietf.org/html/rfc3986#section-5.3
    """
    _i2u(locals())
    res = ''
    if scheme is not None:
        res += scheme + ':'
    if authority is not None:
        res += '//' + authority
    res += path or ''
    if query is not None:
        res += '?' + query
    if fragment is not None:
        res += '#' + fragment
    return res


_dot_segments = get_compiled_pattern(r'^(?:\.{1,2}(?:/|$))+|(?<=/)\.(?:/|$)')
_2dots_segments = get_compiled_pattern(r'/?%(segment)s/\.{2}(?:/|$)')

def _remove_dot_segments(path):
    path =  _dot_segments.sub('', path)
    c = 1
    while c:
        path, c =  _2dots_segments.subn('/', path, 1)
    return path


def resolve(base, uriref, strict=True, return_parts=False):
    """Resolves_ an `URI reference` relative to a `base` URI.

    `Test cases <http://tools.ietf.org/html/rfc3986#section-5.4>`_::

        >>> base = resolve.test_cases_base
        >>> for relative, resolved in resolve.test_cases.items():
        ...     assert resolve(base, relative) == resolved

    If `return_parts` is True, returns a dict of named parts instead of
    a string.

    Examples::

        >>> assert resolve('urn:rootless', '../../name') == 'urn:name'
        >>> assert resolve('urn:root/less', '../../name') == 'urn:/name'
        >>> assert resolve('http://a/b', 'http:g') == 'http:g'
        >>> assert resolve('http://a/b', 'http:g', strict=False) == 'http://a/g'

    .. _Resolves: http://tools.ietf.org/html/rfc3986#section-5.2

    """
    #base = normalize(base)
    if isinstance(base, basestring):
        B = parse(base, 'IRI')
    else:
        B = _i2u(dict(base))
    if not B.get('scheme'):
        raise ValueError('Expected an IRI (with scheme), not %r.' % base)

    if isinstance(uriref, basestring):
        R = parse(uriref, 'IRI_reference')
    else:
        R = _i2u(dict(uriref))

    # _last_segment = get_compiled_pattern(r'(?<=^|/)%(segment)s$')

    if R['scheme'] and (strict or R['scheme'] != B['scheme']):
        T = R
    else:
        T = {}
        T['scheme'] = B['scheme']
        if R['authority'] is not None:
            T['authority'] = R['authority']
            T['path'] = R['path']
            T['query'] = R['query']
        else:
            T['authority'] = B['authority']
            if R['path']:
                if R['path'][:1] == "/":
                    T['path'] = R['path']
                elif B['authority'] is not None and not B['path']:
                    T['path'] = '/%s' % R['path']
                else:
                    T['path'] = ''.join(B['path'].rpartition('/')[:2]) + R['path']
                    # _last_segment.sub(R['path'], B['path'])
                T['query'] = R['query']
            else:
                T['path'] = B['path']
                if R['query'] is not None:
                    T['query'] = R['query']
                else:
                    T['query'] = B['query']
        T['fragment'] = R['fragment']
    T['path'] = _remove_dot_segments(T['path'])
    if return_parts:
        return T
    else:
        return compose(**T)

resolve.test_cases_base = "http://a/b/c/d;p?q"
resolve.test_cases = {
    "g:h"           :  "g:h",
    "g"             :  "http://a/b/c/g",
    "./g"           :  "http://a/b/c/g",
    "g/"            :  "http://a/b/c/g/",
    "/g"            :  "http://a/g",
    "//g"           :  "http://g",
    "?y"            :  "http://a/b/c/d;p?y",
    "g?y"           :  "http://a/b/c/g?y",
    "#s"            :  "http://a/b/c/d;p?q#s",
    "g#s"           :  "http://a/b/c/g#s",
    "g?y#s"         :  "http://a/b/c/g?y#s",
    ";x"            :  "http://a/b/c/;x",
    "g;x"           :  "http://a/b/c/g;x",
    "g;x?y#s"       :  "http://a/b/c/g;x?y#s",
    ""              :  "http://a/b/c/d;p?q",
    "."             :  "http://a/b/c/",
    "./"            :  "http://a/b/c/",
    ".."            :  "http://a/b/",
    "../"           :  "http://a/b/",
    "../g"          :  "http://a/b/g",
    "../.."         :  "http://a/",
    "../../"        :  "http://a/",
    "../../g"       :  "http://a/g",
    "../../../g"    :  "http://a/g",
    "../../../../g" :  "http://a/g",
    "/./g"          :  "http://a/g",
    "/../g"         :  "http://a/g",
    "g."            :  "http://a/b/c/g.",
    ".g"            :  "http://a/b/c/.g",
    "g.."           :  "http://a/b/c/g..",
    "..g"           :  "http://a/b/c/..g",
    "./../g"        :  "http://a/b/g",
    "./g/."         :  "http://a/b/c/g/",
    "g/./h"         :  "http://a/b/c/g/h",
    "g/../h"        :  "http://a/b/c/h",
    "g;x=1/./y"     :  "http://a/b/c/g;x=1/y",
    "g;x=1/../y"    :  "http://a/b/c/y",
    "g?y/./x"       :  "http://a/b/c/g?y/./x",
    "g?y/../x"      :  "http://a/b/c/g?y/../x",
    "g#s/./x"       :  "http://a/b/c/g#s/./x",
    "g#s/../x"      :  "http://a/b/c/g#s/../x",
    }


def normalize(uri):
    "Syntax-Based Normalization"
    # TODO:
    raise NotImplementedError


if __name__ == '__main__':
    if not _sys.argv[1:]:
        print('Valid arguments are "--all" or rule names from:')
        print('  '.join(sorted(patterns)))
    elif _sys.argv[1] == '--all':
        for name in patterns:
            print(name + ':')
            print(patterns[name])
    else:
        for name in _sys.argv[1:]:
            print(patterns[name])

Filemanager

Name Type Size Permission Actions
Babel-2.10.3.egg-info Folder 0755
ConfigArgParse-1.5.3.egg-info Folder 0755
Cryptodome Folder 0755
Flask-2.2.2.egg-info Folder 0755
Jinja2-3.1.2.egg-info Folder 0755
Markdown-3.4.1.egg-info Folder 0755
MarkupSafe-2.1.2.egg-info Folder 0755
MySQLdb-stubs Folder 0755
OpenGL Folder 0755
OpenSSL Folder 0755
OpenSSL-stubs Folder 0755
PIL Folder 0755
PIL-stubs Folder 0755
Pillow-9.4.0.egg-info Folder 0755
PyGObject-3.42.2.egg-info Folder 0755
PyICU-2.10.2.egg-info Folder 0755
PyInstaller-stubs Folder 0755
PyJWT-2.6.0.egg-info Folder 0755
PyOpenGL-3.1.6.egg-info Folder 0755
PyQt5 Folder 0755
PyQt5-5.15.9.dist-info Folder 0755
PyQt5_sip-12.11.1.egg-info Folder 0755
PyYAML-6.0.dist-info Folder 0755
Pygments-2.14.0.egg-info Folder 0755
RPi Folder 0755
Send2Trash-1.8.1b0.dist-info Folder 0755
Werkzeug-2.2.2.egg-info Folder 0755
__pycache__ Folder 0755
_cffi_backend-stubs Folder 0755
_distutils_hack Folder 0755
_win32typing-stubs Folder 0755
_yaml Folder 0755
acme Folder 0755
acme-2.1.0.egg-info Folder 0755
afxres-stubs Folder 0755
aiofiles-stubs Folder 0755
annoy-stubs Folder 0755
anyio Folder 0755
anyio-3.6.2.egg-info Folder 0755
appdirs-stubs Folder 0755
apt Folder 0755
apt_inst-stubs Folder 0755
apt_pkg-stubs Folder 0755
aptsources Folder 0755
asgiref Folder 0755
asgiref-3.6.0.egg-info Folder 0755
astroid Folder 0755
astroid-2.14.2.dist-info Folder 0755
asttokens Folder 0755
asttokens-2.2.1.egg-info Folder 0755
attr Folder 0755
attrs Folder 0755
attrs-22.2.0.dist-info Folder 0755
av Folder 0755
av-12.3.0.dist-info Folder 0755
aws_xray_sdk-stubs Folder 0755
babel Folder 0755
babel-stubs Folder 0755
backports-stubs Folder 0755
beautifulsoup4-4.11.2.egg-info Folder 0755
bleach-stubs Folder 0755
blinker Folder 0755
blinker-1.5.dist-info Folder 0755
boto-stubs Folder 0755
braintree-stubs Folder 0755
bs4 Folder 0755
bs4-stubs Folder 0755
bugbear-stubs Folder 0755
cachetools-stubs Folder 0755
cairo Folder 0755
caldav-stubs Folder 0755
certbot Folder 0755
certbot-2.1.0.egg-info Folder 0755
certbot_apache Folder 0755
certbot_apache-2.1.0.egg-info Folder 0755
certifi Folder 0755
certifi-2022.9.24.egg-info Folder 0755
certifi-stubs Folder 0755
cffi-stubs Folder 0755
chardet Folder 0755
chardet-5.1.0.dist-info Folder 0755
chardet-stubs Folder 0755
charset_normalizer Folder 0755
charset_normalizer-3.0.1.dist-info Folder 0755
chevron-stubs Folder 0755
click Folder 0755
click-8.1.3.egg-info Folder 0755
click_spinner-stubs Folder 0755
colorama Folder 0755
colorama-0.4.6.dist-info Folder 0755
colorama-stubs Folder 0755
colorzero Folder 0755
colorzero-2.0.egg-info Folder 0755
commctrl-stubs Folder 0755
commonmark-stubs Folder 0755
configobj Folder 0755
configobj-5.0.8.dist-info Folder 0755
consolemenu-stubs Folder 0755
contextvars-stubs Folder 0755
croniter-stubs Folder 0755
cronlog-stubs Folder 0755
crontab-stubs Folder 0755
crontabs-stubs Folder 0755
cryptography Folder 0755
cryptography-38.0.4.dist-info Folder 0755
cryptography-stubs Folder 0755
cryptography.egg-info Folder 0755
cupshelpers Folder 0755
d3dshot-stubs Folder 0755
dateparser-stubs Folder 0755
dateparser_data-stubs Folder 0755
datetimerange-stubs Folder 0755
dateutil-stubs Folder 0755
dbus Folder 0755
dbus_python-1.3.2.egg-info Folder 0755
dde-stubs Folder 0755
decorator-stubs Folder 0755
deprecated-stubs Folder 0755
dill Folder 0755
distro Folder 0755
distro-1.8.0.dist-info Folder 0755
dj_database_url-stubs Folder 0755
dns Folder 0755
dnspython-2.3.0.dist-info Folder 0755
docopt-stubs Folder 0755
docutils Folder 0755
docutils-0.19.egg-info Folder 0755
docutils-stubs Folder 0755
dotenv Folder 0755
editdistance-stubs Folder 0755
emoji-stubs Folder 0755
entrypoints-stubs Folder 0755
farmhash-stubs Folder 0755
first-stubs Folder 0755
flake8_2020-stubs Folder 0755
flake8_builtins-stubs Folder 0755
flake8_docstrings-stubs Folder 0755
flake8_plugin_utils-stubs Folder 0755
flake8_rst_docstrings-stubs Folder 0755
flake8_simplify-stubs Folder 0755
flake8_typing_imports-stubs Folder 0755
flask Folder 0755
flask_cors-stubs Folder 0755
flask_sqlalchemy-stubs Folder 0755
fpdf-stubs Folder 0755
gdb-stubs Folder 0755
gflags-stubs Folder 0755
gi Folder 0755
google-stubs Folder 0755
gpg Folder 0755
gpiozero Folder 0755
gpiozero-2.0.1.egg-info Folder 0755
gpiozerocli Folder 0755
h11 Folder 0755
h11-0.14.0.egg-info Folder 0755
h2 Folder 0755
h2-4.1.0.egg-info Folder 0755
hdbcli-stubs Folder 0755
hpack Folder 0755
hpack-4.0.0.egg-info Folder 0755
html5lib Folder 0755
html5lib-1.1.egg-info Folder 0755
html5lib-stubs Folder 0755
httpcore Folder 0755
httpcore-0.16.3.egg-info Folder 0755
httplib2-stubs Folder 0755
httpx Folder 0755
httpx-0.23.3.dist-info Folder 0755
humanfriendly-stubs Folder 0755
hyperframe Folder 0755
hyperframe-6.0.0.egg-info Folder 0755
icu Folder 0755
idna Folder 0755
idna-3.3.egg-info Folder 0755
importlib_metadata Folder 0755
importlib_metadata-4.12.0.dist-info Folder 0755
invoke-stubs Folder 0755
isapi-stubs Folder 0755
isort Folder 0755
isort-5.6.4.egg-info Folder 0755
itsdangerous Folder 0755
itsdangerous-2.1.2.egg-info Folder 0755
jack-stubs Folder 0755
jedi Folder 0755
jedi-0.18.2.egg-info Folder 0755
jinja2 Folder 0755
jmespath-stubs Folder 0755
jose-stubs Folder 0755
josepy Folder 0755
josepy-1.13.0.egg-info Folder 0755
jsonpointer-2.3.egg-info Folder 0755
jsonschema Folder 0755
jsonschema-4.10.3.dist-info Folder 0755
jsonschema-stubs Folder 0755
jwt Folder 0755
kazam Folder 0755
keyboard-stubs Folder 0755
lazy_object_proxy Folder 0755
lazy_object_proxy-1.9.0.dist-info Folder 0755
ldap3-stubs Folder 0755
lgpio-0.2.2.0.egg-info Folder 0755
libarchive Folder 0755
libarchive_c-2.9.egg-info Folder 0755
libcamera Folder 0755
libevdev Folder 0755
logilab Folder 0755
logilab_common-1.9.8.egg-info Folder 0755
lxml Folder 0755
lxml-4.9.2.egg-info Folder 0755
markdown Folder 0755
markdown-stubs Folder 0755
markdown_it Folder 0755
markdown_it_py-2.1.0.dist-info Folder 0755
markupsafe Folder 0755
mccabe-0.7.0.egg-info Folder 0755
mdurl Folder 0755
mdurl-0.1.2.dist-info Folder 0755
meson-1.5.1.egg-info Folder 0755
mesonbuild Folder 0755
mmapfile-stubs Folder 0755
mmsystem-stubs Folder 0755
mock-stubs Folder 0755
more_itertools Folder 0755
more_itertools-8.10.0.egg-info Folder 0755
mypy Folder 0755
mypy-1.0.1.dist-info Folder 0755
mypy_extensions-0.4.3.egg-info Folder 0755
mypy_extensions-stubs Folder 0755
mypyc Folder 0755
nmap-stubs Folder 0755
ntp Folder 0755
ntsecuritycon-stubs Folder 0755
numpy Folder 0755
numpy-1.24.2.egg-info Folder 0755
oauthlib Folder 0755
oauthlib-3.2.2.egg-info Folder 0755
oauthlib-stubs Folder 0755
odbc-stubs Folder 0755
olefile Folder 0755
olefile-0.46.egg-info Folder 0755
openpyxl-stubs Folder 0755
opentracing-stubs Folder 0755
paho-stubs Folder 0755
paramiko-stubs Folder 0755
parsedatetime Folder 0755
parsedatetime-2.6.egg-info Folder 0755
parsimonious-stubs Folder 0755
parso Folder 0755
parso-0.8.3.egg-info Folder 0755
passlib-stubs Folder 0755
passpy-stubs Folder 0755
peewee-stubs Folder 0755
pep8ext_naming-stubs Folder 0755
perfmon-stubs Folder 0755
pexpect Folder 0755
pgzero Folder 0755
pgzero-1.2.egg-info Folder 0755
picamera2 Folder 0755
picamera2-0.3.31.egg-info Folder 0755
pidng Folder 0755
pidng-4.0.9.egg-info Folder 0755
piexif Folder 0755
piexif-1.1.3.egg-info Folder 0755
pip Folder 0755
pip-23.0.1.dist-info Folder 0755
pkg_resources Folder 0755
pkg_resources-stubs Folder 0755
platformdirs Folder 0755
platformdirs-2.6.0.dist-info Folder 0755
playsound-stubs Folder 0755
polib-stubs Folder 0755
prettytable-stubs Folder 0755
psutil Folder 0755
psutil-5.9.4.egg-info Folder 0755
psutil-stubs Folder 0755
psycopg2-stubs Folder 0755
ptyprocess Folder 0755
ptyprocess-0.7.0.dist-info Folder 0755
pyOpenSSL-23.0.0.egg-info Folder 0755
pyRFC3339-1.1.egg-info Folder 0755
pyVmomi-stubs Folder 0755
pyaudio-stubs Folder 0755
pyautogui-stubs Folder 0755
pycryptodomex-3.11.0.egg-info Folder 0755
pycurl-stubs Folder 0755
pyflakes-stubs Folder 0755
pygame Folder 0755
pygame-2.1.2.egg-info Folder 0755
pygments Folder 0755
pygments-stubs Folder 0755
pygtkcompat Folder 0755
pyi_splash-stubs Folder 0755
pykms Folder 0755
pylint Folder 0755
pylint-2.16.2.dist-info Folder 0755
pymysql-stubs Folder 0755
pynput-stubs Folder 0755
pyrfc3339 Folder 0755
pyrfc3339-stubs Folder 0755
pyrsistent Folder 0755
pyrsistent-0.18.1.egg-info Folder 0755
pyscreeze-stubs Folder 0755
pyserial-3.5.egg-info Folder 0755
pysftp-stubs Folder 0755
pysmbc-1.0.23.egg-info Folder 0755
pytest_lazyfixture-stubs Folder 0755
python_apt-2.6.0.egg-info Folder 0755
python_dotenv-0.21.0.egg-info Folder 0755
python_prctl-1.8.1.egg-info Folder 0755
pythoncom-stubs Folder 0755
pythonwin-stubs Folder 0755
pytz Folder 0755
pytz-2022.7.1.egg-info Folder 0755
pytz-stubs Folder 0755
pyudev Folder 0755
pyudev-0.24.0.egg-info Folder 0755
pywintypes-stubs Folder 0755
pyxdg-0.28.dist-info Folder 0755
redis-stubs Folder 0755
regex-stubs Folder 0755
regutil-stubs Folder 0755
reportlab Folder 0755
reportlab-3.6.12.egg-info Folder 0755
requests Folder 0755
requests-2.28.1.egg-info Folder 0755
requests-stubs Folder 0755
requests_oauthlib Folder 0755
requests_oauthlib-1.3.0.egg-info Folder 0755
requests_toolbelt Folder 0755
requests_toolbelt-0.10.1.egg-info Folder 0755
responses Folder 0755
responses-0.18.0.egg-info Folder 0755
retry-stubs Folder 0755
rfc3986 Folder 0755
rfc3986-1.5.0.egg-info Folder 0755
rfc3987-1.3.8.egg-info Folder 0755
rich Folder 0755
rich-13.3.1.dist-info Folder 0755
roman-3.3.egg-info Folder 0755
rpi_lgpio-0.6.egg-info Folder 0755
samba Folder 0755
send2trash Folder 0755
send2trash-stubs Folder 0755
sense_hat Folder 0755
sense_hat-2.6.0.egg-info Folder 0755
serial Folder 0755
servicemanager-stubs Folder 0755
setuptools Folder 0755
setuptools-66.1.1.egg-info Folder 0755
setuptools-stubs Folder 0755
simplejpeg Folder 0755
simplejpeg-1.8.1.egg-info Folder 0755
simplejson Folder 0755
simplejson-3.18.3.egg-info Folder 0755
simplejson-stubs Folder 0755
singledispatch-stubs Folder 0755
six-1.16.0.egg-info Folder 0755
six-stubs Folder 0755
slugify-stubs Folder 0755
slumber-stubs Folder 0755
smbc Folder 0755
smbus2 Folder 0755
smbus2-0.4.2.egg-info Folder 0755
sniffio Folder 0755
sniffio-1.2.0.egg-info Folder 0755
soupsieve Folder 0755
soupsieve-2.3.2.dist-info Folder 0755
spidev-3.5.egg-info Folder 0755
sqlalchemy-stubs Folder 0755
ssh_import_id Folder 0755
ssh_import_id-5.10.egg-info Folder 0755
sspicon-stubs Folder 0755
stdlib_list-stubs Folder 0755
stripe-stubs Folder 0755
tabulate-stubs Folder 0755
termcolor-stubs Folder 0755
thonny Folder 0755
thonny-4.1.4.egg-info Folder 0755
timer-stubs Folder 0755
toml Folder 0755
toml-0.10.2.egg-info Folder 0755
toml-stubs Folder 0755
tomlkit Folder 0755
tomlkit-0.11.7.dist-info Folder 0755
toposort-stubs Folder 0755
tqdm Folder 0755
tqdm-4.64.1.dist-info Folder 0755
tqdm-stubs Folder 0755
tree_sitter-stubs Folder 0755
tree_sitter_languages-stubs Folder 0755
ttkthemes-stubs Folder 0755
twython Folder 0755
twython-3.8.2.egg-info Folder 0755
typed_ast-stubs Folder 0755
types_D3DShot-0.1.dist-info Folder 0755
types_DateTimeRange-1.2.dist-info Folder 0755
types_Deprecated-1.2.dist-info Folder 0755
types_Flask_Cors-3.0.dist-info Folder 0755
types_Flask_SQLAlchemy-2.5.dist-info Folder 0755
types_JACK_Client-0.5.dist-info Folder 0755
types_Markdown-3.4.dist-info Folder 0755
types_Pillow-9.3.dist-info Folder 0755
types_PyAutoGUI-0.9.dist-info Folder 0755
types_PyMySQL-1.0.dist-info Folder 0755
types_PyScreeze-0.1.dist-info Folder 0755
types_PyYAML-6.0.dist-info Folder 0755
types_Pygments-2.13.dist-info Folder 0755
types_SQLAlchemy-1.4.43.dist-info Folder 0755
types_Send2Trash-1.8.dist-info Folder 0755
types_aiofiles-22.1.dist-info Folder 0755
types_annoy-1.17.dist-info Folder 0755
types_appdirs-1.4.dist-info Folder 0755
types_aws_xray_sdk-2.10.dist-info Folder 0755
types_babel-2.11.dist-info Folder 0755
types_backports.ssl_match_hostname-3.7.dist-info Folder 0755
types_beautifulsoup4-4.11.dist-info Folder 0755
types_bleach-5.0.dist-info Folder 0755
types_boto-2.49.dist-info Folder 0755
types_braintree-4.17.dist-info Folder 0755
types_cachetools-5.2.dist-info Folder 0755
types_caldav-0.10.dist-info Folder 0755
types_certifi-2021.10.8.dist-info Folder 0755
types_cffi-1.15.dist-info Folder 0755
types_chardet-5.0.dist-info Folder 0755
types_chevron-0.14.dist-info Folder 0755
types_click_spinner-0.1.dist-info Folder 0755
types_colorama-0.4.dist-info Folder 0755
types_commonmark-0.9.dist-info Folder 0755
types_console_menu-0.7.dist-info Folder 0755
types_contextvars-2.4.dist-info Folder 0755
types_croniter-1.3.dist-info Folder 0755
types_cryptography-3.3.dist-info Folder 0755
types_dateparser-1.1.dist-info Folder 0755
types_decorator-5.1.dist-info Folder 0755
types_dj_database_url-1.0.dist-info Folder 0755
types_docopt-0.6.dist-info Folder 0755
types_docutils-0.19.dist-info Folder 0755
types_editdistance-0.6.dist-info Folder 0755
types_emoji-2.1.dist-info Folder 0755
types_entrypoints-0.4.dist-info Folder 0755
types_first-2.0.dist-info Folder 0755
types_flake8_2020-1.7.dist-info Folder 0755
types_flake8_bugbear-22.10.27.dist-info Folder 0755
types_flake8_builtins-2.0.dist-info Folder 0755
types_flake8_docstrings-1.6.dist-info Folder 0755
types_flake8_plugin_utils-1.3.dist-info Folder 0755
types_flake8_rst_docstrings-0.2.dist-info Folder 0755
types_flake8_simplify-0.19.dist-info Folder 0755
types_flake8_typing_imports-1.14.dist-info Folder 0755
types_fpdf2-2.5.dist-info Folder 0755
types_gdb-12.1.dist-info Folder 0755
types_google_cloud_ndb-1.11.dist-info Folder 0755
types_hdbcli-2.14.dist-info Folder 0755
types_html5lib-1.1.dist-info Folder 0755
types_httplib2-0.21.dist-info Folder 0755
types_humanfriendly-10.0.dist-info Folder 0755
types_invoke-1.7.dist-info Folder 0755
types_jmespath-1.0.dist-info Folder 0755
types_jsonschema-4.17.dist-info Folder 0755
types_keyboard-0.13.dist-info Folder 0755
types_ldap3-2.9.dist-info Folder 0755
types_mock-4.0.dist-info Folder 0755
types_mypy_extensions-0.4.dist-info Folder 0755
types_mysqlclient-2.1.dist-info Folder 0755
types_oauthlib-3.2.dist-info Folder 0755
types_openpyxl-3.0.dist-info Folder 0755
types_opentracing-2.4.dist-info Folder 0755
types_paho_mqtt-1.6.dist-info Folder 0755
types_paramiko-2.11.dist-info Folder 0755
types_parsimonious-0.10.dist-info Folder 0755
types_passlib-1.7.dist-info Folder 0755
types_passpy-1.0.dist-info Folder 0755
types_peewee-3.15.dist-info Folder 0755
types_pep8_naming-0.13.dist-info Folder 0755
types_playsound-1.3.dist-info Folder 0755
types_polib-1.1.dist-info Folder 0755
types_prettytable-3.4.dist-info Folder 0755
types_protobuf-3.20.dist-info Folder 0755
types_psutil-5.9.dist-info Folder 0755
types_psycopg2-2.9.dist-info Folder 0755
types_pyOpenSSL-22.1.dist-info Folder 0755
types_pyRFC3339-1.1.dist-info Folder 0755
types_pyaudio-0.2.dist-info Folder 0755
types_pycurl-7.45.dist-info Folder 0755
types_pyfarmhash-0.3.dist-info Folder 0755
types_pyflakes-2.5.dist-info Folder 0755
types_pyinstaller-5.6.dist-info Folder 0755
types_pynput-1.7.dist-info Folder 0755
types_pysftp-0.2.dist-info Folder 0755
types_pytest_lazy_fixture-0.6.dist-info Folder 0755
types_python_crontab-2.6.dist-info Folder 0755
types_python_dateutil-2.8.dist-info Folder 0755
types_python_gflags-3.1.dist-info Folder 0755
types_python_jose-3.3.dist-info Folder 0755
types_python_nmap-0.7.dist-info Folder 0755
types_python_slugify-6.1.dist-info Folder 0755
types_pytz-2022.6.dist-info Folder 0755
types_pyvmomi-7.0.dist-info Folder 0755
types_pywin32-304.dist-info Folder 0755
types_redis-4.3.dist-info Folder 0755
types_regex-2022.10.31.dist-info Folder 0755
types_requests-2.28.dist-info Folder 0755
types_retry-0.9.dist-info Folder 0755
types_setuptools-65.5.dist-info Folder 0755
types_simplejson-3.17.dist-info Folder 0755
types_singledispatch-3.7.dist-info Folder 0755
types_six-1.16.dist-info Folder 0755
types_slumber-0.7.dist-info Folder 0755
types_stdlib_list-0.8.dist-info Folder 0755
types_stripe-3.5.dist-info Folder 0755
types_tabulate-0.9.dist-info Folder 0755
types_termcolor-1.1.dist-info Folder 0755
types_toml-0.10.dist-info Folder 0755
types_toposort-1.7.dist-info Folder 0755
types_tqdm-4.64.dist-info Folder 0755
types_tree_sitter-0.20.dist-info Folder 0755
types_tree_sitter_languages-1.5.dist-info Folder 0755
types_ttkthemes-3.2.dist-info Folder 0755
types_typed_ast-1.5.dist-info Folder 0755
types_tzlocal-4.2.dist-info Folder 0755
types_ujson-5.5.dist-info Folder 0755
types_urllib3-1.26.dist-info Folder 0755
types_vobject-0.9.dist-info Folder 0755
types_waitress-2.1.dist-info Folder 0755
types_whatthepatch-1.0.dist-info Folder 0755
types_xmltodict-0.13.dist-info Folder 0755
types_xxhash-3.0.dist-info Folder 0755
types_zxcvbn-4.4.dist-info Folder 0755
typing_extensions-4.4.0.dist-info Folder 0755
tzlocal-stubs Folder 0755
ufw Folder 0755
ujson-stubs Folder 0755
uritemplate Folder 0755
uritemplate-4.1.1.egg-info Folder 0755
urllib3 Folder 0755
urllib3-1.26.12.egg-info Folder 0755
urllib3-stubs Folder 0755
validate Folder 0755
videodev2 Folder 0755
videodev2-0.0.4.egg-info Folder 0755
vobject-stubs Folder 0755
waitress-stubs Folder 0755
webcolors-1.11.1.egg-info Folder 0755
webencodings Folder 0755
webencodings-0.5.1.egg-info Folder 0755
werkzeug Folder 0755
whatthepatch-stubs Folder 0755
wheel Folder 0755
wheel-0.38.4.egg-info Folder 0755
win2kras-stubs Folder 0755
win32-stubs Folder 0755
win32api-stubs Folder 0755
win32clipboard-stubs Folder 0755
win32com-stubs Folder 0755
win32comext-stubs Folder 0755
win32con-stubs Folder 0755
win32console-stubs Folder 0755
win32cred-stubs Folder 0755
win32crypt-stubs Folder 0755
win32cryptcon-stubs Folder 0755
win32event-stubs Folder 0755
win32evtlog-stubs Folder 0755
win32evtlogutil-stubs Folder 0755
win32file-stubs Folder 0755
win32gui-stubs Folder 0755
win32gui_struct-stubs Folder 0755
win32help-stubs Folder 0755
win32inet-stubs Folder 0755
win32inetcon-stubs Folder 0755
win32job-stubs Folder 0755
win32lz-stubs Folder 0755
win32net-stubs Folder 0755
win32netcon-stubs Folder 0755
win32pdh-stubs Folder 0755
win32pdhquery-stubs Folder 0755
win32pipe-stubs Folder 0755
win32print-stubs Folder 0755
win32process-stubs Folder 0755
win32profile-stubs Folder 0755
win32ras-stubs Folder 0755
win32security-stubs Folder 0755
win32service-stubs Folder 0755
win32timezone-stubs Folder 0755
win32trace-stubs Folder 0755
win32transaction-stubs Folder 0755
win32ts-stubs Folder 0755
win32ui-stubs Folder 0755
win32uiole-stubs Folder 0755
win32wnet-stubs Folder 0755
winerror-stubs Folder 0755
winioctlcon-stubs Folder 0755
winnt-stubs Folder 0755
winperf-stubs Folder 0755
winxpgui-stubs Folder 0755
winxptheme-stubs Folder 0755
wrapt Folder 0755
wrapt-1.14.1.egg-info Folder 0755
xdg Folder 0755
xmltodict-stubs Folder 0755
xxhash-stubs Folder 0755
yaml Folder 0755
yaml-stubs Folder 0755
zipp-1.0.0.dist-info Folder 0755
zxcvbn-stubs Folder 0755
65cd21382c5717f91ee0__mypyc.cpython-311-aarch64-linux-gnu.so File 23.22 MB 0644
RTIMU.cpython-311-aarch64-linux-gnu.so File 201.4 KB 0644
RTIMULib-7.2.1.egg-info File 214 B 0644
_cffi_backend.cpython-311-aarch64-linux-gnu.so File 205.43 KB 0644
_dbus_bindings.cpython-311-aarch64-linux-gnu.so File 215.55 KB 0644
_dbus_glib_bindings.cpython-311-aarch64-linux-gnu.so File 66.27 KB 0644
_ldb_text.py File 3.45 KB 0644
_lgpio.cpython-311-aarch64-linux-gnu.so File 134.2 KB 0644
_prctl.cpython-311-aarch64-linux-gnu.so File 66.41 KB 0644
_pyrsistent_version.py File 23 B 0644
_smbc.cpython-311-aarch64-linux-gnu.so File 69.91 KB 0644
_tdb_text.py File 3.27 KB 0644
apt_inst.cpython-311-aarch64-linux-gnu.so File 70.29 KB 0644
apt_pkg.cpython-311-aarch64-linux-gnu.so File 354.13 KB 0644
augeas.py File 23 KB 0644
configargparse.py File 48.71 KB 0644
cups.cpython-311-aarch64-linux-gnu.so File 203.73 KB 0644
cupsext.cpython-311-aarch64-linux-gnu.so File 68.86 KB 0644
cupshelpers-1.0-py3.10.egg-info File 231 B 0644
debconf.py File 6.61 KB 0644
dill-0.3.6.egg-info File 11.08 KB 0644
distutils-precedence.pth File 151 B 0644
gpg-1.18.0-py3.11.egg-info File 2.21 KB 0644
gpiod.cpython-311-aarch64-linux-gnu.so File 70.2 KB 0644
hpmudext.cpython-311-aarch64-linux-gnu.so File 66.59 KB 0644
jsonpointer.py File 10.71 KB 0644
kazam-1.4.5.egg-info File 7.8 KB 0644
language_support_pkgs.py File 9.91 KB 0644
ldb.cpython-311-aarch64-linux-gnu.so File 137.98 KB 0644
lgpio.py File 67.99 KB 0644
libevdev-0.5.egg-info File 841 B 0644
ljpegCompress.cpython-311-aarch64-linux-gnu.so File 66.14 KB 0644
logilab_common-1.9.8-nspkg.pth File 544 B 0644
mccabe.py File 10.4 KB 0644
mmap-test-data.dat File 3 KB 0644
mypy_extensions.py File 4.96 KB 0644
ntp-1.2.2.egg-info File 373 B 0644
pcardext.cpython-311-aarch64-linux-gnu.so File 66.39 KB 0644
pexpect-4.8.0.egg-info File 2.23 KB 0644
pgzrun.py File 827 B 0644
pigpio-1.78.egg-info File 464 B 0644
pigpio.py File 159.59 KB 0644
prctl.py File 7.35 KB 0644
pvectorc.cpython-311-aarch64-linux-gnu.so File 68.34 KB 0644
pycairo-1.20.1.egg-info File 3.52 KB 0644
pycups-2.0.1.egg-info File 1.27 KB 0644
pyinotify-0.9.6.egg-info File 1.39 KB 0644
pyinotify.py File 86.92 KB 0644
python_augeas-0.5.0.egg-info File 238 B 0644
rfc3987.py File 21.35 KB 0644
roman.py File 3.58 KB 0644
scanext.cpython-311-aarch64-linux-gnu.so File 67.07 KB 0644
six.py File 33.74 KB 0644
smbus.cpython-311-aarch64-linux-gnu.so File 67.2 KB 0644
spidev.cpython-311-aarch64-linux-gnu.so File 67.49 KB 0644
talloc.cpython-311-aarch64-linux-gnu.so File 67.35 KB 0644
tdb.cpython-311-aarch64-linux-gnu.so File 68.02 KB 0644
typing_extensions.py File 78.2 KB 0644
ufw-0.36.2.egg-info File 263 B 0644
webcolors.py File 24.91 KB 0644
xdg-5.egg-info File 201 B 0644
zipp.py File 6.75 KB 0644
Filemanager