| line | stmt | bran | cond | sub | pod | time | code | 
| 1 | 2 |  |  | 2 |  | 1194 | use Moose::Util::TypeConstraints; | 
|  | 2 |  |  |  |  | 14 |  | 
|  | 2 |  |  |  |  | 17 |  | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | coerce 'Cfn::Resource::Properties::AWS::S3::BucketPolicy', | 
| 4 |  |  |  |  |  |  | from 'HashRef', | 
| 5 |  |  |  |  |  |  | via { Cfn::Resource::Properties::AWS::S3::BucketPolicy->new( %$_ ) }; | 
| 6 |  |  |  |  |  |  |  | 
| 7 |  |  |  |  |  |  | package Cfn::Resource::AWS::S3::BucketPolicy { | 
| 8 | 2 |  |  | 2 |  | 4651 | use Moose; | 
|  | 2 |  |  |  |  | 6 |  | 
|  | 2 |  |  |  |  | 13 |  | 
| 9 |  |  |  |  |  |  | extends 'Cfn::Resource'; | 
| 10 |  |  |  |  |  |  | has Properties => (isa => 'Cfn::Resource::Properties::AWS::S3::BucketPolicy', is => 'rw', coerce => 1, required => 1); | 
| 11 |  |  |  |  |  |  | } | 
| 12 |  |  |  |  |  |  |  | 
| 13 |  |  |  |  |  |  | package Cfn::Resource::Properties::AWS::S3::BucketPolicy  { | 
| 14 | 2 |  |  | 2 |  | 12230 | use Moose; | 
|  | 2 |  |  |  |  | 6 |  | 
|  | 2 |  |  |  |  | 10 |  | 
| 15 | 2 |  |  | 2 |  | 13873 | use MooseX::StrictConstructor; | 
|  | 2 |  |  |  |  | 16981 |  | 
|  | 2 |  |  |  |  | 13 |  | 
| 16 |  |  |  |  |  |  | extends 'Cfn::Resource::Properties'; | 
| 17 |  |  |  |  |  |  | has PolicyDocument => (isa => 'Cfn::Value', is => 'rw', coerce => 1, required => 1); | 
| 18 |  |  |  |  |  |  | has Bucket => (isa => 'Cfn::Value', is => 'rw', coerce => 1, required => 1); | 
| 19 |  |  |  |  |  |  | } | 
| 20 |  |  |  |  |  |  |  | 
| 21 |  |  |  |  |  |  | 1; |