diff --git a/plugins/drivers/driver.go b/plugins/drivers/driver.go index 15a00d549..e7ec790af 100644 --- a/plugins/drivers/driver.go +++ b/plugins/drivers/driver.go @@ -170,8 +170,10 @@ type Capabilities struct { // RemoteTasks indicates this driver runs tasks on remote systems // instead of locally. The Nomad client can use this information to - // adjust behavior such as propogating task handles between allocations + // adjust behavior such as propagating task handles between allocations // to avoid downtime when a client is lost. + // + // Deprecated: remote tasks drivers are no longer developed or supported. RemoteTasks bool // DisableLogCollection indicates this driver has disabled log collection diff --git a/plugins/drivers/proto/driver.pb.go b/plugins/drivers/proto/driver.pb.go index f346f4b30..86103cd32 100644 --- a/plugins/drivers/proto/driver.pb.go +++ b/plugins/drivers/proto/driver.pb.go @@ -1851,7 +1851,7 @@ type DriverCapabilities struct { MountConfigs DriverCapabilities_MountConfigs `protobuf:"varint,6,opt,name=mount_configs,json=mountConfigs,proto3,enum=hashicorp.nomad.plugins.drivers.proto.DriverCapabilities_MountConfigs" json:"mount_configs,omitempty"` // remote_tasks indicates whether the driver executes tasks remotely such // on cloud runtimes like AWS ECS. - RemoteTasks bool `protobuf:"varint,7,opt,name=remote_tasks,json=remoteTasks,proto3" json:"remote_tasks,omitempty"` + RemoteTasks bool `protobuf:"varint,7,opt,name=remote_tasks,json=remoteTasks,proto3" json:"remote_tasks,omitempty"` // Deprecated: Do not use. // disable_log_collection indicates whether the driver has the capability of // disabling log collection DisableLogCollection bool `protobuf:"varint,8,opt,name=disable_log_collection,json=disableLogCollection,proto3" json:"disable_log_collection,omitempty"` @@ -1930,6 +1930,7 @@ func (m *DriverCapabilities) GetMountConfigs() DriverCapabilities_MountConfigs { return DriverCapabilities_UNKNOWN_MOUNTS } +// Deprecated: Do not use. func (m *DriverCapabilities) GetRemoteTasks() bool { if m != nil { return m.RemoteTasks @@ -3768,254 +3769,255 @@ func init() { } var fileDescriptor_4a8f45747846a74d = []byte{ - // 3945 bytes of a gzipped FileDescriptorProto + // 3953 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0x4f, 0x73, 0xdb, 0x48, - 0x76, 0x17, 0x08, 0x92, 0x22, 0x1f, 0x25, 0x0a, 0x6a, 0x49, 0x36, 0xcd, 0xd9, 0x64, 0xbc, 0xd8, - 0x9a, 0x94, 0xb2, 0x3b, 0x43, 0xcf, 0x6a, 0x93, 0xf1, 0xd8, 0xeb, 0x59, 0x0f, 0x87, 0xa2, 0x2d, + 0x76, 0x17, 0x08, 0x92, 0x22, 0x1f, 0x29, 0x0a, 0x6a, 0x4b, 0x1e, 0x9a, 0xb3, 0xc9, 0x78, 0xb0, + 0x35, 0x29, 0x67, 0x77, 0x86, 0x9e, 0xd5, 0x26, 0xe3, 0xb1, 0xd7, 0xb3, 0x1e, 0x9a, 0xa2, 0x2d, 0xda, 0x12, 0xa5, 0x34, 0xa9, 0x78, 0x1d, 0x27, 0x83, 0x40, 0x40, 0x9b, 0x82, 0x45, 0x02, 0x18, 0x34, 0x28, 0x4b, 0x9b, 0x4a, 0x25, 0xb5, 0xa9, 0x4a, 0x6d, 0xaa, 0x92, 0x4a, 0x2e, 0x93, 0xbd, - 0xe4, 0xb4, 0x55, 0x39, 0xa5, 0x72, 0x4f, 0x6d, 0x6a, 0x4e, 0x39, 0xe4, 0x4b, 0xe4, 0x92, 0x5b, - 0x6e, 0xa9, 0x7c, 0x82, 0x6c, 0xf5, 0x1f, 0x80, 0x80, 0x48, 0x8f, 0x41, 0xca, 0x27, 0xf2, 0xbd, - 0xee, 0xfe, 0xf5, 0xc3, 0x7b, 0xaf, 0x5f, 0xbf, 0xee, 0x7e, 0xa0, 0xfb, 0xc3, 0xf1, 0xc0, 0x71, - 0xe9, 0x1d, 0x3b, 0x70, 0xce, 0x49, 0x40, 0xef, 0xf8, 0x81, 0x17, 0x7a, 0x92, 0x6a, 0x70, 0x02, - 0x7d, 0x70, 0x6a, 0xd2, 0x53, 0xc7, 0xf2, 0x02, 0xbf, 0xe1, 0x7a, 0x23, 0xd3, 0x6e, 0xc8, 0x31, - 0x0d, 0x39, 0x46, 0x74, 0xab, 0xff, 0xf6, 0xc0, 0xf3, 0x06, 0x43, 0x22, 0x10, 0x4e, 0xc6, 0x2f, - 0xef, 0xd8, 0xe3, 0xc0, 0x0c, 0x1d, 0xcf, 0x95, 0xed, 0xef, 0x5f, 0x6d, 0x0f, 0x9d, 0x11, 0xa1, - 0xa1, 0x39, 0xf2, 0x65, 0x87, 0x0f, 0x22, 0x59, 0xe8, 0xa9, 0x19, 0x10, 0xfb, 0xce, 0xa9, 0x35, - 0xa4, 0x3e, 0xb1, 0xd8, 0xaf, 0xc1, 0xfe, 0xc8, 0x6e, 0x1f, 0x5e, 0xe9, 0x46, 0xc3, 0x60, 0x6c, - 0x85, 0x91, 0xe4, 0x66, 0x18, 0x06, 0xce, 0xc9, 0x38, 0x24, 0xa2, 0xb7, 0x7e, 0x0b, 0x6e, 0xf6, - 0x4d, 0x7a, 0xd6, 0xf2, 0xdc, 0x97, 0xce, 0xa0, 0x67, 0x9d, 0x92, 0x91, 0x89, 0xc9, 0x57, 0x63, - 0x42, 0x43, 0xfd, 0x8f, 0xa1, 0x36, 0xdd, 0x44, 0x7d, 0xcf, 0xa5, 0x04, 0x7d, 0x0e, 0x79, 0x36, - 0x65, 0x4d, 0xb9, 0xad, 0x6c, 0x57, 0x76, 0x3e, 0x6c, 0xbc, 0x49, 0x05, 0x42, 0x86, 0x86, 0x14, - 0xb5, 0xd1, 0xf3, 0x89, 0x85, 0xf9, 0x48, 0x7d, 0x0b, 0x36, 0x5a, 0xa6, 0x6f, 0x9e, 0x38, 0x43, - 0x27, 0x74, 0x08, 0x8d, 0x26, 0x1d, 0xc3, 0x66, 0x9a, 0x2d, 0x27, 0xfc, 0x13, 0x58, 0xb1, 0x12, - 0x7c, 0x39, 0xf1, 0xbd, 0x46, 0x26, 0xdd, 0x37, 0x76, 0x39, 0x95, 0x02, 0x4e, 0xc1, 0xe9, 0x9b, - 0x80, 0x1e, 0x39, 0xee, 0x80, 0x04, 0x7e, 0xe0, 0xb8, 0x61, 0x24, 0xcc, 0x37, 0x2a, 0x6c, 0xa4, - 0xd8, 0x52, 0x98, 0x57, 0x00, 0xb1, 0x1e, 0x99, 0x28, 0xea, 0x76, 0x65, 0xe7, 0x49, 0x46, 0x51, - 0x66, 0xe0, 0x35, 0x9a, 0x31, 0x58, 0xdb, 0x0d, 0x83, 0x4b, 0x9c, 0x40, 0x47, 0x5f, 0x42, 0xf1, - 0x94, 0x98, 0xc3, 0xf0, 0xb4, 0x96, 0xbb, 0xad, 0x6c, 0x57, 0x77, 0x1e, 0x5d, 0x63, 0x9e, 0x3d, - 0x0e, 0xd4, 0x0b, 0xcd, 0x90, 0x60, 0x89, 0x8a, 0x3e, 0x02, 0x24, 0xfe, 0x19, 0x36, 0xa1, 0x56, - 0xe0, 0xf8, 0xcc, 0x25, 0x6b, 0xea, 0x6d, 0x65, 0xbb, 0x8c, 0xd7, 0x45, 0xcb, 0xee, 0xa4, 0xa1, - 0xee, 0xc3, 0xda, 0x15, 0x69, 0x91, 0x06, 0xea, 0x19, 0xb9, 0xe4, 0x16, 0x29, 0x63, 0xf6, 0x17, - 0x3d, 0x86, 0xc2, 0xb9, 0x39, 0x1c, 0x13, 0x2e, 0x72, 0x65, 0xe7, 0x87, 0x6f, 0x73, 0x0f, 0xe9, - 0xa2, 0x13, 0x3d, 0x60, 0x31, 0xfe, 0x7e, 0xee, 0x53, 0x45, 0xbf, 0x07, 0x95, 0x84, 0xdc, 0xa8, - 0x0a, 0x70, 0xdc, 0xdd, 0x6d, 0xf7, 0xdb, 0xad, 0x7e, 0x7b, 0x57, 0x5b, 0x42, 0xab, 0x50, 0x3e, - 0xee, 0xee, 0xb5, 0x9b, 0xfb, 0xfd, 0xbd, 0xe7, 0x9a, 0x82, 0x2a, 0xb0, 0x1c, 0x11, 0x39, 0xfd, - 0x02, 0x10, 0x26, 0x96, 0x77, 0x4e, 0x02, 0xe6, 0xc8, 0xd2, 0xaa, 0xe8, 0x26, 0x2c, 0x87, 0x26, - 0x3d, 0x33, 0x1c, 0x5b, 0xca, 0x5c, 0x64, 0x64, 0xc7, 0x46, 0x1d, 0x28, 0x9e, 0x9a, 0xae, 0x3d, - 0x7c, 0xbb, 0xdc, 0x69, 0x55, 0x33, 0xf0, 0x3d, 0x3e, 0x10, 0x4b, 0x00, 0xe6, 0xdd, 0xa9, 0x99, - 0x85, 0x01, 0xf4, 0xe7, 0xa0, 0xf5, 0x42, 0x33, 0x08, 0x93, 0xe2, 0xb4, 0x21, 0xcf, 0xe6, 0x97, - 0x1e, 0x3d, 0xcf, 0x9c, 0x62, 0x65, 0x62, 0x3e, 0x5c, 0xff, 0xbf, 0x1c, 0xac, 0x27, 0xb0, 0xa5, - 0xa7, 0x3e, 0x83, 0x62, 0x40, 0xe8, 0x78, 0x18, 0x72, 0xf8, 0xea, 0xce, 0xc3, 0x8c, 0xf0, 0x53, - 0x48, 0x0d, 0xcc, 0x61, 0xb0, 0x84, 0x43, 0xdb, 0xa0, 0x89, 0x11, 0x06, 0x09, 0x02, 0x2f, 0x30, - 0x46, 0x74, 0xc0, 0xb5, 0x56, 0xc6, 0x55, 0xc1, 0x6f, 0x33, 0xf6, 0x01, 0x1d, 0x24, 0xb4, 0xaa, - 0x5e, 0x53, 0xab, 0xc8, 0x04, 0xcd, 0x25, 0xe1, 0x6b, 0x2f, 0x38, 0x33, 0x98, 0x6a, 0x03, 0xc7, - 0x26, 0xb5, 0x3c, 0x07, 0xfd, 0x24, 0x23, 0x68, 0x57, 0x0c, 0x3f, 0x94, 0xa3, 0xf1, 0x9a, 0x9b, - 0x66, 0xe8, 0x3f, 0x80, 0xa2, 0xf8, 0x52, 0xe6, 0x49, 0xbd, 0xe3, 0x56, 0xab, 0xdd, 0xeb, 0x69, - 0x4b, 0xa8, 0x0c, 0x05, 0xdc, 0xee, 0x63, 0xe6, 0x61, 0x65, 0x28, 0x3c, 0x6a, 0xf6, 0x9b, 0xfb, - 0x5a, 0x4e, 0xff, 0x3e, 0xac, 0x3d, 0x33, 0x9d, 0x30, 0x8b, 0x73, 0xe9, 0x1e, 0x68, 0x93, 0xbe, - 0xd2, 0x3a, 0x9d, 0x94, 0x75, 0xb2, 0xab, 0xa6, 0x7d, 0xe1, 0x84, 0x57, 0xec, 0xa1, 0x81, 0x4a, - 0x82, 0x40, 0x9a, 0x80, 0xfd, 0xd5, 0x5f, 0xc3, 0x5a, 0x2f, 0xf4, 0xfc, 0x4c, 0x9e, 0xff, 0x23, - 0x58, 0x66, 0xbb, 0x8d, 0x37, 0x0e, 0xa5, 0xeb, 0xdf, 0x6a, 0x88, 0xdd, 0xa8, 0x11, 0xed, 0x46, - 0x8d, 0x5d, 0xb9, 0x5b, 0xe1, 0xa8, 0x27, 0xba, 0x01, 0x45, 0xea, 0x0c, 0x5c, 0x73, 0x28, 0xa3, - 0x85, 0xa4, 0x74, 0xc4, 0x9c, 0x3c, 0x9a, 0x58, 0x3a, 0x7e, 0x0b, 0xd0, 0x2e, 0xa1, 0x61, 0xe0, - 0x5d, 0x66, 0x92, 0x67, 0x13, 0x0a, 0x2f, 0xbd, 0xc0, 0x12, 0x0b, 0xb1, 0x84, 0x05, 0xc1, 0x16, - 0x55, 0x0a, 0x44, 0x62, 0x7f, 0x04, 0xa8, 0xe3, 0xb2, 0x3d, 0x25, 0x9b, 0x21, 0xfe, 0x21, 0x07, - 0x1b, 0xa9, 0xfe, 0xd2, 0x18, 0x8b, 0xaf, 0x43, 0x16, 0x98, 0xc6, 0x54, 0xac, 0x43, 0x74, 0x08, - 0x45, 0xd1, 0x43, 0x6a, 0xf2, 0xee, 0x1c, 0x40, 0x62, 0x9b, 0x92, 0x70, 0x12, 0x66, 0xa6, 0xd3, - 0xab, 0xef, 0xd6, 0xe9, 0x5f, 0x83, 0x16, 0x7d, 0x07, 0x7d, 0xab, 0x6d, 0x9e, 0xc0, 0x86, 0xe5, - 0x0d, 0x87, 0xc4, 0x62, 0xde, 0x60, 0x38, 0x6e, 0x48, 0x82, 0x73, 0x73, 0xf8, 0x76, 0xbf, 0x41, - 0x93, 0x51, 0x1d, 0x39, 0x48, 0x7f, 0x01, 0xeb, 0x89, 0x89, 0xa5, 0x21, 0x1e, 0x41, 0x81, 0x32, - 0x86, 0xb4, 0xc4, 0xc7, 0x73, 0x5a, 0x82, 0x62, 0x31, 0x5c, 0xdf, 0x10, 0xe0, 0xed, 0x73, 0xe2, - 0xc6, 0x9f, 0xa5, 0xef, 0xc2, 0x7a, 0x8f, 0xbb, 0x69, 0x26, 0x3f, 0x9c, 0xb8, 0x78, 0x2e, 0xe5, - 0xe2, 0x9b, 0x80, 0x92, 0x28, 0xd2, 0x11, 0x2f, 0x61, 0xad, 0x7d, 0x41, 0xac, 0x4c, 0xc8, 0x35, - 0x58, 0xb6, 0xbc, 0xd1, 0xc8, 0x74, 0xed, 0x5a, 0xee, 0xb6, 0xba, 0x5d, 0xc6, 0x11, 0x99, 0x5c, - 0x8b, 0x6a, 0xd6, 0xb5, 0xa8, 0xff, 0x9d, 0x02, 0xda, 0x64, 0x6e, 0xa9, 0x48, 0x26, 0x7d, 0x68, - 0x33, 0x20, 0x36, 0xf7, 0x0a, 0x96, 0x94, 0xe4, 0x47, 0xe1, 0x42, 0xf0, 0x49, 0x10, 0x24, 0xc2, - 0x91, 0x7a, 0xcd, 0x70, 0xa4, 0xef, 0xc1, 0x77, 0x22, 0x71, 0x7a, 0x61, 0x40, 0xcc, 0x91, 0xe3, - 0x0e, 0x3a, 0x87, 0x87, 0x3e, 0x11, 0x82, 0x23, 0x04, 0x79, 0xdb, 0x0c, 0x4d, 0x29, 0x18, 0xff, - 0xcf, 0x16, 0xbd, 0x35, 0xf4, 0x68, 0xbc, 0xe8, 0x39, 0xa1, 0xff, 0xa7, 0x0a, 0xb5, 0x29, 0xa8, - 0x48, 0xbd, 0x2f, 0xa0, 0x40, 0x49, 0x38, 0xf6, 0xa5, 0xab, 0xb4, 0x33, 0x0b, 0x3c, 0x1b, 0xaf, - 0xd1, 0x63, 0x60, 0x58, 0x60, 0xa2, 0x01, 0x94, 0xc2, 0xf0, 0xd2, 0xa0, 0xce, 0xcf, 0xa2, 0x84, - 0x60, 0xff, 0xba, 0xf8, 0x7d, 0x12, 0x8c, 0x1c, 0xd7, 0x1c, 0xf6, 0x9c, 0x9f, 0x11, 0xbc, 0x1c, - 0x86, 0x97, 0xec, 0x0f, 0x7a, 0xce, 0x1c, 0xde, 0x76, 0x5c, 0xa9, 0xf6, 0xd6, 0xa2, 0xb3, 0x24, - 0x14, 0x8c, 0x05, 0x62, 0x7d, 0x1f, 0x0a, 0xfc, 0x9b, 0x16, 0x71, 0x44, 0x0d, 0xd4, 0x30, 0xbc, - 0xe4, 0x42, 0x95, 0x30, 0xfb, 0x5b, 0x7f, 0x00, 0x2b, 0xc9, 0x2f, 0x60, 0x8e, 0x74, 0x4a, 0x9c, - 0xc1, 0xa9, 0x70, 0xb0, 0x02, 0x96, 0x14, 0xb3, 0xe4, 0x6b, 0xc7, 0x96, 0x29, 0x6b, 0x01, 0x0b, - 0x42, 0xff, 0xb7, 0x1c, 0xdc, 0x9a, 0xa1, 0x19, 0xe9, 0xac, 0x2f, 0x52, 0xce, 0xfa, 0x8e, 0xb4, - 0x10, 0x79, 0xfc, 0x8b, 0x94, 0xc7, 0xbf, 0x43, 0x70, 0xb6, 0x6c, 0x6e, 0x40, 0x91, 0x5c, 0x38, - 0x21, 0xb1, 0xa5, 0xaa, 0x24, 0x95, 0x58, 0x4e, 0xf9, 0xeb, 0x2e, 0xa7, 0x03, 0xd8, 0x6c, 0x05, - 0xc4, 0x0c, 0x89, 0x0c, 0xe5, 0x91, 0xff, 0xdf, 0x82, 0x92, 0x39, 0x1c, 0x7a, 0xd6, 0xc4, 0xac, - 0xcb, 0x9c, 0xee, 0xd8, 0xa8, 0x0e, 0xa5, 0x53, 0x8f, 0x86, 0xae, 0x39, 0x22, 0x32, 0x78, 0xc5, - 0xb4, 0xfe, 0xb5, 0x02, 0x5b, 0x57, 0xf0, 0xa4, 0x15, 0x4e, 0xa0, 0xea, 0x50, 0x6f, 0xc8, 0x3f, - 0xd0, 0x48, 0x9c, 0xf0, 0x7e, 0x3c, 0xdf, 0x56, 0xd3, 0x89, 0x30, 0xf8, 0x81, 0x6f, 0xd5, 0x49, - 0x92, 0xdc, 0xe3, 0xf8, 0xe4, 0xb6, 0x5c, 0xe9, 0x11, 0xa9, 0xff, 0xa3, 0x02, 0x5b, 0x72, 0x87, - 0xcf, 0xfe, 0xa1, 0xd3, 0x22, 0xe7, 0xde, 0xb5, 0xc8, 0x7a, 0x0d, 0x6e, 0x5c, 0x95, 0x4b, 0xc6, - 0xfc, 0xff, 0x2d, 0x00, 0x9a, 0x3e, 0x5d, 0xa2, 0xef, 0xc2, 0x0a, 0x25, 0xae, 0x6d, 0x88, 0xfd, - 0x42, 0x6c, 0x65, 0x25, 0x5c, 0x61, 0x3c, 0xb1, 0x71, 0x50, 0x16, 0x02, 0xc9, 0x85, 0x94, 0xb6, - 0x84, 0xf9, 0x7f, 0x74, 0x0a, 0x2b, 0x2f, 0xa9, 0x11, 0xcf, 0xcd, 0x1d, 0xaa, 0x9a, 0x39, 0xac, - 0x4d, 0xcb, 0xd1, 0x78, 0xd4, 0x8b, 0xbf, 0x0b, 0x57, 0x5e, 0xd2, 0x98, 0x40, 0xbf, 0x50, 0xe0, - 0x66, 0x94, 0x56, 0x4c, 0xd4, 0x37, 0xf2, 0x6c, 0x42, 0x6b, 0xf9, 0xdb, 0xea, 0x76, 0x75, 0xe7, - 0xe8, 0x1a, 0xfa, 0x9b, 0x62, 0x1e, 0x78, 0x36, 0xc1, 0x5b, 0xee, 0x0c, 0x2e, 0x45, 0x0d, 0xd8, - 0x18, 0x8d, 0x69, 0x68, 0x08, 0x2f, 0x30, 0x64, 0xa7, 0x5a, 0x81, 0xeb, 0x65, 0x9d, 0x35, 0xa5, - 0x7c, 0x15, 0x9d, 0xc1, 0xea, 0xc8, 0x1b, 0xbb, 0xa1, 0x61, 0xf1, 0xf3, 0x0f, 0xad, 0x15, 0xe7, - 0x3a, 0x18, 0xcf, 0xd0, 0xd2, 0x01, 0x83, 0x13, 0xa7, 0x29, 0x8a, 0x57, 0x46, 0x09, 0x8a, 0x19, - 0x32, 0x20, 0x23, 0x2f, 0x24, 0x06, 0x8b, 0x97, 0xb4, 0xb6, 0x2c, 0x0c, 0x29, 0x78, 0x2c, 0x34, - 0x50, 0xf4, 0x7b, 0x70, 0xc3, 0x76, 0xa8, 0x79, 0x32, 0x24, 0xc6, 0xd0, 0x1b, 0x18, 0x93, 0x34, - 0xa7, 0x56, 0xe2, 0x9d, 0x37, 0x65, 0xeb, 0xbe, 0x37, 0x68, 0xc5, 0x6d, 0x7c, 0xd4, 0xa5, 0x6b, - 0x8e, 0x1c, 0xcb, 0x60, 0x5f, 0x35, 0xf4, 0x4c, 0xdb, 0x18, 0x53, 0x12, 0xd0, 0x5a, 0x59, 0x8e, - 0x12, 0xad, 0xcf, 0x64, 0xe3, 0x31, 0x6b, 0xd3, 0xef, 0x43, 0x25, 0x61, 0x52, 0x54, 0x82, 0x7c, - 0xf7, 0xb0, 0xdb, 0xd6, 0x96, 0x10, 0x40, 0xb1, 0xb5, 0x87, 0x0f, 0x0f, 0xfb, 0xe2, 0x84, 0xd2, - 0x39, 0x68, 0x3e, 0x6e, 0x6b, 0x39, 0xc6, 0x3e, 0xee, 0xfe, 0x61, 0xbb, 0xb3, 0xaf, 0xa9, 0x7a, - 0x1b, 0x56, 0x92, 0x1f, 0x8a, 0x10, 0x54, 0x8f, 0xbb, 0x4f, 0xbb, 0x87, 0xcf, 0xba, 0xc6, 0xc1, - 0xe1, 0x71, 0xb7, 0xcf, 0xce, 0x39, 0x55, 0x80, 0x66, 0xf7, 0xf9, 0x84, 0x5e, 0x85, 0x72, 0xf7, - 0x30, 0x22, 0x95, 0x7a, 0x4e, 0x53, 0xf4, 0xff, 0x50, 0x61, 0x73, 0x96, 0xcd, 0x91, 0x0d, 0x79, - 0xe6, 0x3f, 0xf2, 0xa4, 0xf9, 0xee, 0xdd, 0x87, 0xa3, 0xb3, 0x65, 0xe3, 0x9b, 0x72, 0x6b, 0x29, - 0x63, 0xfe, 0x1f, 0x19, 0x50, 0x1c, 0x9a, 0x27, 0x64, 0x48, 0x6b, 0x2a, 0xbf, 0x8b, 0x79, 0x7c, - 0x9d, 0xb9, 0xf7, 0x39, 0x92, 0xb8, 0x88, 0x91, 0xb0, 0xa8, 0x0f, 0x15, 0x16, 0x3c, 0xa9, 0x50, - 0x9d, 0x8c, 0xe7, 0x3b, 0x19, 0x67, 0xd9, 0x9b, 0x8c, 0xc4, 0x49, 0x98, 0xfa, 0x3d, 0xa8, 0x24, - 0x26, 0x9b, 0x71, 0x8f, 0xb2, 0x99, 0xbc, 0x47, 0x29, 0x27, 0x2f, 0x45, 0x1e, 0x4e, 0xdb, 0x80, - 0xe9, 0x88, 0x39, 0xc4, 0xde, 0x61, 0xaf, 0x2f, 0x4e, 0xac, 0x8f, 0xf1, 0xe1, 0xf1, 0x91, 0xa6, - 0x30, 0x66, 0xbf, 0xd9, 0x7b, 0xaa, 0xe5, 0x62, 0x7f, 0x51, 0xf5, 0x16, 0x54, 0x12, 0x72, 0xa5, - 0x76, 0x0b, 0x25, 0xbd, 0x5b, 0xb0, 0x78, 0x6d, 0xda, 0x76, 0x40, 0x28, 0x95, 0x72, 0x44, 0xa4, - 0xfe, 0x02, 0xca, 0xbb, 0xdd, 0x9e, 0x84, 0xa8, 0xc1, 0x32, 0x25, 0x01, 0xfb, 0x6e, 0x7e, 0x23, - 0x56, 0xc6, 0x11, 0xc9, 0xc0, 0x29, 0x31, 0x03, 0xeb, 0x94, 0x50, 0x99, 0x63, 0xc4, 0x34, 0x1b, - 0xe5, 0xf1, 0x9b, 0x25, 0x61, 0xbb, 0x32, 0x8e, 0x48, 0xfd, 0xff, 0x4b, 0x00, 0x93, 0x5b, 0x0e, - 0x54, 0x85, 0x5c, 0x1c, 0xfb, 0x73, 0x8e, 0xcd, 0xfc, 0x20, 0xb1, 0xb7, 0xf1, 0xff, 0x68, 0x07, - 0xb6, 0x46, 0x74, 0xe0, 0x9b, 0xd6, 0x99, 0x21, 0x2f, 0x27, 0x44, 0x88, 0xe0, 0x71, 0x74, 0x05, - 0x6f, 0xc8, 0x46, 0x19, 0x01, 0x04, 0xee, 0x3e, 0xa8, 0xc4, 0x3d, 0xe7, 0x31, 0xaf, 0xb2, 0x73, - 0x7f, 0xee, 0xdb, 0x97, 0x46, 0xdb, 0x3d, 0x17, 0xbe, 0xc2, 0x60, 0x90, 0x01, 0x60, 0x93, 0x73, - 0xc7, 0x22, 0x06, 0x03, 0x2d, 0x70, 0xd0, 0xcf, 0xe7, 0x07, 0xdd, 0xe5, 0x18, 0x31, 0x74, 0xd9, - 0x8e, 0x68, 0xd4, 0x85, 0x72, 0x40, 0xa8, 0x37, 0x0e, 0x2c, 0x22, 0x02, 0x5f, 0xf6, 0x03, 0x12, - 0x8e, 0xc6, 0xe1, 0x09, 0x04, 0xda, 0x85, 0x22, 0x8f, 0x77, 0x2c, 0xb2, 0xa9, 0xdf, 0x7a, 0x95, - 0x9b, 0x06, 0xe3, 0x91, 0x04, 0xcb, 0xb1, 0xe8, 0x31, 0x2c, 0x0b, 0x11, 0x69, 0xad, 0xc4, 0x61, - 0x3e, 0xca, 0x1a, 0x8c, 0xf9, 0x28, 0x1c, 0x8d, 0x66, 0x56, 0x65, 0x41, 0x90, 0xc7, 0xc0, 0x32, - 0xe6, 0xff, 0xd1, 0x7b, 0x50, 0x16, 0x7b, 0xbf, 0xed, 0x04, 0x35, 0x10, 0xce, 0xc9, 0x19, 0xbb, - 0x4e, 0x80, 0xde, 0x87, 0x8a, 0xc8, 0xf1, 0x0c, 0x1e, 0x15, 0x2a, 0xbc, 0x19, 0x04, 0xeb, 0x88, - 0xc5, 0x06, 0xd1, 0x81, 0x04, 0x81, 0xe8, 0xb0, 0x12, 0x77, 0x20, 0x41, 0xc0, 0x3b, 0xfc, 0x0e, - 0xac, 0xf1, 0xcc, 0x78, 0x10, 0x78, 0x63, 0xdf, 0xe0, 0x3e, 0xb5, 0xca, 0x3b, 0xad, 0x32, 0xf6, - 0x63, 0xc6, 0xed, 0x32, 0xe7, 0xba, 0x05, 0xa5, 0x57, 0xde, 0x89, 0xe8, 0x50, 0x15, 0xeb, 0xe0, - 0x95, 0x77, 0x12, 0x35, 0xc5, 0xd9, 0xc9, 0x5a, 0x3a, 0x3b, 0xf9, 0x0a, 0x6e, 0x4c, 0x6f, 0xb3, - 0x3c, 0x4b, 0xd1, 0xae, 0x9f, 0xa5, 0x6c, 0xba, 0xb3, 0xe2, 0xf0, 0x17, 0xa0, 0xda, 0x2e, 0xad, - 0xad, 0xcf, 0xe5, 0x1c, 0xf1, 0x3a, 0xc6, 0x6c, 0x30, 0xda, 0x82, 0x22, 0xfb, 0x58, 0xc7, 0xae, - 0x21, 0x11, 0x7a, 0x5e, 0x79, 0x27, 0x1d, 0x1b, 0x7d, 0x07, 0xca, 0xec, 0xfb, 0xa9, 0x6f, 0x5a, - 0xa4, 0xb6, 0xc1, 0x5b, 0x26, 0x0c, 0x66, 0x28, 0xd7, 0xb3, 0x89, 0x50, 0xd1, 0xa6, 0x30, 0x14, - 0x63, 0x70, 0x1d, 0xdd, 0x84, 0x65, 0xde, 0xe8, 0xd8, 0xb5, 0x2d, 0x71, 0x00, 0x61, 0x64, 0xc7, - 0x46, 0x3a, 0xac, 0xfa, 0x66, 0x40, 0xdc, 0xd0, 0x90, 0x33, 0xde, 0xe0, 0xcd, 0x15, 0xc1, 0x7c, - 0xc2, 0xe6, 0xad, 0x7f, 0x02, 0xa5, 0x68, 0x31, 0xcc, 0x13, 0x26, 0xeb, 0x0f, 0xa0, 0x9a, 0x5e, - 0x4a, 0x73, 0x05, 0xd9, 0x7f, 0xce, 0x41, 0x39, 0x5e, 0x34, 0xc8, 0x85, 0x0d, 0x6e, 0x54, 0x96, - 0xa9, 0x1a, 0x93, 0x35, 0x28, 0xf2, 0xe3, 0xcf, 0x32, 0xaa, 0xb9, 0x19, 0x21, 0xc8, 0x83, 0xba, - 0x5c, 0x90, 0x28, 0x46, 0x9e, 0xcc, 0xf7, 0x25, 0xac, 0x0d, 0x1d, 0x77, 0x7c, 0x91, 0x98, 0x4b, - 0x24, 0xb6, 0xbf, 0x9f, 0x71, 0xae, 0x7d, 0x36, 0x7a, 0x32, 0x47, 0x75, 0x98, 0xa2, 0xd1, 0x1e, - 0x14, 0x7c, 0x2f, 0x08, 0xa3, 0x3d, 0x33, 0xeb, 0x6e, 0x76, 0xe4, 0x05, 0xe1, 0x81, 0xe9, 0xfb, - 0xec, 0xec, 0x26, 0x00, 0xf4, 0xaf, 0x73, 0x70, 0x63, 0xf6, 0x87, 0xa1, 0x2e, 0xa8, 0x96, 0x3f, - 0x96, 0x4a, 0x7a, 0x30, 0xaf, 0x92, 0x5a, 0xfe, 0x78, 0x22, 0x3f, 0x03, 0x42, 0xcf, 0xa0, 0x38, - 0x22, 0x23, 0x2f, 0xb8, 0x94, 0xba, 0x78, 0x38, 0x2f, 0xe4, 0x01, 0x1f, 0x3d, 0x41, 0x95, 0x70, - 0x08, 0x43, 0x49, 0x2e, 0x26, 0x2a, 0xc3, 0xf6, 0x9c, 0xb7, 0x6b, 0x11, 0x24, 0x8e, 0x71, 0xf4, - 0x4f, 0x60, 0x6b, 0xe6, 0xa7, 0xa0, 0xdf, 0x02, 0xb0, 0xfc, 0xb1, 0xc1, 0x5f, 0x3f, 0x84, 0x07, - 0xa9, 0xb8, 0x6c, 0xf9, 0xe3, 0x1e, 0x67, 0xe8, 0x2f, 0xa0, 0xf6, 0x26, 0x79, 0xd9, 0x1a, 0x13, - 0x12, 0x1b, 0xa3, 0x13, 0xae, 0x03, 0x15, 0x97, 0x04, 0xe3, 0xe0, 0x84, 0x2d, 0xa5, 0xa8, 0xd1, - 0xbc, 0x60, 0x1d, 0x54, 0xde, 0xa1, 0x22, 0x3b, 0x98, 0x17, 0x07, 0x27, 0xfa, 0x2f, 0x73, 0xb0, - 0x76, 0x45, 0x64, 0x76, 0x82, 0x15, 0x01, 0x38, 0xba, 0x1b, 0x10, 0x14, 0x8b, 0xc6, 0x96, 0x63, - 0x47, 0xb7, 0xca, 0xfc, 0x3f, 0xdf, 0x87, 0x7d, 0x79, 0xe3, 0x9b, 0x73, 0x7c, 0xb6, 0x7c, 0x46, - 0x27, 0x4e, 0x48, 0x79, 0x52, 0x54, 0xc0, 0x82, 0x40, 0xcf, 0xa1, 0x1a, 0x10, 0xbe, 0xff, 0xdb, - 0x86, 0xf0, 0xb2, 0xc2, 0x5c, 0x5e, 0x26, 0x25, 0x64, 0xce, 0x86, 0x57, 0x23, 0x24, 0x46, 0x51, - 0xf4, 0x0c, 0x56, 0xa3, 0xc4, 0x59, 0x20, 0x17, 0x17, 0x46, 0x5e, 0x91, 0x40, 0x1c, 0x58, 0xbf, - 0x07, 0x95, 0x44, 0x23, 0xfb, 0x30, 0x9e, 0xfd, 0x49, 0x9d, 0x08, 0x22, 0x1d, 0x2d, 0x0a, 0x32, - 0x5a, 0xe8, 0x27, 0x50, 0x49, 0xac, 0x8b, 0x79, 0x86, 0x32, 0x7d, 0x86, 0x1e, 0xd7, 0x67, 0x01, - 0xe7, 0x42, 0x8f, 0xc5, 0x49, 0x96, 0x79, 0x19, 0x8e, 0xcf, 0x35, 0x5a, 0xc6, 0x45, 0x46, 0x76, - 0x7c, 0xfd, 0xd7, 0x39, 0xa8, 0xa6, 0x97, 0x74, 0xe4, 0x47, 0x3e, 0x09, 0x1c, 0xcf, 0x4e, 0xf8, - 0xd1, 0x11, 0x67, 0x30, 0x5f, 0x61, 0xcd, 0x5f, 0x8d, 0xbd, 0xd0, 0x8c, 0x7c, 0xc5, 0xf2, 0xc7, - 0x7f, 0xc0, 0xe8, 0x2b, 0x3e, 0xa8, 0x5e, 0xf1, 0x41, 0xf4, 0x21, 0x20, 0xe9, 0x4a, 0x43, 0x67, - 0xe4, 0x84, 0xc6, 0xc9, 0x65, 0x48, 0x84, 0x8d, 0x55, 0xac, 0x89, 0x96, 0x7d, 0xd6, 0xf0, 0x05, - 0xe3, 0x33, 0xc7, 0xf3, 0xbc, 0x91, 0x41, 0x2d, 0x2f, 0x20, 0x86, 0x69, 0xbf, 0xe2, 0x87, 0x37, - 0x15, 0x57, 0x3c, 0x6f, 0xd4, 0x63, 0xbc, 0xa6, 0xfd, 0x8a, 0x6d, 0xc4, 0x96, 0x3f, 0xa6, 0x24, - 0x34, 0xd8, 0x0f, 0xcf, 0x5d, 0xca, 0x18, 0x04, 0xab, 0xe5, 0x8f, 0x29, 0xfa, 0x1e, 0xac, 0x46, - 0x1d, 0xf8, 0x5e, 0x2c, 0x93, 0x80, 0x15, 0xd9, 0x85, 0xf3, 0x90, 0x0e, 0x2b, 0x47, 0x24, 0xb0, - 0x88, 0x1b, 0xf6, 0x1d, 0xeb, 0x8c, 0xf2, 0x23, 0x96, 0x82, 0x53, 0xbc, 0x27, 0xf9, 0xd2, 0xb2, - 0x56, 0xc2, 0xd1, 0x6c, 0x23, 0x32, 0xa2, 0xfa, 0xbf, 0x2a, 0x50, 0xe0, 0x29, 0x0b, 0x53, 0x0a, - 0xdf, 0xee, 0x79, 0x36, 0x20, 0x53, 0x5d, 0xc6, 0xe0, 0xb9, 0xc0, 0x7b, 0x50, 0xe6, 0xca, 0x4f, - 0x9c, 0x30, 0x78, 0x1e, 0xcc, 0x1b, 0xeb, 0x50, 0x0a, 0x88, 0x69, 0x7b, 0xee, 0x30, 0xba, 0x14, - 0x8b, 0x69, 0xf4, 0xbb, 0xa0, 0xf9, 0x81, 0xe7, 0x9b, 0x83, 0xc9, 0x39, 0x5a, 0x9a, 0x6f, 0x2d, - 0xc1, 0xe7, 0x29, 0xfa, 0xf7, 0x60, 0x95, 0x12, 0x11, 0xd9, 0x85, 0x93, 0x14, 0xc4, 0x67, 0x4a, - 0x26, 0x3f, 0x11, 0xe8, 0x5f, 0x41, 0x51, 0x6c, 0x5c, 0xd7, 0x90, 0xf7, 0x23, 0x40, 0x42, 0x91, - 0xcc, 0x41, 0x46, 0x0e, 0xa5, 0x32, 0xcb, 0xe6, 0x2f, 0xbb, 0xa2, 0xe5, 0x68, 0xd2, 0xa0, 0xff, - 0x97, 0x22, 0xf2, 0x6d, 0xf1, 0xe6, 0xc6, 0x12, 0x73, 0xb6, 0x6a, 0xd8, 0x31, 0x56, 0x5c, 0xee, - 0x45, 0x24, 0xea, 0x40, 0x51, 0xa6, 0xd5, 0xb9, 0x45, 0x9f, 0x2c, 0x25, 0x40, 0x74, 0xd5, 0x4f, - 0xe4, 0x45, 0xc7, 0xbc, 0x57, 0xfd, 0x44, 0x5c, 0xf5, 0x13, 0x76, 0x4a, 0x97, 0x09, 0xbf, 0x80, - 0xcb, 0xf3, 0x7c, 0xbf, 0x62, 0xc7, 0xef, 0x29, 0x44, 0xff, 0x1f, 0x25, 0x8e, 0x7b, 0xd1, 0xbb, - 0x07, 0xfa, 0x12, 0x4a, 0x2c, 0x84, 0x18, 0x23, 0xd3, 0x97, 0xaf, 0xf8, 0xad, 0xc5, 0x9e, 0x54, - 0xa2, 0x5d, 0x51, 0xa4, 0xeb, 0xcb, 0xbe, 0xa0, 0x58, 0xfc, 0x64, 0x47, 0xa5, 0x28, 0x7e, 0xb2, - 0xff, 0xe8, 0x03, 0xa8, 0x9a, 0xe3, 0xd0, 0x33, 0x4c, 0xfb, 0x9c, 0x04, 0xa1, 0x43, 0x89, 0xf4, - 0xa5, 0x55, 0xc6, 0x6d, 0x46, 0xcc, 0xfa, 0x7d, 0x58, 0x49, 0x62, 0xbe, 0x2d, 0x6f, 0x29, 0x24, - 0xf3, 0x96, 0x3f, 0x05, 0x98, 0xdc, 0x21, 0x32, 0x1f, 0x21, 0x17, 0x4e, 0x68, 0x58, 0xd1, 0xd9, - 0xbc, 0x80, 0x4b, 0x8c, 0xd1, 0x62, 0xce, 0x98, 0x7e, 0xe0, 0x28, 0x44, 0x0f, 0x1c, 0x2c, 0x3a, - 0xb0, 0x05, 0x7d, 0xe6, 0x0c, 0x87, 0xf1, 0xbd, 0x66, 0xd9, 0xf3, 0x46, 0x4f, 0x39, 0x43, 0xff, - 0x26, 0x27, 0x7c, 0x45, 0x3c, 0x55, 0x65, 0x3a, 0x9b, 0xbd, 0x2b, 0x53, 0xdf, 0x03, 0xa0, 0xa1, - 0x19, 0xb0, 0x24, 0xcc, 0x8c, 0x6e, 0x56, 0xeb, 0x53, 0x2f, 0x24, 0xfd, 0xa8, 0x76, 0x06, 0x97, - 0x65, 0xef, 0x66, 0x88, 0x3e, 0x83, 0x15, 0xcb, 0x1b, 0xf9, 0x43, 0x22, 0x07, 0x17, 0xde, 0x3a, - 0xb8, 0x12, 0xf7, 0x6f, 0x86, 0x89, 0xfb, 0xdc, 0xe2, 0x75, 0xef, 0x73, 0x7f, 0xad, 0x88, 0x17, - 0xb7, 0xe4, 0x83, 0x1f, 0x1a, 0xcc, 0xa8, 0x2a, 0x79, 0xbc, 0xe0, 0xeb, 0xe1, 0xb7, 0x95, 0x94, - 0xd4, 0x3f, 0xcb, 0x52, 0xc3, 0xf1, 0xe6, 0xb4, 0xf8, 0xdf, 0x55, 0x28, 0xc7, 0x8f, 0x6d, 0x53, - 0xb6, 0xff, 0x14, 0xca, 0x71, 0xe1, 0x92, 0x0c, 0x10, 0xdf, 0x6a, 0x9e, 0xb8, 0x33, 0x7a, 0x09, - 0xc8, 0x1c, 0x0c, 0xe2, 0x74, 0xd7, 0x18, 0x53, 0x73, 0x10, 0x3d, 0x75, 0x7e, 0x3a, 0x87, 0x1e, - 0xa2, 0xfd, 0xf1, 0x98, 0x8d, 0xc7, 0x9a, 0x39, 0x18, 0xa4, 0x38, 0xe8, 0xcf, 0x60, 0x2b, 0x3d, - 0x87, 0x71, 0x72, 0x69, 0xf8, 0x8e, 0x2d, 0xef, 0x00, 0xf6, 0xe6, 0x7d, 0x6f, 0x6c, 0xa4, 0xe0, - 0xbf, 0xb8, 0x3c, 0x72, 0x6c, 0xa1, 0x73, 0x14, 0x4c, 0x35, 0xd4, 0xff, 0x02, 0x6e, 0xbe, 0xa1, - 0xfb, 0x0c, 0x1b, 0x74, 0xd3, 0x75, 0x34, 0x8b, 0x2b, 0x21, 0x61, 0xbd, 0x5f, 0x29, 0xe2, 0x59, - 0x34, 0xad, 0x93, 0x66, 0x32, 0x4f, 0xbf, 0x93, 0x71, 0x9e, 0xd6, 0xd1, 0xb1, 0x80, 0xe7, 0xa9, - 0xf9, 0x93, 0x2b, 0xa9, 0x79, 0xd6, 0x84, 0x4c, 0x64, 0xb8, 0x02, 0x48, 0x22, 0xe8, 0xff, 0xa2, - 0x42, 0x29, 0x42, 0xe7, 0x27, 0xf8, 0x4b, 0x1a, 0x92, 0x91, 0x11, 0x5f, 0x2f, 0x2a, 0x18, 0x04, - 0x8b, 0xef, 0xa8, 0xef, 0x41, 0x79, 0x4c, 0x49, 0x20, 0x9a, 0x73, 0xbc, 0xb9, 0xc4, 0x18, 0xbc, - 0xf1, 0x7d, 0xa8, 0x84, 0x5e, 0x68, 0x0e, 0x8d, 0x90, 0xe7, 0x0b, 0xaa, 0x18, 0xcd, 0x59, 0x3c, - 0x5b, 0x40, 0x3f, 0x80, 0xf5, 0xf0, 0x34, 0xf0, 0xc2, 0x70, 0xc8, 0x72, 0x55, 0x9e, 0x39, 0x89, - 0x44, 0x27, 0x8f, 0xb5, 0xb8, 0x41, 0x64, 0x54, 0x94, 0x45, 0xef, 0x49, 0x67, 0xe6, 0xba, 0x3c, - 0x88, 0xe4, 0xf1, 0x6a, 0xcc, 0x65, 0xae, 0xcd, 0x36, 0x4f, 0x5f, 0x64, 0x24, 0x3c, 0x56, 0x28, - 0x38, 0x22, 0x91, 0x01, 0x6b, 0x23, 0x62, 0xd2, 0x71, 0x40, 0x6c, 0xe3, 0xa5, 0x43, 0x86, 0xb6, - 0xb8, 0x78, 0xa9, 0x66, 0x3e, 0x6e, 0x44, 0x6a, 0x69, 0x3c, 0xe2, 0xa3, 0x71, 0x35, 0x82, 0x13, - 0x34, 0xcb, 0x1c, 0xc4, 0x3f, 0xb4, 0x06, 0x95, 0xde, 0xf3, 0x5e, 0xbf, 0x7d, 0x60, 0x1c, 0x1c, - 0xee, 0xb6, 0x65, 0xa9, 0x54, 0xaf, 0x8d, 0x05, 0xa9, 0xb0, 0xf6, 0xfe, 0x61, 0xbf, 0xb9, 0x6f, - 0xf4, 0x3b, 0xad, 0xa7, 0x3d, 0x2d, 0x87, 0xb6, 0x60, 0xbd, 0xbf, 0x87, 0x0f, 0xfb, 0xfd, 0xfd, - 0xf6, 0xae, 0x71, 0xd4, 0xc6, 0x9d, 0xc3, 0xdd, 0x9e, 0xa6, 0x22, 0x04, 0xd5, 0x09, 0xbb, 0xdf, - 0x39, 0x68, 0x6b, 0x79, 0x54, 0x81, 0xe5, 0xa3, 0x36, 0x6e, 0xb5, 0xbb, 0x7d, 0xad, 0xa0, 0xff, - 0x52, 0x85, 0x4a, 0xc2, 0x8a, 0xcc, 0x91, 0x03, 0x2a, 0xce, 0x35, 0x79, 0xcc, 0xfe, 0xf2, 0xa7, - 0x5d, 0xd3, 0x3a, 0x15, 0xd6, 0xc9, 0x63, 0x41, 0xf0, 0xb3, 0x8c, 0x79, 0x91, 0x58, 0xe7, 0x79, - 0x5c, 0x1a, 0x99, 0x17, 0x02, 0xe4, 0xbb, 0xb0, 0x72, 0x46, 0x02, 0x97, 0x0c, 0x65, 0xbb, 0xb0, - 0x48, 0x45, 0xf0, 0x44, 0x97, 0x6d, 0xd0, 0x64, 0x97, 0x09, 0x8c, 0x30, 0x47, 0x55, 0xf0, 0x0f, - 0x22, 0xb0, 0x4d, 0x28, 0x88, 0xe6, 0x65, 0x31, 0x3f, 0x27, 0xd8, 0x36, 0x45, 0x5f, 0x9b, 0x3e, - 0xcf, 0x21, 0xf3, 0x98, 0xff, 0x47, 0x27, 0xd3, 0xf6, 0x29, 0x72, 0xfb, 0xdc, 0x9b, 0xdf, 0x9d, - 0xdf, 0x64, 0xa2, 0xd3, 0xd8, 0x44, 0xcb, 0xa0, 0xe2, 0xa8, 0xbe, 0xa8, 0xd5, 0x6c, 0xed, 0x31, - 0xb3, 0xac, 0x42, 0xf9, 0xa0, 0xf9, 0x53, 0xe3, 0xb8, 0x27, 0x6e, 0xf0, 0x35, 0x58, 0x79, 0xda, - 0xc6, 0xdd, 0xf6, 0xbe, 0xe4, 0xa8, 0x68, 0x13, 0x34, 0xc9, 0x99, 0xf4, 0xcb, 0x33, 0x04, 0xf1, - 0xb7, 0x80, 0x4a, 0x90, 0xef, 0x3d, 0x6b, 0x1e, 0x69, 0x45, 0xfd, 0xbf, 0x73, 0xb0, 0x26, 0xb6, - 0x85, 0xb8, 0x12, 0xe2, 0xcd, 0x2f, 0xc1, 0xc9, 0x5b, 0xac, 0x5c, 0xfa, 0x16, 0x2b, 0x4a, 0x42, - 0xf9, 0xae, 0xae, 0x4e, 0x92, 0x50, 0x7e, 0xb3, 0x93, 0x8a, 0xf8, 0xf9, 0x79, 0x22, 0x7e, 0x0d, - 0x96, 0x47, 0x84, 0xc6, 0x76, 0x2b, 0xe3, 0x88, 0x44, 0x0e, 0x54, 0x4c, 0xd7, 0xf5, 0x42, 0x53, - 0x5c, 0x0d, 0x17, 0xe7, 0xda, 0x0c, 0xaf, 0x7c, 0x71, 0xa3, 0x39, 0x41, 0x12, 0x81, 0x39, 0x89, - 0x5d, 0xff, 0x09, 0x68, 0x57, 0x3b, 0xcc, 0xb3, 0x1d, 0x7e, 0xff, 0x87, 0x93, 0xdd, 0x90, 0xb0, - 0x75, 0x21, 0xdf, 0x54, 0xb4, 0x25, 0x46, 0xe0, 0xe3, 0x6e, 0xb7, 0xd3, 0x7d, 0xac, 0x29, 0x08, - 0xa0, 0xd8, 0xfe, 0x69, 0xa7, 0xdf, 0xde, 0xd5, 0x72, 0x3b, 0xbf, 0x5a, 0x87, 0xa2, 0x10, 0x12, - 0x7d, 0x2d, 0x33, 0x81, 0x64, 0x95, 0x2d, 0xfa, 0xc9, 0xdc, 0x19, 0x75, 0xaa, 0x72, 0xb7, 0xfe, - 0x70, 0xe1, 0xf1, 0xf2, 0x55, 0x73, 0x09, 0xfd, 0x8d, 0x02, 0x2b, 0xa9, 0x17, 0xcd, 0xac, 0x57, - 0xe3, 0x33, 0x8a, 0x7a, 0xeb, 0x3f, 0x5e, 0x68, 0x6c, 0x2c, 0xcb, 0x2f, 0x14, 0xa8, 0x24, 0xca, - 0x59, 0xd1, 0xbd, 0x45, 0x4a, 0x60, 0x85, 0x24, 0xf7, 0x17, 0xaf, 0x9e, 0xd5, 0x97, 0x3e, 0x56, - 0xd0, 0x5f, 0x2b, 0x50, 0x49, 0x14, 0x76, 0x66, 0x16, 0x65, 0xba, 0x0c, 0x35, 0xb3, 0x28, 0xb3, - 0xea, 0x48, 0x97, 0xd0, 0x5f, 0x2a, 0x50, 0x8e, 0x8b, 0x34, 0xd1, 0xdd, 0xf9, 0xcb, 0x3a, 0x85, - 0x10, 0x9f, 0x2e, 0x5a, 0x0f, 0xaa, 0x2f, 0xa1, 0x3f, 0x87, 0x52, 0x54, 0xd1, 0x88, 0xb2, 0xee, - 0x5e, 0x57, 0xca, 0x25, 0xeb, 0x77, 0xe7, 0x1e, 0x97, 0x9c, 0x3e, 0x2a, 0x33, 0xcc, 0x3c, 0xfd, - 0x95, 0x82, 0xc8, 0xfa, 0xdd, 0xb9, 0xc7, 0xc5, 0xd3, 0x33, 0x4f, 0x48, 0x54, 0x23, 0x66, 0xf6, - 0x84, 0xe9, 0x32, 0xc8, 0xcc, 0x9e, 0x30, 0xab, 0xf8, 0x51, 0x08, 0x92, 0xa8, 0x67, 0xcc, 0x2c, - 0xc8, 0x74, 0xcd, 0x64, 0x66, 0x41, 0x66, 0x94, 0x4f, 0xea, 0x4b, 0xe8, 0xe7, 0x4a, 0xf2, 0x5c, - 0x70, 0x77, 0xee, 0xb2, 0xbd, 0x39, 0x5d, 0x72, 0xaa, 0x70, 0x90, 0x2f, 0xd0, 0x9f, 0xcb, 0x5b, - 0x0c, 0x51, 0xf5, 0x87, 0xe6, 0x01, 0x4b, 0x15, 0x0a, 0xd6, 0x3f, 0x59, 0x6c, 0xb3, 0xe1, 0x42, - 0xfc, 0x95, 0x02, 0x30, 0xa9, 0x0f, 0xcc, 0x2c, 0xc4, 0x54, 0x61, 0x62, 0xfd, 0xde, 0x02, 0x23, - 0x93, 0x0b, 0x24, 0xaa, 0x5f, 0xca, 0xbc, 0x40, 0xae, 0xd4, 0x2f, 0x66, 0x5e, 0x20, 0x57, 0x6b, - 0x0f, 0xf5, 0x25, 0xf4, 0x4f, 0x0a, 0xac, 0x4f, 0xd5, 0x4f, 0xa1, 0x87, 0xd7, 0x2c, 0xa1, 0xab, - 0x7f, 0xbe, 0x38, 0x40, 0x24, 0xda, 0xb6, 0xf2, 0xb1, 0x82, 0xfe, 0x56, 0x81, 0xd5, 0x74, 0x5d, - 0x49, 0xe6, 0x5d, 0x6a, 0x46, 0x25, 0x56, 0xfd, 0xc1, 0x62, 0x83, 0x63, 0x6d, 0xfd, 0xbd, 0x02, - 0xd5, 0x74, 0x89, 0x11, 0x7a, 0x30, 0x5f, 0x58, 0xb8, 0x22, 0xd0, 0x67, 0x0b, 0x8e, 0x8e, 0x24, - 0xfa, 0x62, 0xf9, 0x8f, 0x0a, 0x22, 0x7b, 0x2b, 0xf2, 0x9f, 0x1f, 0xfd, 0x26, 0x00, 0x00, 0xff, - 0xff, 0x5b, 0xc7, 0xff, 0xf4, 0x0c, 0x35, 0x00, 0x00, + 0xe4, 0xb4, 0x55, 0x39, 0xa5, 0x72, 0x4f, 0x6d, 0x6a, 0x4f, 0x39, 0xe4, 0x4b, 0xe4, 0x92, 0x5b, + 0xae, 0xa9, 0x7c, 0x80, 0x6c, 0xf5, 0x1f, 0x80, 0x80, 0x48, 0x8f, 0x41, 0xca, 0x27, 0xf2, 0xbd, + 0xee, 0xfe, 0xf5, 0xc3, 0x7b, 0xaf, 0x5f, 0xbf, 0xee, 0x7e, 0xa0, 0xfb, 0xa3, 0xc9, 0xd0, 0x71, + 0xe9, 0x6d, 0x3b, 0x70, 0xce, 0x48, 0x40, 0x6f, 0xfb, 0x81, 0x17, 0x7a, 0x92, 0x6a, 0x72, 0x02, + 0x7d, 0x74, 0x62, 0xd2, 0x13, 0xc7, 0xf2, 0x02, 0xbf, 0xe9, 0x7a, 0x63, 0xd3, 0x6e, 0xca, 0x31, + 0x4d, 0x39, 0x46, 0x74, 0x6b, 0xfc, 0xf6, 0xd0, 0xf3, 0x86, 0x23, 0x22, 0x10, 0x8e, 0x27, 0x2f, + 0x6f, 0xdb, 0x93, 0xc0, 0x0c, 0x1d, 0xcf, 0x95, 0xed, 0x1f, 0x5c, 0x6e, 0x0f, 0x9d, 0x31, 0xa1, + 0xa1, 0x39, 0xf6, 0x65, 0x87, 0x8f, 0x22, 0x59, 0xe8, 0x89, 0x19, 0x10, 0xfb, 0xf6, 0x89, 0x35, + 0xa2, 0x3e, 0xb1, 0xd8, 0xaf, 0xc1, 0xfe, 0xc8, 0x6e, 0x1f, 0x5f, 0xea, 0x46, 0xc3, 0x60, 0x62, + 0x85, 0x91, 0xe4, 0x66, 0x18, 0x06, 0xce, 0xf1, 0x24, 0x24, 0xa2, 0xb7, 0x7e, 0x03, 0xde, 0x1b, + 0x98, 0xf4, 0xb4, 0xed, 0xb9, 0x2f, 0x9d, 0x61, 0xdf, 0x3a, 0x21, 0x63, 0x13, 0x93, 0xaf, 0x27, + 0x84, 0x86, 0xfa, 0x1f, 0x43, 0x7d, 0xb6, 0x89, 0xfa, 0x9e, 0x4b, 0x09, 0xfa, 0x12, 0xf2, 0x6c, + 0xca, 0xba, 0x72, 0x53, 0xb9, 0x55, 0xd9, 0xfe, 0xb8, 0xf9, 0x26, 0x15, 0x08, 0x19, 0x9a, 0x52, + 0xd4, 0x66, 0xdf, 0x27, 0x16, 0xe6, 0x23, 0xf5, 0x2d, 0xb8, 0xd6, 0x36, 0x7d, 0xf3, 0xd8, 0x19, + 0x39, 0xa1, 0x43, 0x68, 0x34, 0xe9, 0x04, 0x36, 0xd3, 0x6c, 0x39, 0xe1, 0x9f, 0x40, 0xd5, 0x4a, + 0xf0, 0xe5, 0xc4, 0x77, 0x9b, 0x99, 0x74, 0xdf, 0xdc, 0xe1, 0x54, 0x0a, 0x38, 0x05, 0xa7, 0x6f, + 0x02, 0x7a, 0xe4, 0xb8, 0x43, 0x12, 0xf8, 0x81, 0xe3, 0x86, 0x91, 0x30, 0xbf, 0x56, 0xe1, 0x5a, + 0x8a, 0x2d, 0x85, 0x79, 0x05, 0x10, 0xeb, 0x91, 0x89, 0xa2, 0xde, 0xaa, 0x6c, 0x3f, 0xc9, 0x28, + 0xca, 0x1c, 0xbc, 0x66, 0x2b, 0x06, 0xeb, 0xb8, 0x61, 0x70, 0x81, 0x13, 0xe8, 0xe8, 0x2b, 0x28, + 0x9e, 0x10, 0x73, 0x14, 0x9e, 0xd4, 0x73, 0x37, 0x95, 0x5b, 0xb5, 0xed, 0x47, 0x57, 0x98, 0x67, + 0x97, 0x03, 0xf5, 0x43, 0x33, 0x24, 0x58, 0xa2, 0xa2, 0x4f, 0x00, 0x89, 0x7f, 0x86, 0x4d, 0xa8, + 0x15, 0x38, 0x3e, 0x73, 0xc9, 0xba, 0x7a, 0x53, 0xb9, 0x55, 0xc6, 0x1b, 0xa2, 0x65, 0x67, 0xda, + 0xd0, 0xf0, 0x61, 0xfd, 0x92, 0xb4, 0x48, 0x03, 0xf5, 0x94, 0x5c, 0x70, 0x8b, 0x94, 0x31, 0xfb, + 0x8b, 0x1e, 0x43, 0xe1, 0xcc, 0x1c, 0x4d, 0x08, 0x17, 0xb9, 0xb2, 0xfd, 0x83, 0xb7, 0xb9, 0x87, + 0x74, 0xd1, 0xa9, 0x1e, 0xb0, 0x18, 0x7f, 0x2f, 0xf7, 0xb9, 0xa2, 0xdf, 0x85, 0x4a, 0x42, 0x6e, + 0x54, 0x03, 0x38, 0xea, 0xed, 0x74, 0x06, 0x9d, 0xf6, 0xa0, 0xb3, 0xa3, 0xad, 0xa0, 0x35, 0x28, + 0x1f, 0xf5, 0x76, 0x3b, 0xad, 0xbd, 0xc1, 0xee, 0x73, 0x4d, 0x41, 0x15, 0x58, 0x8d, 0x88, 0x9c, + 0x7e, 0x0e, 0x08, 0x13, 0xcb, 0x3b, 0x23, 0x01, 0x73, 0x64, 0x69, 0x55, 0xf4, 0x1e, 0xac, 0x86, + 0x26, 0x3d, 0x35, 0x1c, 0x5b, 0xca, 0x5c, 0x64, 0x64, 0xd7, 0x46, 0x5d, 0x28, 0x9e, 0x98, 0xae, + 0x3d, 0x7a, 0xbb, 0xdc, 0x69, 0x55, 0x33, 0xf0, 0x5d, 0x3e, 0x10, 0x4b, 0x00, 0xe6, 0xdd, 0xa9, + 0x99, 0x85, 0x01, 0xf4, 0xe7, 0xa0, 0xf5, 0x43, 0x33, 0x08, 0x93, 0xe2, 0x74, 0x20, 0xcf, 0xe6, + 0x97, 0x1e, 0xbd, 0xc8, 0x9c, 0x62, 0x65, 0x62, 0x3e, 0x5c, 0xff, 0xdf, 0x1c, 0x6c, 0x24, 0xb0, + 0xa5, 0xa7, 0x3e, 0x83, 0x62, 0x40, 0xe8, 0x64, 0x14, 0x72, 0xf8, 0xda, 0xf6, 0x83, 0x8c, 0xf0, + 0x33, 0x48, 0x4d, 0xcc, 0x61, 0xb0, 0x84, 0x43, 0xb7, 0x40, 0x13, 0x23, 0x0c, 0x12, 0x04, 0x5e, + 0x60, 0x8c, 0xe9, 0x90, 0x6b, 0xad, 0x8c, 0x6b, 0x82, 0xdf, 0x61, 0xec, 0x7d, 0x3a, 0x4c, 0x68, + 0x55, 0xbd, 0xa2, 0x56, 0x91, 0x09, 0x9a, 0x4b, 0xc2, 0xd7, 0x5e, 0x70, 0x6a, 0x30, 0xd5, 0x06, + 0x8e, 0x4d, 0xea, 0x79, 0x0e, 0xfa, 0x59, 0x46, 0xd0, 0x9e, 0x18, 0x7e, 0x20, 0x47, 0xe3, 0x75, + 0x37, 0xcd, 0xd0, 0xbf, 0x0f, 0x45, 0xf1, 0xa5, 0xcc, 0x93, 0xfa, 0x47, 0xed, 0x76, 0xa7, 0xdf, + 0xd7, 0x56, 0x50, 0x19, 0x0a, 0xb8, 0x33, 0xc0, 0xcc, 0xc3, 0xca, 0x50, 0x78, 0xd4, 0x1a, 0xb4, + 0xf6, 0xb4, 0x9c, 0xfe, 0x3d, 0x58, 0x7f, 0x66, 0x3a, 0x61, 0x16, 0xe7, 0xd2, 0x3d, 0xd0, 0xa6, + 0x7d, 0xa5, 0x75, 0xba, 0x29, 0xeb, 0x64, 0x57, 0x4d, 0xe7, 0xdc, 0x09, 0x2f, 0xd9, 0x43, 0x03, + 0x95, 0x04, 0x81, 0x34, 0x01, 0xfb, 0xab, 0xbf, 0x86, 0xf5, 0x7e, 0xe8, 0xf9, 0x99, 0x3c, 0xff, + 0x87, 0xb0, 0xca, 0x76, 0x1b, 0x6f, 0x12, 0x4a, 0xd7, 0xbf, 0xd1, 0x14, 0xbb, 0x51, 0x33, 0xda, + 0x8d, 0x9a, 0x3b, 0x72, 0xb7, 0xc2, 0x51, 0x4f, 0x74, 0x1d, 0x8a, 0xd4, 0x19, 0xba, 0xe6, 0x48, + 0x46, 0x0b, 0x49, 0xe9, 0x88, 0x39, 0x79, 0x34, 0xb1, 0x74, 0xfc, 0x36, 0xa0, 0x1d, 0x42, 0xc3, + 0xc0, 0xbb, 0xc8, 0x24, 0xcf, 0x26, 0x14, 0x5e, 0x7a, 0x81, 0x25, 0x16, 0x62, 0x09, 0x0b, 0x82, + 0x2d, 0xaa, 0x14, 0x88, 0xc4, 0xfe, 0x04, 0x50, 0xd7, 0x65, 0x7b, 0x4a, 0x36, 0x43, 0xfc, 0x43, + 0x0e, 0xae, 0xa5, 0xfa, 0x4b, 0x63, 0x2c, 0xbf, 0x0e, 0x59, 0x60, 0x9a, 0x50, 0xb1, 0x0e, 0xd1, + 0x01, 0x14, 0x45, 0x0f, 0xa9, 0xc9, 0x3b, 0x0b, 0x00, 0x89, 0x6d, 0x4a, 0xc2, 0x49, 0x98, 0xb9, + 0x4e, 0xaf, 0xbe, 0x5b, 0xa7, 0x7f, 0x0d, 0x5a, 0xf4, 0x1d, 0xf4, 0xad, 0xb6, 0x79, 0x02, 0xd7, + 0x2c, 0x6f, 0x34, 0x22, 0x16, 0xf3, 0x06, 0xc3, 0x71, 0x43, 0x12, 0x9c, 0x99, 0xa3, 0xb7, 0xfb, + 0x0d, 0x9a, 0x8e, 0xea, 0xca, 0x41, 0xfa, 0x0b, 0xd8, 0x48, 0x4c, 0x2c, 0x0d, 0xf1, 0x08, 0x0a, + 0x94, 0x31, 0xa4, 0x25, 0x3e, 0x5d, 0xd0, 0x12, 0x14, 0x8b, 0xe1, 0xfa, 0x35, 0x01, 0xde, 0x39, + 0x23, 0x6e, 0xfc, 0x59, 0xfa, 0x0e, 0x6c, 0xf4, 0xb9, 0x9b, 0x66, 0xf2, 0xc3, 0xa9, 0x8b, 0xe7, + 0x52, 0x2e, 0xbe, 0x09, 0x28, 0x89, 0x22, 0x1d, 0xf1, 0x02, 0xd6, 0x3b, 0xe7, 0xc4, 0xca, 0x84, + 0x5c, 0x87, 0x55, 0xcb, 0x1b, 0x8f, 0x4d, 0xd7, 0xae, 0xe7, 0x6e, 0xaa, 0xb7, 0xca, 0x38, 0x22, + 0x93, 0x6b, 0x51, 0xcd, 0xba, 0x16, 0xf5, 0xbf, 0x53, 0x40, 0x9b, 0xce, 0x2d, 0x15, 0xc9, 0xa4, + 0x0f, 0x6d, 0x06, 0xc4, 0xe6, 0xae, 0x62, 0x49, 0x49, 0x7e, 0x14, 0x2e, 0x04, 0x9f, 0x04, 0x41, + 0x22, 0x1c, 0xa9, 0x57, 0x0c, 0x47, 0xfa, 0x2e, 0x7c, 0x27, 0x12, 0xa7, 0x1f, 0x06, 0xc4, 0x1c, + 0x3b, 0xee, 0xb0, 0x7b, 0x70, 0xe0, 0x13, 0x21, 0x38, 0x42, 0x90, 0xb7, 0xcd, 0xd0, 0x94, 0x82, + 0xf1, 0xff, 0x6c, 0xd1, 0x5b, 0x23, 0x8f, 0xc6, 0x8b, 0x9e, 0x13, 0xfa, 0x7f, 0xaa, 0x50, 0x9f, + 0x81, 0x8a, 0xd4, 0xfb, 0x02, 0x0a, 0x94, 0x84, 0x13, 0x5f, 0xba, 0x4a, 0x27, 0xb3, 0xc0, 0xf3, + 0xf1, 0x9a, 0x7d, 0x06, 0x86, 0x05, 0x26, 0x1a, 0x42, 0x29, 0x0c, 0x2f, 0x0c, 0xea, 0xfc, 0x34, + 0x4a, 0x08, 0xf6, 0xae, 0x8a, 0x3f, 0x20, 0xc1, 0xd8, 0x71, 0xcd, 0x51, 0xdf, 0xf9, 0x29, 0xc1, + 0xab, 0x61, 0x78, 0xc1, 0xfe, 0xa0, 0xe7, 0xcc, 0xe1, 0x6d, 0xc7, 0x95, 0x6a, 0x6f, 0x2f, 0x3b, + 0x4b, 0x42, 0xc1, 0x58, 0x20, 0x36, 0xf6, 0xa0, 0xc0, 0xbf, 0x69, 0x19, 0x47, 0xd4, 0x40, 0x0d, + 0xc3, 0x0b, 0x2e, 0x54, 0x09, 0xb3, 0xbf, 0x8d, 0xfb, 0x50, 0x4d, 0x7e, 0x01, 0x73, 0xa4, 0x13, + 0xe2, 0x0c, 0x4f, 0x84, 0x83, 0x15, 0xb0, 0xa4, 0x98, 0x25, 0x5f, 0x3b, 0xb6, 0x4c, 0x59, 0x0b, + 0x58, 0x10, 0xfa, 0xbf, 0xe5, 0xe0, 0xc6, 0x1c, 0xcd, 0x48, 0x67, 0x7d, 0x91, 0x72, 0xd6, 0x77, + 0xa4, 0x85, 0xc8, 0xe3, 0x5f, 0xa4, 0x3c, 0xfe, 0x1d, 0x82, 0xb3, 0x65, 0x73, 0x1d, 0x8a, 0xe4, + 0xdc, 0x09, 0x89, 0x2d, 0x55, 0x25, 0xa9, 0xc4, 0x72, 0xca, 0x5f, 0x75, 0x39, 0xed, 0xc3, 0x66, + 0x3b, 0x20, 0x66, 0x48, 0x64, 0x28, 0x8f, 0xfc, 0xff, 0x06, 0x94, 0xcc, 0xd1, 0xc8, 0xb3, 0xa6, + 0x66, 0x5d, 0xe5, 0x74, 0xd7, 0x46, 0x0d, 0x28, 0x9d, 0x78, 0x34, 0x74, 0xcd, 0x31, 0x91, 0xc1, + 0x2b, 0xa6, 0xf5, 0x6f, 0x14, 0xd8, 0xba, 0x84, 0x27, 0xad, 0x70, 0x0c, 0x35, 0x87, 0x7a, 0x23, + 0xfe, 0x81, 0x46, 0xe2, 0x84, 0xf7, 0xa3, 0xc5, 0xb6, 0x9a, 0x6e, 0x84, 0xc1, 0x0f, 0x7c, 0x6b, + 0x4e, 0x92, 0xe4, 0x1e, 0xc7, 0x27, 0xb7, 0xe5, 0x4a, 0x8f, 0x48, 0xfd, 0x1f, 0x15, 0xd8, 0x92, + 0x3b, 0x7c, 0xf6, 0x0f, 0x9d, 0x15, 0x39, 0xf7, 0xae, 0x45, 0xd6, 0xeb, 0x70, 0xfd, 0xb2, 0x5c, + 0x32, 0xe6, 0xff, 0x5f, 0x01, 0xd0, 0xec, 0xe9, 0x12, 0x7d, 0x08, 0x55, 0x4a, 0x5c, 0xdb, 0x10, + 0xfb, 0x85, 0xd8, 0xca, 0x4a, 0xb8, 0xc2, 0x78, 0x62, 0xe3, 0xa0, 0x2c, 0x04, 0x92, 0x73, 0x29, + 0x6d, 0x09, 0xf3, 0xff, 0xe8, 0x04, 0xaa, 0x2f, 0xa9, 0x11, 0xcf, 0xcd, 0x1d, 0xaa, 0x96, 0x39, + 0xac, 0xcd, 0xca, 0xd1, 0x7c, 0xd4, 0x8f, 0xbf, 0x0b, 0x57, 0x5e, 0xd2, 0x98, 0x40, 0x3f, 0x57, + 0xe0, 0xbd, 0x28, 0xad, 0x98, 0xaa, 0x6f, 0xec, 0xd9, 0x84, 0xd6, 0xf3, 0x37, 0xd5, 0x5b, 0xb5, + 0xed, 0xc3, 0x2b, 0xe8, 0x6f, 0x86, 0xb9, 0xef, 0xd9, 0x04, 0x6f, 0xb9, 0x73, 0xb8, 0x14, 0x35, + 0xe1, 0xda, 0x78, 0x42, 0x43, 0x43, 0x78, 0x81, 0x21, 0x3b, 0xd5, 0x0b, 0x5c, 0x2f, 0x1b, 0xac, + 0x29, 0xe5, 0xab, 0xe8, 0x14, 0xd6, 0xc6, 0xde, 0xc4, 0x0d, 0x0d, 0x8b, 0x9f, 0x7f, 0x68, 0xbd, + 0xb8, 0xd0, 0xc1, 0x78, 0x8e, 0x96, 0xf6, 0x19, 0x9c, 0x38, 0x4d, 0x51, 0x5c, 0x1d, 0x27, 0x28, + 0xf4, 0x11, 0x54, 0x03, 0x32, 0xf6, 0x42, 0x62, 0xb0, 0x78, 0x49, 0xeb, 0xab, 0x4c, 0xaa, 0x87, + 0xb9, 0xba, 0x82, 0x2b, 0x82, 0xcf, 0xc2, 0x03, 0x45, 0xbf, 0x07, 0xd7, 0x6d, 0x87, 0x9a, 0xc7, + 0x23, 0x62, 0x8c, 0xbc, 0xa1, 0x31, 0x4d, 0x75, 0xea, 0x25, 0xfe, 0x19, 0x9b, 0xb2, 0x75, 0xcf, + 0x1b, 0xb6, 0xe3, 0x36, 0x3e, 0xea, 0xc2, 0x35, 0xc7, 0x8e, 0x65, 0xb0, 0x2f, 0x1b, 0x79, 0xa6, + 0x6d, 0x4c, 0x28, 0x09, 0x68, 0xbd, 0x2c, 0x47, 0x89, 0xd6, 0x67, 0xb2, 0xf1, 0x88, 0xb5, 0xe9, + 0xf7, 0xa0, 0x92, 0x30, 0x2b, 0x2a, 0x41, 0xbe, 0x77, 0xd0, 0xeb, 0x68, 0x2b, 0x08, 0xa0, 0xd8, + 0xde, 0xc5, 0x07, 0x07, 0x03, 0x71, 0x4a, 0xe9, 0xee, 0xb7, 0x1e, 0x77, 0xb4, 0x1c, 0x63, 0x1f, + 0xf5, 0xfe, 0xb0, 0xd3, 0xdd, 0xd3, 0x54, 0xbd, 0x03, 0xd5, 0xe4, 0xc7, 0x22, 0x04, 0xb5, 0xa3, + 0xde, 0xd3, 0xde, 0xc1, 0xb3, 0x9e, 0xb1, 0x7f, 0x70, 0xd4, 0x1b, 0xb0, 0xb3, 0x4e, 0x0d, 0xa0, + 0xd5, 0x7b, 0x3e, 0xa5, 0xd7, 0xa0, 0xdc, 0x3b, 0x88, 0x48, 0xa5, 0x91, 0xd3, 0x14, 0xfd, 0x3f, + 0x54, 0xd8, 0x9c, 0x67, 0x77, 0x64, 0x43, 0x9e, 0xf9, 0x90, 0x3c, 0x6d, 0xbe, 0x7b, 0x17, 0xe2, + 0xe8, 0x6c, 0xe9, 0xf8, 0xa6, 0xdc, 0x5e, 0xca, 0x98, 0xff, 0x47, 0x06, 0x14, 0x47, 0xe6, 0x31, + 0x19, 0xd1, 0xba, 0xca, 0xef, 0x63, 0x1e, 0x5f, 0x65, 0xee, 0x3d, 0x8e, 0x24, 0x2e, 0x63, 0x24, + 0x2c, 0x1a, 0x40, 0x85, 0x05, 0x50, 0x2a, 0x54, 0x27, 0x63, 0xfa, 0x76, 0xc6, 0x59, 0x76, 0xa7, + 0x23, 0x71, 0x12, 0xa6, 0x71, 0x17, 0x2a, 0x89, 0xc9, 0xe6, 0xdc, 0xa5, 0x6c, 0x26, 0xef, 0x52, + 0xca, 0xc9, 0x8b, 0x91, 0x07, 0xb3, 0x36, 0x60, 0x3a, 0x62, 0x0e, 0xb1, 0x7b, 0xd0, 0x1f, 0x88, + 0x53, 0xeb, 0x63, 0x7c, 0x70, 0x74, 0xa8, 0x29, 0x8c, 0x39, 0x68, 0xf5, 0x9f, 0x6a, 0xb9, 0xd8, + 0x5f, 0x54, 0xbd, 0x0d, 0x95, 0x84, 0x5c, 0xa9, 0x1d, 0x43, 0x49, 0xef, 0x18, 0x2c, 0x66, 0x9b, + 0xb6, 0x1d, 0x10, 0x4a, 0xa5, 0x1c, 0x11, 0xa9, 0xbf, 0x80, 0xf2, 0x4e, 0xaf, 0x2f, 0x21, 0xea, + 0xb0, 0x4a, 0x49, 0xc0, 0xbe, 0x9b, 0xdf, 0x8a, 0x95, 0x71, 0x44, 0x32, 0x70, 0x4a, 0xcc, 0xc0, + 0x3a, 0x21, 0x54, 0xe6, 0x19, 0x31, 0xcd, 0x46, 0x79, 0xfc, 0x76, 0x49, 0xd8, 0xae, 0x8c, 0x23, + 0x52, 0xff, 0xff, 0x12, 0xc0, 0xf4, 0xa6, 0x03, 0xd5, 0x20, 0x17, 0xc7, 0xff, 0x9c, 0x63, 0x33, + 0x3f, 0x48, 0xec, 0x6f, 0xfc, 0x3f, 0xda, 0x86, 0xad, 0x31, 0x1d, 0xfa, 0xa6, 0x75, 0x6a, 0xc8, + 0x0b, 0x0a, 0x11, 0x26, 0x78, 0x2c, 0xad, 0xe2, 0x6b, 0xb2, 0x51, 0x46, 0x01, 0x81, 0xbb, 0x07, + 0x2a, 0x71, 0xcf, 0x78, 0xdc, 0xab, 0x6c, 0xdf, 0x5b, 0xf8, 0x06, 0xa6, 0xd9, 0x71, 0xcf, 0x84, + 0xaf, 0x30, 0x18, 0x64, 0x00, 0xd8, 0xe4, 0xcc, 0xb1, 0x88, 0xc1, 0x40, 0x0b, 0x1c, 0xf4, 0xcb, + 0xc5, 0x41, 0x77, 0x38, 0x46, 0x0c, 0x5d, 0xb6, 0x23, 0x1a, 0xf5, 0xa0, 0x1c, 0x10, 0xea, 0x4d, + 0x02, 0x8b, 0x88, 0xe0, 0x97, 0xfd, 0x90, 0x84, 0xa3, 0x71, 0x78, 0x0a, 0x81, 0x76, 0xa0, 0xc8, + 0x63, 0x1e, 0x8b, 0x6e, 0xea, 0xb7, 0x5e, 0xe7, 0xa6, 0xc1, 0x78, 0x24, 0xc1, 0x72, 0x2c, 0x7a, + 0x0c, 0xab, 0x42, 0x44, 0x5a, 0x2f, 0x71, 0x98, 0x4f, 0xb2, 0x06, 0x64, 0x3e, 0x0a, 0x47, 0xa3, + 0x99, 0x55, 0x59, 0x10, 0xe4, 0x31, 0xb0, 0x8c, 0xf9, 0x7f, 0xf4, 0x3e, 0x94, 0xc5, 0xfe, 0x6f, + 0x3b, 0x41, 0x1d, 0x84, 0x73, 0x72, 0xc6, 0x8e, 0x13, 0xa0, 0x0f, 0xa0, 0x22, 0xf2, 0x3c, 0x83, + 0x47, 0x85, 0x0a, 0x6f, 0x06, 0xc1, 0x3a, 0x64, 0xb1, 0x41, 0x74, 0x20, 0x41, 0x20, 0x3a, 0x54, + 0xe3, 0x0e, 0x24, 0x08, 0x78, 0x87, 0xdf, 0x81, 0x75, 0x9e, 0x1d, 0x0f, 0x03, 0x6f, 0xe2, 0x1b, + 0xdc, 0xa7, 0xd6, 0x78, 0xa7, 0x35, 0xc6, 0x7e, 0xcc, 0xb8, 0x3d, 0xe6, 0x5c, 0x37, 0xa0, 0xf4, + 0xca, 0x3b, 0x16, 0x1d, 0x6a, 0x62, 0x1d, 0xbc, 0xf2, 0x8e, 0xa3, 0xa6, 0x38, 0x43, 0x59, 0x4f, + 0x67, 0x28, 0x5f, 0xc3, 0xf5, 0xd9, 0xad, 0x96, 0x67, 0x2a, 0xda, 0xd5, 0x33, 0x95, 0x4d, 0x77, + 0x5e, 0x1c, 0x7e, 0x08, 0xaa, 0xed, 0xd2, 0xfa, 0xc6, 0x42, 0xce, 0x11, 0xaf, 0x63, 0xcc, 0x06, + 0xa3, 0x2d, 0x28, 0xb2, 0x8f, 0x75, 0xec, 0x3a, 0x12, 0xa1, 0xe7, 0x95, 0x77, 0xdc, 0xb5, 0xd1, + 0x77, 0xa0, 0xcc, 0xbe, 0x9f, 0xfa, 0xa6, 0x45, 0xea, 0xd7, 0x78, 0xcb, 0x94, 0xc1, 0x0c, 0xe5, + 0x7a, 0x36, 0x11, 0x2a, 0xda, 0x14, 0x86, 0x62, 0x0c, 0xae, 0xa3, 0xf7, 0x60, 0x95, 0x37, 0x3a, + 0x76, 0x7d, 0x4b, 0x1c, 0x42, 0x18, 0xd9, 0xb5, 0x91, 0x0e, 0x6b, 0xbe, 0x19, 0x10, 0x37, 0x34, + 0xe4, 0x8c, 0xd7, 0x79, 0x73, 0x45, 0x30, 0x9f, 0xb0, 0x79, 0x1b, 0x9f, 0x41, 0x29, 0x5a, 0x0c, + 0x8b, 0x84, 0xc9, 0xc6, 0x7d, 0xa8, 0xa5, 0x97, 0xd2, 0x42, 0x41, 0xf6, 0x9f, 0x73, 0x50, 0x8e, + 0x17, 0x0d, 0x72, 0xe1, 0x1a, 0x37, 0x2a, 0xcb, 0x56, 0x8d, 0xe9, 0x1a, 0x14, 0x39, 0xf2, 0x17, + 0x19, 0xd5, 0xdc, 0x8a, 0x10, 0xe4, 0x61, 0x5d, 0x2e, 0x48, 0x14, 0x23, 0x4f, 0xe7, 0xfb, 0x0a, + 0xd6, 0x47, 0x8e, 0x3b, 0x39, 0x4f, 0xcc, 0x25, 0x92, 0xdb, 0xdf, 0xcf, 0x38, 0xd7, 0x1e, 0x1b, + 0x3d, 0x9d, 0xa3, 0x36, 0x4a, 0xd1, 0x68, 0x17, 0x0a, 0xbe, 0x17, 0x84, 0xd1, 0x9e, 0x99, 0x75, + 0x37, 0x3b, 0xf4, 0x82, 0x70, 0xdf, 0xf4, 0x7d, 0x76, 0x7e, 0x13, 0x00, 0xfa, 0x37, 0x39, 0xb8, + 0x3e, 0xff, 0xc3, 0x50, 0x0f, 0x54, 0xcb, 0x9f, 0x48, 0x25, 0xdd, 0x5f, 0x54, 0x49, 0x6d, 0x7f, + 0x32, 0x95, 0x9f, 0x01, 0xa1, 0x67, 0x50, 0x1c, 0x93, 0xb1, 0x17, 0x5c, 0x48, 0x5d, 0x3c, 0x58, + 0x14, 0x72, 0x9f, 0x8f, 0x9e, 0xa2, 0x4a, 0x38, 0x84, 0xa1, 0x24, 0x17, 0x13, 0x95, 0x61, 0x7b, + 0xc1, 0x1b, 0xb6, 0x08, 0x12, 0xc7, 0x38, 0xfa, 0x67, 0xb0, 0x35, 0xf7, 0x53, 0xd0, 0x6f, 0x01, + 0x58, 0xfe, 0xc4, 0xe0, 0x2f, 0x20, 0xc2, 0x83, 0x54, 0x5c, 0xb6, 0xfc, 0x49, 0x9f, 0x33, 0xf4, + 0x17, 0x50, 0x7f, 0x93, 0xbc, 0x6c, 0x8d, 0x09, 0x89, 0x8d, 0xf1, 0x31, 0xd7, 0x81, 0x8a, 0x4b, + 0x82, 0xb1, 0x7f, 0xcc, 0x96, 0x52, 0xd4, 0x68, 0x9e, 0xb3, 0x0e, 0x2a, 0xef, 0x50, 0x91, 0x1d, + 0xcc, 0xf3, 0xfd, 0x63, 0xfd, 0x17, 0x39, 0x58, 0xbf, 0x24, 0x32, 0x3b, 0xc5, 0x8a, 0x00, 0x1c, + 0xdd, 0x0f, 0x08, 0x8a, 0x45, 0x63, 0xcb, 0xb1, 0xa3, 0x9b, 0x65, 0xfe, 0x9f, 0xef, 0xc3, 0xbe, + 0xbc, 0xf5, 0xcd, 0x39, 0x3e, 0x5b, 0x3e, 0xe3, 0x63, 0x27, 0xa4, 0x3c, 0x29, 0x2a, 0x60, 0x41, + 0xa0, 0xe7, 0x50, 0x0b, 0x08, 0xdf, 0xff, 0x6d, 0x43, 0x78, 0x59, 0x61, 0x21, 0x2f, 0x93, 0x12, + 0x32, 0x67, 0xc3, 0x6b, 0x11, 0x12, 0xa3, 0x28, 0x7a, 0x06, 0x6b, 0x51, 0xe2, 0x2c, 0x90, 0x8b, + 0x4b, 0x23, 0x57, 0x25, 0x10, 0x07, 0xd6, 0xef, 0x42, 0x25, 0xd1, 0xc8, 0x3e, 0x8c, 0x67, 0x7f, + 0x52, 0x27, 0x82, 0x48, 0x47, 0x8b, 0x82, 0x8c, 0x16, 0xfa, 0x31, 0x54, 0x12, 0xeb, 0x62, 0x91, + 0xa1, 0x4c, 0x9f, 0xa1, 0xc7, 0xf5, 0x59, 0xc0, 0xb9, 0xd0, 0x63, 0x71, 0x92, 0x65, 0x5e, 0x86, + 0xe3, 0x73, 0x8d, 0x96, 0x71, 0x91, 0x91, 0x5d, 0x5f, 0xff, 0x55, 0x0e, 0x6a, 0xe9, 0x25, 0x1d, + 0xf9, 0x91, 0x4f, 0x02, 0xc7, 0xb3, 0x13, 0x7e, 0x74, 0xc8, 0x19, 0xcc, 0x57, 0x58, 0xf3, 0xd7, + 0x13, 0x2f, 0x34, 0x23, 0x5f, 0xb1, 0xfc, 0xc9, 0x1f, 0x30, 0xfa, 0x92, 0x0f, 0xaa, 0x97, 0x7c, + 0x10, 0x7d, 0x0c, 0x48, 0xba, 0xd2, 0xc8, 0x19, 0x3b, 0xa1, 0x71, 0x7c, 0x11, 0x12, 0x61, 0x63, + 0x15, 0x6b, 0xa2, 0x65, 0x8f, 0x35, 0x3c, 0x64, 0x7c, 0xe6, 0x78, 0x9e, 0x37, 0x36, 0xa8, 0xe5, + 0x05, 0xc4, 0x30, 0xed, 0x57, 0xfc, 0x00, 0xa7, 0xe2, 0x8a, 0xe7, 0x8d, 0xfb, 0x8c, 0xd7, 0xb2, + 0x5f, 0xb1, 0x8d, 0xd8, 0xf2, 0x27, 0x94, 0x84, 0x06, 0xfb, 0xe1, 0xb9, 0x4b, 0x19, 0x83, 0x60, + 0xb5, 0xfd, 0x09, 0x45, 0xdf, 0x85, 0xb5, 0xa8, 0x03, 0xdf, 0x8b, 0x65, 0x12, 0x50, 0x95, 0x5d, + 0x38, 0x0f, 0xe9, 0x50, 0x3d, 0x24, 0x81, 0x45, 0xdc, 0x70, 0xe0, 0x58, 0xa7, 0x94, 0x1f, 0xb1, + 0x14, 0x9c, 0xe2, 0x3d, 0xc9, 0x97, 0x56, 0xb5, 0x12, 0x8e, 0x66, 0x1b, 0x93, 0x31, 0xd5, 0xff, + 0x55, 0x81, 0x02, 0x4f, 0x59, 0x98, 0x52, 0xf8, 0x76, 0xcf, 0xb3, 0x01, 0x99, 0xea, 0x32, 0x06, + 0xcf, 0x05, 0xde, 0x87, 0x32, 0x57, 0x7e, 0xe2, 0x84, 0xc1, 0xf3, 0x60, 0xde, 0xd8, 0x80, 0x52, + 0x40, 0x4c, 0xdb, 0x73, 0x47, 0xd1, 0xc5, 0x58, 0x4c, 0xa3, 0xdf, 0x05, 0xcd, 0x0f, 0x3c, 0xdf, + 0x1c, 0x4e, 0xcf, 0xd2, 0xd2, 0x7c, 0xeb, 0x09, 0x3e, 0x4f, 0xd1, 0xbf, 0x0b, 0x6b, 0x94, 0x88, + 0xc8, 0x2e, 0x9c, 0xa4, 0x20, 0x3e, 0x53, 0x32, 0xf9, 0x89, 0x40, 0xff, 0x1a, 0x8a, 0x62, 0xe3, + 0xba, 0x82, 0xbc, 0x9f, 0x00, 0x12, 0x8a, 0x64, 0x0e, 0x32, 0x76, 0x28, 0x95, 0x59, 0x36, 0x7f, + 0xdd, 0x15, 0x2d, 0x87, 0xd3, 0x06, 0xfd, 0xbf, 0x14, 0x91, 0x6f, 0x8b, 0x77, 0x37, 0x96, 0x98, + 0xb3, 0x55, 0xc3, 0x8e, 0xb1, 0xe2, 0x82, 0x2f, 0x22, 0x51, 0x17, 0x8a, 0x32, 0xad, 0xce, 0x2d, + 0xfb, 0x6c, 0x29, 0x01, 0xa2, 0xeb, 0x7e, 0x22, 0x2f, 0x3b, 0x16, 0xbd, 0xee, 0x27, 0xe2, 0xba, + 0x9f, 0xa0, 0x0f, 0xa1, 0x2a, 0x13, 0x7e, 0x01, 0x97, 0xe7, 0xf9, 0x7e, 0xc5, 0x8e, 0xdf, 0x54, + 0x88, 0xfe, 0x3f, 0x4a, 0x1c, 0xf7, 0xa2, 0xb7, 0x0f, 0xf4, 0x15, 0x94, 0x58, 0x08, 0x31, 0xc6, + 0xa6, 0x2f, 0x5f, 0xf2, 0xdb, 0xcb, 0x3d, 0xab, 0x44, 0xbb, 0xa2, 0x48, 0xd7, 0x57, 0x7d, 0x41, + 0xb1, 0xf8, 0xc9, 0x8e, 0x4a, 0x51, 0xfc, 0x64, 0xff, 0xd1, 0x47, 0x50, 0x33, 0x27, 0xa1, 0x67, + 0x98, 0xf6, 0x19, 0x09, 0x42, 0x87, 0x12, 0xe9, 0x4b, 0x6b, 0x8c, 0xdb, 0x8a, 0x98, 0x8d, 0x7b, + 0x50, 0x4d, 0x62, 0xbe, 0x2d, 0x6f, 0x29, 0x24, 0xf3, 0x96, 0x3f, 0x05, 0x98, 0xde, 0x23, 0x32, + 0x1f, 0x21, 0xe7, 0x4e, 0x68, 0x58, 0xd1, 0xd9, 0xbc, 0x80, 0x4b, 0x8c, 0xd1, 0x66, 0xce, 0x98, + 0x7e, 0xe4, 0x28, 0x44, 0x8f, 0x1c, 0x2c, 0x3a, 0xb0, 0x05, 0x7d, 0xea, 0x8c, 0x46, 0xf1, 0xdd, + 0x66, 0xd9, 0xf3, 0xc6, 0x4f, 0x39, 0x43, 0xff, 0x75, 0x4e, 0xf8, 0x8a, 0x78, 0xae, 0xca, 0x74, + 0x36, 0x7b, 0x57, 0xa6, 0xbe, 0x0b, 0x40, 0x43, 0x33, 0x60, 0x49, 0x98, 0x19, 0xdd, 0xae, 0x36, + 0x66, 0x5e, 0x49, 0x06, 0x51, 0xfd, 0x0c, 0x2e, 0xcb, 0xde, 0xad, 0x10, 0x7d, 0x01, 0x55, 0xcb, + 0x1b, 0xfb, 0x23, 0x22, 0x07, 0x17, 0xde, 0x3a, 0xb8, 0x12, 0xf7, 0x6f, 0x85, 0x89, 0x3b, 0xdd, + 0xe2, 0x55, 0xef, 0x74, 0x7f, 0xa5, 0x88, 0x57, 0xb7, 0xe4, 0xa3, 0x1f, 0x1a, 0xce, 0xa9, 0x2c, + 0x79, 0xbc, 0xe4, 0x0b, 0xe2, 0xb7, 0x95, 0x95, 0x34, 0xbe, 0xc8, 0x52, 0xc7, 0xf1, 0xe6, 0xb4, + 0xf8, 0xdf, 0x55, 0x28, 0xc7, 0x0f, 0x6e, 0x33, 0xb6, 0xff, 0x1c, 0xca, 0x71, 0xf1, 0x92, 0x0c, + 0x10, 0xdf, 0x6a, 0x9e, 0xb8, 0x33, 0x7a, 0x09, 0xc8, 0x1c, 0x0e, 0xe3, 0x74, 0xd7, 0x98, 0x50, + 0x73, 0x18, 0x3d, 0x77, 0x7e, 0xbe, 0x80, 0x1e, 0xa2, 0xfd, 0xf1, 0x88, 0x8d, 0xc7, 0x9a, 0x39, + 0x1c, 0xa6, 0x38, 0xe8, 0xcf, 0x60, 0x2b, 0x3d, 0x87, 0x71, 0x7c, 0x61, 0xf8, 0x8e, 0x2d, 0xef, + 0x00, 0x76, 0x17, 0x7d, 0x73, 0x6c, 0xa6, 0xe0, 0x1f, 0x5e, 0x1c, 0x3a, 0xb6, 0xd0, 0x39, 0x0a, + 0x66, 0x1a, 0x1a, 0x7f, 0x01, 0xef, 0xbd, 0xa1, 0xfb, 0x1c, 0x1b, 0xf4, 0xd2, 0xb5, 0x34, 0xcb, + 0x2b, 0x21, 0x61, 0xbd, 0x5f, 0x2a, 0xe2, 0x69, 0x34, 0xad, 0x93, 0x56, 0x32, 0x4f, 0xbf, 0x9d, + 0x71, 0x9e, 0xf6, 0xe1, 0x91, 0x80, 0xe7, 0xa9, 0xf9, 0x93, 0x4b, 0xa9, 0x79, 0xd6, 0x84, 0x4c, + 0x64, 0xb8, 0x02, 0x48, 0x22, 0xe8, 0xff, 0xa2, 0x42, 0x29, 0x42, 0xe7, 0x27, 0xf8, 0x0b, 0x1a, + 0x92, 0xb1, 0x11, 0x5f, 0x2f, 0x2a, 0x18, 0x04, 0x8b, 0xef, 0xa8, 0xef, 0x43, 0x79, 0x42, 0x49, + 0x20, 0x9a, 0x73, 0xbc, 0xb9, 0xc4, 0x18, 0xbc, 0xf1, 0x03, 0xa8, 0x84, 0x5e, 0x68, 0x8e, 0x8c, + 0x90, 0xe7, 0x0b, 0xaa, 0x18, 0xcd, 0x59, 0x3c, 0x5b, 0x40, 0xdf, 0x87, 0x8d, 0xf0, 0x24, 0xf0, + 0xc2, 0x70, 0xc4, 0x72, 0x55, 0x9e, 0x39, 0x89, 0x44, 0x27, 0x8f, 0xb5, 0xb8, 0x41, 0x64, 0x54, + 0x94, 0x45, 0xef, 0x69, 0x67, 0xe6, 0xba, 0x3c, 0x88, 0xe4, 0xf1, 0x5a, 0xcc, 0x65, 0xae, 0xcd, + 0x36, 0x4f, 0x5f, 0x64, 0x24, 0x3c, 0x56, 0x28, 0x38, 0x22, 0x91, 0x01, 0xeb, 0x63, 0x62, 0xd2, + 0x49, 0x40, 0x6c, 0xe3, 0xa5, 0x43, 0x46, 0xb6, 0xb8, 0x78, 0xa9, 0x65, 0x3e, 0x6e, 0x44, 0x6a, + 0x69, 0x3e, 0xe2, 0xa3, 0x71, 0x2d, 0x82, 0x13, 0x34, 0xcb, 0x1c, 0xc4, 0x3f, 0xb4, 0x0e, 0x95, + 0xfe, 0xf3, 0xfe, 0xa0, 0xb3, 0x6f, 0xec, 0x1f, 0xec, 0x74, 0x64, 0xb9, 0x54, 0xbf, 0x83, 0x05, + 0xa9, 0xb0, 0xf6, 0xc1, 0xc1, 0xa0, 0xb5, 0x67, 0x0c, 0xba, 0xed, 0xa7, 0x7d, 0x2d, 0x87, 0xb6, + 0x60, 0x63, 0xb0, 0x8b, 0x0f, 0x06, 0x83, 0xbd, 0xce, 0x8e, 0x71, 0xd8, 0xc1, 0xdd, 0x83, 0x9d, + 0xbe, 0xa6, 0x22, 0x04, 0xb5, 0x29, 0x7b, 0xd0, 0xdd, 0xef, 0x68, 0x79, 0x54, 0x81, 0xd5, 0xc3, + 0x0e, 0x6e, 0x77, 0x7a, 0x03, 0xad, 0xa0, 0xff, 0x42, 0x85, 0x4a, 0xc2, 0x8a, 0xcc, 0x91, 0x03, + 0x2a, 0xce, 0x35, 0x79, 0xcc, 0xfe, 0xf2, 0xe7, 0x5d, 0xd3, 0x3a, 0x11, 0xd6, 0xc9, 0x63, 0x41, + 0xf0, 0xb3, 0x8c, 0x79, 0x9e, 0x58, 0xe7, 0x79, 0x5c, 0x1a, 0x9b, 0xe7, 0x02, 0xe4, 0x43, 0xa8, + 0x9e, 0x92, 0xc0, 0x25, 0x23, 0xd9, 0x2e, 0x2c, 0x52, 0x11, 0x3c, 0xd1, 0xe5, 0x16, 0x68, 0xb2, + 0xcb, 0x14, 0x46, 0x98, 0xa3, 0x26, 0xf8, 0xfb, 0x11, 0xd8, 0x26, 0x14, 0x44, 0xf3, 0xaa, 0x98, + 0x9f, 0x13, 0x6c, 0x9b, 0xa2, 0xaf, 0x4d, 0x9f, 0xe7, 0x90, 0x79, 0xcc, 0xff, 0xa3, 0xe3, 0x59, + 0xfb, 0x14, 0xb9, 0x7d, 0xee, 0x2e, 0xee, 0xce, 0x6f, 0x32, 0xd1, 0x49, 0x6c, 0xa2, 0x55, 0x50, + 0x71, 0x54, 0x63, 0xd4, 0x6e, 0xb5, 0x77, 0x99, 0x59, 0xd6, 0xa0, 0xbc, 0xdf, 0xfa, 0x89, 0x71, + 0xd4, 0x17, 0x37, 0xf8, 0x1a, 0x54, 0x9f, 0x76, 0x70, 0xaf, 0xb3, 0x27, 0x39, 0x2a, 0xda, 0x04, + 0x4d, 0x72, 0xa6, 0xfd, 0xf2, 0x0c, 0x41, 0xfc, 0x2d, 0xa0, 0x12, 0xe4, 0xfb, 0xcf, 0x5a, 0x87, + 0x5a, 0x51, 0xff, 0xef, 0x1c, 0xac, 0x8b, 0x6d, 0x21, 0xae, 0x86, 0x78, 0xf3, 0x6b, 0x70, 0xf2, + 0x16, 0x2b, 0x97, 0xbe, 0xc5, 0x8a, 0x92, 0x50, 0xbe, 0xab, 0xab, 0xd3, 0x24, 0x94, 0xdf, 0xec, + 0xa4, 0x22, 0x7e, 0x7e, 0x91, 0x88, 0x5f, 0x87, 0xd5, 0x31, 0xa1, 0xb1, 0xdd, 0xca, 0x38, 0x22, + 0x91, 0x03, 0x15, 0xd3, 0x75, 0xbd, 0xd0, 0x14, 0x57, 0xc3, 0xc5, 0x85, 0x36, 0xc3, 0x4b, 0x5f, + 0xdc, 0x6c, 0x4d, 0x91, 0x44, 0x60, 0x4e, 0x62, 0x37, 0x7e, 0x0c, 0xda, 0xe5, 0x0e, 0x8b, 0x6c, + 0x87, 0xdf, 0xfb, 0xc1, 0x74, 0x37, 0x24, 0x6c, 0x5d, 0xc8, 0x37, 0x15, 0x6d, 0x85, 0x11, 0xf8, + 0xa8, 0xd7, 0xeb, 0xf6, 0x1e, 0x6b, 0x0a, 0x02, 0x28, 0x76, 0x7e, 0xd2, 0x1d, 0x74, 0x76, 0xb4, + 0xdc, 0xf6, 0x2f, 0x37, 0xa0, 0x28, 0x84, 0x44, 0xdf, 0xc8, 0x4c, 0x20, 0x59, 0x69, 0x8b, 0x7e, + 0xbc, 0x70, 0x46, 0x9d, 0xaa, 0xde, 0x6d, 0x3c, 0x58, 0x7a, 0xbc, 0x7c, 0xd9, 0x5c, 0x41, 0x7f, + 0xa3, 0x40, 0x35, 0xf5, 0xaa, 0x99, 0xf5, 0x6a, 0x7c, 0x4e, 0x61, 0x6f, 0xe3, 0x47, 0x4b, 0x8d, + 0x8d, 0x65, 0xf9, 0xb9, 0x02, 0x95, 0x44, 0x49, 0x2b, 0xba, 0xbb, 0x4c, 0x19, 0xac, 0x90, 0xe4, + 0xde, 0xf2, 0x15, 0xb4, 0xfa, 0xca, 0xa7, 0x0a, 0xfa, 0x6b, 0x05, 0x2a, 0x89, 0xe2, 0xce, 0xcc, + 0xa2, 0xcc, 0x96, 0xa2, 0x66, 0x16, 0x65, 0x5e, 0x2d, 0xe9, 0x0a, 0xfa, 0x4b, 0x05, 0xca, 0x71, + 0xa1, 0x26, 0xba, 0xb3, 0x78, 0x69, 0xa7, 0x10, 0xe2, 0xf3, 0x65, 0x6b, 0x42, 0xf5, 0x15, 0xf4, + 0xe7, 0x50, 0x8a, 0xaa, 0x1a, 0x51, 0xd6, 0xdd, 0xeb, 0x52, 0xc9, 0x64, 0xe3, 0xce, 0xc2, 0xe3, + 0x92, 0xd3, 0x47, 0xa5, 0x86, 0x99, 0xa7, 0xbf, 0x54, 0x14, 0xd9, 0xb8, 0xb3, 0xf0, 0xb8, 0x78, + 0x7a, 0xe6, 0x09, 0x89, 0x8a, 0xc4, 0xcc, 0x9e, 0x30, 0x5b, 0x0a, 0x99, 0xd9, 0x13, 0xe6, 0x15, + 0x40, 0x0a, 0x41, 0x12, 0x35, 0x8d, 0x99, 0x05, 0x99, 0xad, 0x9b, 0xcc, 0x2c, 0xc8, 0x9c, 0x12, + 0x4a, 0x7d, 0x05, 0xfd, 0x4c, 0x49, 0x9e, 0x0b, 0xee, 0x2c, 0x5c, 0xba, 0xb7, 0xa0, 0x4b, 0xce, + 0x14, 0x0f, 0xf2, 0x05, 0xfa, 0x33, 0x79, 0x8b, 0x21, 0x2a, 0xff, 0xd0, 0x22, 0x60, 0xa9, 0x62, + 0xc1, 0xc6, 0x67, 0xcb, 0x6d, 0x36, 0x5c, 0x88, 0xbf, 0x52, 0x00, 0xa6, 0x35, 0x82, 0x99, 0x85, + 0x98, 0x29, 0x4e, 0x6c, 0xdc, 0x5d, 0x62, 0x64, 0x72, 0x81, 0x44, 0x35, 0x4c, 0x99, 0x17, 0xc8, + 0xa5, 0x1a, 0xc6, 0xcc, 0x0b, 0xe4, 0x72, 0xfd, 0xa1, 0xbe, 0x82, 0xfe, 0x49, 0x81, 0x8d, 0x99, + 0x1a, 0x2a, 0xf4, 0xe0, 0x8a, 0x65, 0x74, 0x8d, 0x2f, 0x97, 0x07, 0x88, 0x44, 0xbb, 0xa5, 0x7c, + 0xaa, 0xa0, 0xbf, 0x55, 0x60, 0x2d, 0x5d, 0x5b, 0x92, 0x79, 0x97, 0x9a, 0x53, 0x8d, 0xd5, 0xb8, + 0xbf, 0xdc, 0xe0, 0x58, 0x5b, 0x7f, 0xaf, 0x40, 0x2d, 0x5d, 0x66, 0x84, 0xee, 0x2f, 0x16, 0x16, + 0x2e, 0x09, 0xf4, 0xc5, 0x92, 0xa3, 0x23, 0x89, 0x1e, 0xae, 0xfe, 0x51, 0x41, 0x64, 0x6f, 0x45, + 0xfe, 0xf3, 0xc3, 0xdf, 0x04, 0x00, 0x00, 0xff, 0xff, 0x51, 0x2f, 0x79, 0xbc, 0x10, 0x35, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/plugins/drivers/proto/driver.proto b/plugins/drivers/proto/driver.proto index b49fcc383..707aeee94 100644 --- a/plugins/drivers/proto/driver.proto +++ b/plugins/drivers/proto/driver.proto @@ -392,7 +392,7 @@ message DriverCapabilities { // remote_tasks indicates whether the driver executes tasks remotely such // on cloud runtimes like AWS ECS. - bool remote_tasks = 7; + bool remote_tasks = 7 [deprecated=true]; // disable_log_collection indicates whether the driver has the capability of // disabling log collection diff --git a/website/content/api-docs/json-jobs.mdx b/website/content/api-docs/json-jobs.mdx index 6af8f1fe1..8724a4790 100644 --- a/website/content/api-docs/json-jobs.mdx +++ b/website/content/api-docs/json-jobs.mdx @@ -596,7 +596,7 @@ The `Task` object supports the following keys: in a port map. A numeric port may be specified since port maps aren't required by all network plugins. Useful for advertising SDN and overlay network addresses. Task will fail if driver network cannot be - determined. Only implemented for Docker and rkt. + determined. Only implemented for Docker. - `host` - Use the host IP and port. @@ -625,7 +625,7 @@ The `Task` object supports the following keys: supplied, this value takes precedence over the `Service.PortLabel` value. This is useful for services which operate on multiple ports. `http` and `tcp` checks require a port while `script` checks do not. - Checks will use the host IP and ports by default. Numeric ports may be + Checks will use the host IP and ports by default. Numeric ports may be used if `AddressMode: "driver"` is set on the check. - `Header`: Headers for HTTP checks. Should be an object where the values @@ -657,7 +657,7 @@ The `Task` object supports the following keys: checks. - `TLSSkipVerify`: If true, Consul will not attempt to verify the - certificate when performing HTTPS checks. + certificate when performing HTTPS checks. - `CheckRestart`: `CheckRestart` is an object which enables restarting of tasks based upon Consul health checks. @@ -1095,7 +1095,7 @@ creates a convenient way to ship configuration files that are populated from environment variables, Consul data, Vault secrets, or just general configurations within a Nomad task. -Nomad utilizes a tool called [Consul Template][ct]. The template can reference +Nomad utilizes a tool called [Consul Template][ct]. The template can reference [Nomad's runtime environment variables][env]. For a full list of the API template functions, please refer to the [Consul Template README][ct]. diff --git a/website/content/docs/concepts/plugins/task-drivers.mdx b/website/content/docs/concepts/plugins/task-drivers.mdx index aa6c1e8da..4d457ec0e 100644 --- a/website/content/docs/concepts/plugins/task-drivers.mdx +++ b/website/content/docs/concepts/plugins/task-drivers.mdx @@ -7,8 +7,7 @@ description: Learn how to author a Nomad task driver plugin. # Task Drivers Task drivers in Nomad are the runtime components that execute workloads. For -a real world example of a Nomad task driver plugin implementation, see the [LXC -driver source][lxcdriver]. +a real world example of a Nomad task driver plugin implementation, see the [exec2 driver][]. ## Authoring Task Driver Plugins @@ -104,30 +103,6 @@ The network isolation modes are: - `NetIsolationModeNone`: There is no network to isolate. This is used for task that the client manages remotely. -#### Remote Task Drivers - -[Remote Task Drivers][rtd] should set `RemoteTasks` to `true`. Remote Task -Drivers are task driver plugins that execute tasks on a different system than -the Nomad client. This means the tasks lifecycle is distinct from the Nomad -client's. - -For task driver plugin authors there are 2 important new behaviors when -`RemoteTasks` is `true`: - -1. The `TaskHandle` returned by `StartTask` will be propagated to replacement - allocations if the Nomad client is drained or down. Nomad will call - `RecoverTask` instead of `StartTask` for remote tasks in replacement - allocations when a `TaskHandle` has been propagated from the previous - allocation. -2. If the Nomad client managing a remote task is drained or if the allocation - was `lost`, the remote task is sent a special `DETACH` kill signal. This - indicates the plugin should stop managing the remote task, but _not_ stop - it. - -These behaviors are meant to keep remote tasks running even when the Nomad -client managing them is shutdown. Remote tasks are stopped when the job is -explicitly stopped like traditional tasks. - ### `Fingerprint(context.Context) (<-chan *Fingerprint, error)` This function is called by the client when the plugin is started. It allows the @@ -265,15 +240,13 @@ The `ExecTask` function is used by the Nomad client to execute commands inside the task execution context. For example, the Docker driver executes commands inside the running container. `ExecTask` is called for Consul script checks. -[lxcdriver]: https://github.com/hashicorp/nomad-driver-lxc +[exec2 driver]: https://github.com/hashicorp/nomad-driver-exec2 [driverplugin]: https://github.com/hashicorp/nomad/blob/v0.9.0/plugins/drivers/driver.go#L39-L57 [skeletonproject]: https://github.com/hashicorp/nomad-skeleton-driver-plugin [baseplugin]: /nomad/docs/concepts/plugins/base [taskconfig]: https://godoc.org/github.com/hashicorp/nomad/plugins/drivers#TaskConfig [taskhandle]: https://godoc.org/github.com/hashicorp/nomad/plugins/drivers#TaskHandle [fifopackage]: https://godoc.org/github.com/hashicorp/nomad/client/lib/fifo -[rtd]: /nomad/plugins/drivers/remote [landlock]: https://docs.kernel.org/userspace-api/landlock.html [unveil]: https://man.openbsd.org/unveil [users]: /nomad/docs/configuration/client#users-block - diff --git a/website/content/docs/drivers/index.mdx b/website/content/docs/drivers/index.mdx index 894b86210..2ef4feff2 100644 --- a/website/content/docs/drivers/index.mdx +++ b/website/content/docs/drivers/index.mdx @@ -10,12 +10,14 @@ Task drivers are used by Nomad clients to execute a task and provide resource isolation. By having extensible task drivers, Nomad has the flexibility to support a broad set of workloads across all major operating systems. -Task drivers are pluggable. This gives users the flexibility to introduce their -own drivers without having to recompile Nomad. You can view the [plugin block][plugin] -documentation for examples on how to use the `plugin` block in Nomad's client configuration. -See [docker][docker_plugin] for a more detailed and specific example. -Keep in mind that even though all built-in drivers are plugins, Nomad -remains a single binary and maintains backwards compatibility except with the `lxc` driver. +Task drivers are pluggable. This gives you the flexibility to introduce your +own drivers without having to recompile Nomad. You can view the +[plugin block][plugin] documentation for examples on how to use the plugin +block in Nomad's client configuration. See the Docker driver's +[Client Requirements][docker_plugin] for a more detailed and specific example. + +The Nomad binary includes the default task drivers, so you do not have to +download them separately. The list of supported task drivers is provided on the left of this page. Each task driver documents the configuration available in a [job diff --git a/website/content/docs/ecosystem.mdx b/website/content/docs/ecosystem.mdx index acc28cef7..927672bf1 100644 --- a/website/content/docs/ecosystem.mdx +++ b/website/content/docs/ecosystem.mdx @@ -24,7 +24,6 @@ description: Comparison between Nomad and Kubernetes - [Singularity](/nomad/plugins/drivers/community/singularity) - [Firecracker](/nomad/plugins/drivers/community/firecracker-task-driver) - [Podman](/nomad/plugins/drivers/podman) -- [LXC](/nomad/plugins/drivers/community/lxc) ## Application Definition & Image Build diff --git a/website/content/docs/job-specification/task.mdx b/website/content/docs/job-specification/task.mdx index 43b743bd9..8b634940a 100644 --- a/website/content/docs/job-specification/task.mdx +++ b/website/content/docs/job-specification/task.mdx @@ -107,10 +107,9 @@ job "docs" { - `user` `(string: )` - Specifies the user that will run the task. Defaults to `nobody` for the [`exec`][exec] and [`java`][java] drivers. - [Docker][] and [rkt][] images specify their own default users. This can only - be set on Linux platforms, and clients can restrict - [which drivers][user_drivers] are allowed to run tasks as - [certain users][user_denylist]. + [Docker][] images specify their own default users. This can only be set + on Linux platforms, and clients can restrict [which drivers][user_drivers] + are allowed to run tasks as [certain users][user_denylist]. - `template` ([Template][]: nil) - Specifies the set of templates to render for the task. Templates can be used to inject both static and diff --git a/website/content/plugins/devices/nvidia.mdx b/website/content/plugins/devices/nvidia.mdx index d3c1550e2..cd25f7b4a 100644 --- a/website/content/plugins/devices/nvidia.mdx +++ b/website/content/plugins/devices/nvidia.mdx @@ -139,9 +139,7 @@ The Nvidia integration only works with drivers who natively integrate with Nvidia's [container runtime library](https://github.com/NVIDIA/libnvidia-container). -Nomad has tested support with the [`docker` driver][docker-driver]. Support for -[`lxc`][lxc-driver] should be possible by installing the [Nvidia hook][nvidia_hook] -but is not tested or documented by Nomad. +Nomad has tested support with the [`docker` driver][docker-driver]. ## Source Code & Compiled Binaries @@ -279,10 +277,8 @@ Wed Jan 23 18:25:32 2019 [docker-driver]: /nomad/docs/drivers/docker 'Nomad docker Driver' [exec-driver]: /nomad/docs/drivers/exec 'Nomad exec Driver' [java-driver]: /nomad/docs/drivers/java 'Nomad java Driver' -[lxc-driver]: /nomad/plugins/drivers/community/lxc 'Nomad lxc Driver' [`plugin`]: /nomad/docs/configuration/plugin [`plugin_dir`]: /nomad/docs/configuration#plugin_dir -[nvidia_hook]: https://github.com/lxc/lxc/blob/master/hooks/nvidia [nvidia_plugin_download]: https://releases.hashicorp.com/nomad-device-nvidia/ [nvidia_container_toolkit]: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html [source]: https://github.com/hashicorp/nomad-device-nvidia diff --git a/website/content/plugins/drivers/community/index.mdx b/website/content/plugins/drivers/community/index.mdx index ac2f2b39c..478da574c 100644 --- a/website/content/plugins/drivers/community/index.mdx +++ b/website/content/plugins/drivers/community/index.mdx @@ -24,7 +24,6 @@ Below is a list of community-supported task drivers you can use with Nomad: - [Firecracker][firecracker-task-driver] - [Jail task driver][jail-task-driver] - [Lightrun][lightrun] -- [LXC][lxc] - [Pledge][pledge] - [Pot][pot] - [Rookout][rookout] @@ -34,7 +33,6 @@ Below is a list of community-supported task drivers you can use with Nomad: - [Windows IIS][nomad-iis] [rookout]: /nomad/plugins/drivers/community/rookout -[lxc]: /nomad/plugins/drivers/community/lxc [plugin_guide]: /nomad/docs/concepts/plugins [singularity]: /nomad/plugins/drivers/community/singularity [jail-task-driver]: /nomad/plugins/drivers/community/jail-task-driver diff --git a/website/content/plugins/drivers/community/lxc.mdx b/website/content/plugins/drivers/community/lxc.mdx deleted file mode 100644 index cf0055f8d..000000000 --- a/website/content/plugins/drivers/community/lxc.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -layout: docs -page_title: 'Drivers: LXC' -description: The LXC task driver is used to run application containers using LXC. ---- - -# LXC Driver - -Name: `lxc` - -~> **Deprecation Warning!** -The `lxc` driver is currently deprecated. We will not prioritize features or pull requests that affect the lxc driver. The external driver is available as an [open source -repository](https://github.com/hashicorp/nomad-driver-lxc) for community ownership. - - -The `lxc` driver provides an interface for using LXC for running application -containers. You can download the external LXC driver [here][lxc-driver]. For more detailed instructions on how to set up and use this driver, please refer to the [LXC guide][lxc-guide]. - -## Task Configuration - -```hcl -task "busybox" { - driver = "lxc" - - config { - log_level = "trace" - verbosity = "verbose" - template = "/usr/share/lxc/templates/lxc-busybox" - template_args = [] - - # these optional values can be set in the template - distro = "" - release = "" - arch = "" - image_variant = "default" - image_server = "images.linuxcontainers.org" - gpg_key_id = "" - gpg_key_server = "" - disable_gpg = false - flush_cache = false - force_cache = false - } -} -``` - -The `lxc` driver supports the following configuration in the job spec: - -- `template` - The LXC template to run. - - ```hcl - config { - template = "/usr/share/lxc/templates/lxc-alpine" - } - ``` - -- `template_args` - A list of argument strings to pass into the template. - -- `log_level` - (Optional) LXC library's logging level. Defaults to `error`. - Must be one of `trace`, `debug`, `info`, `warn`, or `error`. - - ```hcl - config { - log_level = "debug" - } - ``` - -- `verbosity` - (Optional) Enables extra verbosity in the LXC library's - logging. Defaults to `quiet`. Must be one of `quiet` or `verbose`. - - ```hcl - config { - verbosity = "quiet" - } - ``` - -- `volumes` - (Optional) A list of `host_path:container_path` strings to - bind-mount host paths to container paths. Mounting host paths outside of the - [allocation working directory] is allowed by default. You can prevent - mounting host paths outside of the [allocation working directory] on - individual clients by setting the [`volumes_enabled`](#volumes_enabled) - option to `false` in the client's configuration - - ~> **Note:** Unlike the similar option for the docker driver, this - option must not have an absolute path as the `container_path` - component. This will cause an error when submitting a job. - - Setting this does not affect the standard bind-mounts of `alloc`, - `local`, and `secrets`, which are always created. - - ```hcl - config { - volumes = [ - # Use absolute paths to mount arbitrary paths on the host - "/path/on/host:path/in/container", - - # Use relative paths to rebind paths already in the allocation dir - "relative/to/task:also/in/container" - ] - } - ``` - -- `release` - (Optional) The name/version of the distribution. By default this is set by the template. - -- `arch` - (Optional) The architecture of the container. By default this is set by the template. - -- `image_server` - (Optional) The hostname of the image server. Defaults to `images.linuxcontainers.org`. - -- `image_variant` - (Optional) The variant of the image. Defaults to `default` or as set by the template. - -- `disable_gpg` - (Optional) Disable GPG validation of images. Defaults to `false`, and enabling this flag is not recommended. - -- `flush_cache` - (Optional) Flush the local copy of the image (if present) and force it to be fetched from the image server. Defaults to `false`. - -- `force_cache` - (Optional) Force the use of the local copy even if expired. Defaults to `false`. - -- `gpg_key_server`: GPG key server used for checking image signatures. Default is set by the underlying LXC library. - -- `gpg_key_id`: GPG key ID used for checking image signatures. Default is set by the underlying LXC library. - -## Networking - -Currently the `lxc` driver only supports host networking. See the `none` -networking type in the `lxc.container.conf` [manual][lxc_man] for more -information. - -## Client Requirements - -The `lxc` driver requires the following: - -- 64-bit Linux host -- The `linux_amd64` Nomad binary -- The LXC driver binary placed in the [plugin_dir][plugin_dir] directory. -- `liblxc` to be installed -- `lxc-templates` to be installed - -## Plugin Options - -- `enabled` - The `lxc` driver may be disabled on hosts by setting this option to `false` (defaults to `true`). - -- `volumes_enabled` - Specifies whether host can bind-mount host paths to container paths (defaults to `true`). - -- `lxc_path` - The location in which all containers are stored (commonly defaults to `/var/lib/lxc`). See [`lxc-create`][lxc-create] for more details. - -- `gc` block: - - `container` - Defaults to `true`. This option can be used to disable Nomad - from removing a container when the task exits. Under a name conflict, - Nomad may still remove the dead container. - -An example of using these plugin options with the new [plugin -syntax][plugin] is shown below: - -```hcl -plugin "nomad-driver-lxc" { - config { - enabled = true - volumes_enabled = true - lxc_path = "/var/lib/lxc" - gc { - container = false - } - } -} -``` - -Please note the plugin name should match whatever name you have specified for the external driver in the [plugin_dir][plugin_dir] directory. - -## Client Configuration - --> Only use this section for pre-0.9 releases of Nomad. If you are using Nomad -0.9 or above, please see [plugin options][plugin-options] - -The `lxc` driver has the following [client-level options][client_options]: - -- `lxc.enable` - The `lxc` driver may be disabled on hosts by setting this - option to `false` (defaults to `true`). - -## Client Attributes - -The `lxc` driver will set the following client attributes: - -- `driver.lxc` - Set to `1` if LXC is found and enabled on the host node. -- `driver.lxc.version` - Version of `lxc` e.g.: `1.1.0`. - -## Resource Isolation - -This driver supports CPU and memory isolation via the `lxc` library. Network -isolation is not supported as of now. - -[lxc-create]: https://linuxcontainers.org/lxc/manpages/man1/lxc-create.1.html -[lxc-driver]: https://releases.hashicorp.com/nomad-driver-lxc -[lxc-guide]: /nomad/tutorials/plugins/plugin-lxc -[lxc_man]: https://linuxcontainers.org/lxc/manpages/man5/lxc.container.conf.5.html#lbAM -[plugin]: /nomad/docs/configuration/plugin -[plugin_dir]: /nomad/docs/configuration#plugin_dir -[plugin-options]: #plugin-options -[client_options]: /nomad/docs/configuration/client#options -[allocation working directory]: /nomad/docs/runtime/environment#task-directories 'Task Directories' diff --git a/website/content/plugins/drivers/index.mdx b/website/content/plugins/drivers/index.mdx index bd91c1184..2ef4feff2 100644 --- a/website/content/plugins/drivers/index.mdx +++ b/website/content/plugins/drivers/index.mdx @@ -10,13 +10,14 @@ Task drivers are used by Nomad clients to execute a task and provide resource isolation. By having extensible task drivers, Nomad has the flexibility to support a broad set of workloads across all major operating systems. -Task drivers are pluggable. This gives users the flexibility to introduce their -own drivers without having to recompile Nomad. You can view the [plugin block][plugin] -documentation for examples on how to use the `plugin` block in Nomad's client configuration. -Note that we have introduced new syntax when specifying driver options in the client -configuration (see [docker][docker_plugin] for an example). Keep in mind that even though -all built-in drivers are now plugins, Nomad remains a single binary and maintains -backwards compatibility except with the `lxc` driver. +Task drivers are pluggable. This gives you the flexibility to introduce your +own drivers without having to recompile Nomad. You can view the +[plugin block][plugin] documentation for examples on how to use the plugin +block in Nomad's client configuration. See the Docker driver's +[Client Requirements][docker_plugin] for a more detailed and specific example. + +The Nomad binary includes the default task drivers, so you do not have to +download them separately. The list of supported task drivers is provided on the left of this page. Each task driver documents the configuration available in a [job diff --git a/website/content/plugins/drivers/remote/ecs.mdx b/website/content/plugins/drivers/remote/ecs.mdx deleted file mode 100644 index 12f23ca4c..000000000 --- a/website/content/plugins/drivers/remote/ecs.mdx +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: docs -page_title: 'Task Driver Plugins: ECS Task Driver' -description: >- - The AWS ECS Task Driver is an example Remote Task Driver. ---- - -# ECS Task Driver - -Name: `nomad-driver-ecs` - -Homepage: https://github.com/hashicorp/nomad-driver-ecs - -~> **Deprecation Warning!** -The `ecs` driver is currently deprecated. We will not prioritize features or pull requests that affect the ecs driver. The external driver is available as an [open source -repository](https://github.com/hashicorp/nomad-driver-ecs) for community ownership. - -The ECS task driver plugin for Nomad allows running [AWS ECS][ecs] tasks via -Nomad. Allocations for these jobs are scheduled onto Nomad clients like -traditional task drivers, however the actual task is executed remotely in -AWS ECS. The Nomad client agent manages the remote ECS task like any other -local Nomad task: restarting it if it fails, stopping it when requested, etc. - -When a Nomad node assigned allocations with ECS tasks is drained, the ECS tasks -are *not stopped.* Instead the replacement allocations reconnect to the -original ECS tasks to avoid unnecessary downtime. - -If a Nomad node assigned allocations with ECS tasks crashes and is considered -`down`, the replacement allocations for the `lost` allocations reconnect to the -original ECS tasks to avoid unnecessary downtime. If the original crashed Nomad -node restarts, it will detect `lost` allocations and stop monitoring them since -a new node has taken over. - -## Client Requirements - -The AWS ECS Task Driver is not currently built into Nomad and must be -[downloaded][download] onto the client host in the configured [plugin -directory][plugin_dir]. - -### Plugin Options - -Once the plugin binary is installed, the plugin must be configured in your -Nomad client agent's HCL: - -```hcl -plugin "nomad-driver-ecs" { - config { - enabled = true - - # AWS ECS Cluster to run tasks in - cluster = "nomad-remote-driver-cluster" - - # AWS ECS Region to run tasks in - region = "us-east-1" - } -} -``` - -- `cluster` - The [AWS ECS cluster][cluster] to run tasks in. -- `region` - The [AWS region][region] to run tasks in. - -## Task Configuration - -Nomad ECS tasks must first be defined for the ECS cluster. See the [Nomad ECS -driver demo][demo] task for an example ECS task provisioned by Terraform. - -Once the ECS task is provisioned, Nomad may run it via a job: - -```hcl -job "nomad-ecs-demo" { - datacenters = ["dc1"] - - group "ecs-remote-task-demo" { - restart { - attempts = 0 - mode = "fail" - } - - reschedule { - delay = "5s" - } - - task "http-server" { - driver = "ecs" - kill_timeout = "1m" // increased from default to accommodate ECS. - - config { - task { - launch_type = "FARGATE" - task_definition = "nomad-remote-driver-demo:1" - network_configuration { - aws_vpc_configuration { - assign_public_ip = "ENABLED" - security_groups = ["sg-0d647d4c7ce15034f"] - subnets = ["subnet-010b03f1a021887ff"] - } - } - } - } - } - } -} -``` - -- `config.task` block defines the configuration of the ECS task: - - - `launch_type` - The launch type on which to run your task. - - `task_definition` - The family and revision (`family:revision`) or full ARN - of the task definition to run. - - `network_configuration` - The network configuration for the task (eg - `awsvpc` for `FARGATE` tasks). - - - `aws_vpc_configuration` - The VPC subnets and security groups associated with a task. - - - `assign_public_ip` - Whether the task's elastic network interface receives a public IP address. - - `security_groups` - The security groups associated with the task or service. - - `subnets` - The subnets associated with the task or service. - -[cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html -[ecs]: https://aws.amazon.com/ecs/ -[demo]: https://github.com/hashicorp/nomad-driver-ecs/tree/main/demo -[download]: https://releases.hashicorp.com/nomad-driver-ecs/ -[plugin_dir]: /nomad/docs/configuration#plugin_dir -[region]: https://docs.aws.amazon.com/general/latest/gr/ecs-service.html diff --git a/website/content/plugins/drivers/remote/index.mdx b/website/content/plugins/drivers/remote/index.mdx deleted file mode 100644 index afcc29f7b..000000000 --- a/website/content/plugins/drivers/remote/index.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: docs -page_title: 'Task Driver Plugins: Remote Task Drivers' -description: >- - Remote Task Drivers support cloud and other nonlocal task runtime - environments. ---- - -# Remote Task Drivers - -~> **Note:** Remote Task Driver support is experimental and subject to backward -incompatible changes between Nomad releases or deprecation. Please refer to the -[Upgrade Guide][upgrade] to find breaking changes. - -~> **Known Bugs:** When a Nomad node running a remote task driver goes down, -another node must be available and able to run the replacement allocation in -order to take advantage of remote task driver's ability to avoid restarting -lost tasks. If a new node is not immediately available but started later, -it will start a new instance of the remote task instead of reconnecting to the -old one. Follow [#10592][gh-10592] for the fix. - -Remote Task Drivers allow custom task driver plugins to execute tasks using nonlocal -runtimes such as cloud container runtimes. Without this support, task driver plugins -trying to manage remote tasks would run into the following problems: - -1. When [draining][drain] a node, Nomad stops all allocations on that node - before rescheduling them. - -2. When a node is `down`, Nomad reschedules all allocations onto other nodes. - -These 2 behaviors are optimal for traditional task drivers where the task -process is colocated with the Nomad agent. If the Nomad node is down or -drained, the allocations should be considered down or be drained as well. - -However these 2 behaviors do not apply to tasks executing on remote runtimes. -If the Nomad node managing them goes down, a new Nomad node should be able to -manage them without restarting the task. Likewise if the Nomad node managing -the remote task is drained, a new Nomad node should manage the remote task -without requiring it be stopped and restarted. - -The Remote Task Driver feature improves these behaviors for custom plugins that - advertise the [`RemoteTasks` capability][remote-cap]. - -## Caveats - -Due to the exerpimental nature there are a number of standard Nomad features -which Remote Task Drivers do not support by default. - -### Resources - -~> See [*Remote Task Drivers and Resources* #10549][gh-10549] on Github for -details. Comments, ideas, and use cases welcome! - -The [`resources`][resources] block has not been altered for remote task -drivers. Since remote tasks do not consume local resources, remote task drivers -should not use the existing `resources` block and instead implement their own -resource parameters in their [`task.config`][task-config] block. - -Jobs using remote task drivers should use the minimum allowed resources in -their [`task.resources`][resources] block: - -```hcl -resources { - cpu = 1 - memory = 10 -} -``` - -### Nomad Client Features - -Remote task drivers defer most Nomad client features to the driver plugin. - -Since the allocation directory is local to the Nomad node, unless a remote task -driver is able to remotely mount or copy its contents, the following features -will be unavailable: - -- [`artifact`][artifact] - artifacts are downloaded to the local Nomad - allocation directory. -- [`dispatch_payload`][dispatch-payload] - dispatch payloads are written to the - local Nomad allocation directory. -- [`ephemeral_disk`][ephemeral-disk] - ephemeral disks are local to the Nomad - node and therefore not applicable to remote task drivers. -- [`template`][template] - templates are rendered in the local Nomad allocation - directory. -- [`vault`][vault] - a secret token may be retrieved but the task driver may - not place the token file in the expected location. -- [`volume`][volume] - volume and volue mounts assumed tasks have access to the - Nomad node's local disk are unlikely to work with remote task drivers. - -Furthermore since networking is completely handled by the remote runtime the -behavior of the following features is completely driver dependent: - -- [`network`][network] - group networks are created on the local Nomad node, - and task networks are up to the remote task driver to implement. -- [`connect`][connect] - since group networks and sidecars are local to the - Nomad node, Consul Connect sidecars will not work as expected. - -[artifact]: /nomad/docs/job-specification/artifact -[connect]: /nomad/docs/job-specification/connect -[dispatch-payload]: /nomad/docs/job-specification/dispatch_payload -[drain]: /nomad/docs/commands/node/drain -[ephemeral-disk]: /nomad/docs/job-specification/ephemeral_disk -[gh-10549]: https://github.com/hashicorp/nomad/issues/10549 -[gh-10592]: https://github.com/hashicorp/nomad/issues/10592 -[network]: /nomad/docs/job-specification/network -[remote-cap]: /nomad/docs/concepts/plugins/task-drivers#capabilities-capabilities-error -[resources]: /nomad/docs/job-specification/resources -[task-config]: /nomad/docs/job-specification/task#config -[template]: /nomad/docs/job-specification/template -[upgrade]: /nomad/docs/upgrade/upgrade-specific -[vault]: /nomad/docs/job-specification/vault -[volume]: /nomad/docs/job-specification/volume diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index f49e9eb3d..d4fddf833 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -2004,23 +2004,10 @@ "title": "Lightrun", "href": "/plugins/drivers/community/lightrun" }, - { - "title": "LXC", - "href": "/plugins/drivers/community/lxc" - }, { "title": "Pot", "href": "/plugins/drivers/community/pot" }, - { - "title": "Rkt", - "badge": { - "text": "Deprecated", - "type": "outlined", - "color": "neutral" - }, - "href": "/plugins/drivers/community/rkt" - }, { "title": "Rookout", "href": "/plugins/drivers/community/rookout" @@ -2042,19 +2029,6 @@ "href": "/plugins/drivers/community/nomad-iis" } ] - }, - { - "title": "Remote", - "routes": [ - { - "title": "Overview", - "href": "/plugins/drivers/remote" - }, - { - "title": "ECS", - "href": "/plugins/drivers/remote/ecs" - } - ] } ] }, diff --git a/website/data/plugins-nav-data.json b/website/data/plugins-nav-data.json index 39b05a7f6..60137666a 100644 --- a/website/data/plugins-nav-data.json +++ b/website/data/plugins-nav-data.json @@ -41,15 +41,6 @@ "title": "Lightrun", "path": "drivers/community/lightrun" }, - { - "title": "LXC", - "path": "drivers/community/lxc", - "badge": { - "text": "Deprecated", - "type": "outlined", - "color": "neutral" - } - }, { "title": "Pot", "path": "drivers/community/pot" @@ -75,24 +66,6 @@ "path": "drivers/community/nomad-iis" } ] - }, - { - "title": "Remote", - "routes": [ - { - "title": "Overview", - "path": "drivers/remote" - }, - { - "title": "ECS", - "path": "drivers/remote/ecs", - "badge": { - "text": "Deprecated", - "type": "outlined", - "color": "neutral" - } - } - ] } ] }, diff --git a/website/redirects.js b/website/redirects.js index df95e0082..dc40ee97d 100644 --- a/website/redirects.js +++ b/website/redirects.js @@ -89,4 +89,16 @@ module.exports = [ destination: '/nomad/tools/autoscaling/agent/policy', permanent: true, }, + // permanently remove /plugins/drivers/remote + { + source: '/nomad/plugins/drivers/remote/:slug*', + destination: 'nomad/plugins/drivers/', + permanent: true, + }, + // permanently remove /plugins/drivers/remote + { + source: '/nomad/plugins/drivers/community/lxc', + destination: '/nomad/plugins/drivers/community/', + permanent: true, + }, ]