�
��fg�7 � � � d dl mZ d dlZd dlmZ ddlmZ d dlZg d�ZdZ ej
d� � Z ej
d � � Z ej
d
ej
ej z � � ZdZdZd
� ee�� � Zeed�Zg d�ZdZdd� d� eD � � � � z dz Zdez dz Zdez dz ez dz ZdZ ej
d� � Z ej
dez dz � � Z ej
dez dz � � Z ej
dez dz � � Z ej
dedd� z dz � � Z ej
dez d z � � Z!d!e�de�de�d"�Z" ej
e"ej
ej z � � Z# e$d#� � Z% e$d$� � Z&e%e&z d%hz Z'e'd&d'hz Z(e(d(hz xZ)Z* G d)� d* ed*e� � � � Z+d+� Z,d4d-�Z-d.� Z.d/� Z/d0� Z0d1� Z1d2� Z2d3� Z3dS )5� )�absolute_importN)�
namedtuple� )�LocationParseError��scheme�auth�host�port�path�query�fragment)�http�httpsNz%[a-fA-F0-9]{2}z^(?:[a-zA-Z][a-zA-Z0-9+-]*:|/)zS^(?:([a-zA-Z][a-zA-Z0-9+.-]*):)?(?://([^\\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?$z(?:[0-9]{1,3}\.){3}[0-9]{1,3}z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))�hex�ipv4)r �ls32) z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:�|c �" |