� �|oiQQ � � � d Z ddlZddlZddlZddlZddlZddlmZmZ ddl m Z ddlmZm Z mZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZ erddlmZ ddlm Z d e d e fd�Z! G d� d � � Z"ej# dk r G d� d� � Z$ded efd�Z% ej&