новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый новый