Description
The Yanco CAT-3614 Catering Bowl is a versatile, high-capacity foodservice accessory designed for commercial kitchens, catering operations, and institutional dining environments. With a 6-1/2 quart capacity, this square melamine bowl measures 14 inches in length and width, and 6 inches in height, providing a durable and lightweight solution for serving and food prep. Its dishwasher-safe construction ensures ease of cleaning, while the white finish maintains a professional appearance suitable for high-volume settings. Manufactured by Yanco, this catering bowl supports HACCP-compliant workflows and offers a robust option for daily foodservice tasks requiring repeated usage and reliable performance.
Top Yanco CAT-3614 Features
The Yanco CAT-3614 catering bowl is designed for commercial foodservice environments requiring large-volume serving and prep. Its melamine construction guarantees impact resistance and dishwasher safety, simplifying routine cleaning. The 14″ x 14″ square shape optimizes storage and workspace compatibility, while the 6″ height supports versatile usage in various preparatory and presentation applications. This bowl’s durability and design accommodate steady demands in professional kitchens and catering stations, facilitating efficient workflow for kitchen staff.
- Impact-resistant melamine withstands daily commercial use
- Generous 6-1/2 quart capacity for bulk servings
- Square shape enhances storage efficiency and workspace fit
- Dishwasher safe — simplifies cleaning routine
- Lightweight design reduces handling fatigue in busy kitchens
This catering bowl is suitable for foodservice operators seeking durable, easy-to-maintain kitchenware for large-scale serving and food prep. Its robust features support consistent daily workflows in various commercial settings.
What is a commercial catering bowl?
A commercial catering bowl is a foodservice vessel designed specifically for large-scale food handling, presentation, and storage in professional kitchens. The Yanco CAT-3614 catering bowl features a 6-1/2 quart capacity, made from durable melamine, and measures 14″L x 14″W x 6″H. It is suitable for use in institutional kitchens, catering stations, and foodservice teams that require impact-resistant, dishwasher-safe containers. This model is ideal for steady food prep and service in medium-volume operations, supporting HACCP compliance and efficient workflow.
Top catering bowls for mid-sized foodservice kitchens
Precision-made for medium-capacity operations, these bowls deliver durable performance and reliable handling in commercial kitchens. Designed for steady daily workflows, they support efficient food prep and presentation with impact-resistant constructions and dishwasher-safe features.
- Steady daily use in small prep kitchens
- Compact design suited for commercial foodservice spaces
- Suitable for catering stations and institutional kitchens
- Moderate throughput — up to 200 servings daily
- Supports manual food prep and serving tasks
Yanco CAT-3614 Technical Specs
The Yanco CAT-3614 catering bowl is crafted from impact-resistant melamine with a white finish, ensuring durability in demanding foodservice environments. It measures 14 inches in length and width, with a height of 6 inches, and weighs approximately 21.38 lbs. Its dishwasher-safe construction facilitates routine cleaning without disassembly. Certified for food safety standards, this bowl complies with HACCP protocols and Proposition 65 regulations. Designed for steady use, it is compatible with standard commercial dishwashing equipment and provides reliable performance for bulk serving in institutional kitchens and catering aligns.
- Dimensions: 14″L x 14″W x 6″H
- Weight: 21.38 lbs
- Material: Melamine, impact-resistant
- Color: White
- Dishwasher safe — simplifies maintenance
- Food safety: Proposition 65 compliant
- Commercial-grade impact resistance
- Supports HACCP workflows
- Impact-resistant construction withstands daily handling
- Impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact






Reviews
There are no reviews yet.