package RPS::Import::INGroovesBase2013;

use strict;

use Date::Calc qw(Days_in_Month Add_Delta_Days Decode_Month);
use Data::Dumper;

use lib '/app/tools/common/lib';
use Common::Country;

use lib '/app/tools/data_classes/lib';

use lib '/app/tools/rps/lib';
use RPS::File::Sale;
use RPS::Import::Importer;
use base 'RPS::Import::Importer';

# The 2013 INGrooves files uses multiple discriminators to determine the
# RPS service and product/format/media types:
#
# RPS service:
#     $gServiceFormatMap{$retailer}{service}
#
# RPS format type:
#     $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{format}
#
# RPS product type:
#     $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{product_type}
#
# RPS media type:
#     $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{media}
#
my %gServiceFormatMap = (
    '7digital retail sales' => {
        service           => Client::Service::DSP_7DIGITAL,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB716
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB716
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB716
                },
            },
        },
    },
    '7digital stream retail sales' => {
        service   => Client::Service::DSP_7DIGITAL,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3369
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3369
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3369
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3369
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3369
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3369
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
    },
    '9 squared mst retail sales' => {
        service          => Client::Service::DSP_NINESQUARED,
        'ringback tones' => {
            'ringback' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'ringbacks' => {
            'ringback' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
        'ringtones' => {
            'music ringtone' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
            'ringtone' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'amazon retail sales' => {
        service           => Client::Service::DSP_AMAZON,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        }
    },
    'ami_entertainment stream retail sales' => {
        service   => Client::Service::DSP_AMI,
        'streams' => {
            'track' => {
                'audio album' => {    # FB1922
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'amoebamusic retail sales' => {
        service           => Client::Service::DSP_AMOEBA,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB501
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB501
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB501
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB501
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB501
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB501
                },
            },
        },
    },
    'aspiro download retail sales' => {
        service           => Client::Service::DSP_ASPIRO,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5872
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB5872
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5872
                },
            },
        },
    },
    'aspiro retail sales' => {
        service           => Client::Service::DSP_ASPIRO,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'aspiro stream retail sales' => {
        service   => Client::Service::DSP_ASPIRO,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672 & FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672 & FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672 & FB4562
                },
            },
        },
    },
    'att retail sales' => {
        service           => Client::Service::DSP_ATT,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB17209 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'audiojelly retail sales' => {
        service           => Client::Service::DSP_AUDIOJELLY,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'basepoint media retail sales' => {
        service           => Client::Service::DSP_BASEPOINT_MEDIA,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4938
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4938
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4938
                },
            },
        },
    },
    'beat port download retail sales' => {
        service           => Client::Service::DSP_BEATPORT,
        'album downloads' => {
            'album' => {
                'audio album' => {                                                # FB2469
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
    },
    'beat port retail sales' => {
        service           => Client::Service::DSP_BEATPORT,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'beat port int retail sales' => {
        service           => Client::Service::DSP_BEATPORT,
        'album downloads' => {
            'album' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'boomkat retail sales' => {
        service           => Client::Service::DSP_BOOMKAT,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4444
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB4444
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4444
                },
            },
        },
    },
    'clear channel stream retail sales' => {
        service   => Client::Service::DSP_CLEARCHANNEL,
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'createspace burn retail sales' => {
        service => Client::Service::DSP_CREATESPACE,
        ''      => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB1538
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB1538
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1538
                },
            },
        },
        'burn (album)' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4562
                },
            },
        },
    },
    'cricket muve music retail sales' => {
        service           => Client::Service::DSP_CRICKET,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'ringtones' => {
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB17209 (was FORMAT_RINGTONE)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'ringback tones' => {
            'ringback' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'cricket muve music tethered download retail sales' => {
        service => Client::Service::DSP_CRICKET,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB500
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB500
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB500
                },
            },
            'ringback' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB499
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB499
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB499
                },
            },
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB416
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB531
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB531
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB531
                },
            },
        },
        'tethered download' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
                '' => {                                                           # FB1618
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
                '' => {                                                           # FB1618
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'ringback' => {
                'audio album' => {                                                # FB1618
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'tethered download (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
        'tethered download (ringtone)' => {
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
        'tethered download (voice tone)' => {
            'ringback' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
    },
    'deezer retail sales' => {
        service           => Client::Service::DSP_DEEZER,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'deezer stream retail sales' => {
        service   => Client::Service::DSP_DEEZER,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB717
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB717
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB717
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3264
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3264
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3264
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674 & FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674 & FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674 & FB4562
                },
            },
        },
    },
    'deezer free trial interactive stream retail sales' => {
        service                      => Client::Service::DSP_DEEZER,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4762
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4762
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4762
                },
            },
        },
    },
    'deezer interactive stream retail sales' => {
        service                      => Client::Service::DSP_DEEZER,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4762
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4762
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4762
                },
            },
        },
    },
    'djtunes retail sales' => {
        service           => Client::Service::DSP_DJTUNES,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB2950
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2950
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2950
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2950
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2950
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2950
                },
            },
        },
    },
    'dubstoresound retail sales' => {
        service           => Client::Service::DSP_DUBSTORE,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
            },
        },
    },
    'elwatusi retail sales' => {
        service           => Client::Service::DSP_ELWATUSI,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'emusic retail sales' => {
        service           => Client::Service::DSP_EMUSIC,    # FB416
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB1372
                    format       => RPS::File::Sale::FORMAT_VPD,                  # FB1372
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1372
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB416
                    format       => RPS::File::Sale::FORMAT_VPD,                  # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
            },
        },
    },
    'emusic subscription download retail sales' => {
        service           => Client::Service::DSP_EMUSIC,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'fnac retail sales' => {
        service           => Client::Service::DSP_FNAC,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'fun mobility mst retail sales' => {
        service     => Client::Service::DSP_FUNMOBILITY,
        'ringtones' => {
            'ringtone' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'google music retail sales' => {
        service           => Client::Service::DSP_GOOGLE,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'videos' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'google music download retail sales' => {
        service           => Client::Service::DSP_GOOGLE,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
            },
        },
        'download (music video)' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4682
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4682
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
                '' => {                                                           # FB1619
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'videos' => {
            'video' => {
                'music video' => {                                                # FB1968
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'google music stream retail sales' => {
        service   => Client::Service::DSP_GOOGLE,
        'streams' => {
            'album' => {
                'audio album' => {                                                # FB1968
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
                '' => {                                                           # FB1619
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'video' => {
                'music video' => {                                                # FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'streaming (music video)' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4682
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
        '' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4938
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4938
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4938
                },
            },
        },
    },
    'google music interactive stream retail sales' => {                           # FB5426
        service => Client::Service::DSP_GOOGLE,
        ''      => {
            'album' => {
                'audio album' => {                                                # FB5877
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB5877
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5877
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5877
                },
            },
            'video' => {
                'music video' => {                                                # FB5426
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5426
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5426
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB5426
                },
            },
        },
    },
    'groove mobile download retail sales' => {
        service           => Client::Service::DSP_GROOVEMOBILE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
    },
    'groove mobile subscription streaming retail sales' => {
        service   => Client::Service::DSP_GROOVEMOBILE,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
        'subscription streaming (tracks)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4562
                },
            },
        },
    },
    'groove mobile retail sales' => {
        service           => Client::Service::DSP_GROOVEMOBILE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'guvera download retail sales' => {
        service           => Client::Service::DSP_GUVERA,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            },
        },
    },
    'guvera stream retail sales' => {
        service   => Client::Service::DSP_GUVERA,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            },
        },
    },
    'hellojunenet retail sales' => {
        service           => Client::Service::DSP_HELLOJUNENET,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'imimobile retail sales' => {
        service           => Client::Service::DSP_IMIMOBILE,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB416
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'inprodicon retail sales' => {
        service           => Client::Service::DSP_INPRODICON,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {    # FB2112
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'track' => {
                'audio album' => {    # FB2112
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'album' => {
                'audio album' => {    # FB2112
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'itunes a la carte interactive stream retail sales' => {
        service => Client::Service::DSP_ITUNES,
        ''      => {
            'video' => {
                'audio album' => {    # FBoD5159
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {    # FBoD5159
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'itunes retail sales' => {
        service     => Client::Service::DSP_ITUNES,
        'ringtones' => {
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'high quality audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOADPREMIUM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB531
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB531
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB531
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'high quality audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOADPREMIUM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'videos' => {
            'album' => {
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
            'video' => {
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
        '' => {
            'album upgrade' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB716
                    format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,      # FB716
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB716
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4446
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4446
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4446
                },
            },
            'track upgrade' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'user generated ringtone' => {    #FB4444
                'audio album' => {            #FB4444
                    product_type => RPS::File::Sale::TYPE_TRACK,                  #FB4444
                    format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,      #FB4444
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    #FB4444
                },
                'master service tone/ ringback tone' => {                         #FB4444
                    product_type => RPS::File::Sale::TYPE_TRACK,                  #FB4444
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             #FB4444
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    #FB4444
                },
            },
        },
        'download (music video)' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4562
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4571
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4571
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4571
                },
            },
        },
        'download (track upgrade)' => {
            'track upgrade' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4671
                    format       => RPS::File::Sale::FORMAT_DOWNLOADUPGRADE,      # FB4671
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4671
                },
            },
        },
    },
    'itunes download retail sales' => {
        service           => Client::Service::DSP_ITUNES,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2749
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2749
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2749
                },
            },
        },
        'videos' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB3673
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4444
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4444
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4444
                },
            },
        },
        'download (music video)' => {
            'video' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4671
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4671
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4671
                },
            },
        },
    },
    'itunes cloud streaming retail sales' => {
        service   => Client::Service::DSP_ITUNES,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB1504
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB1504
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1504
                },
                'master service tone/ ringback tone' => {                         # FB1606
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {                                                # FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio video bundle' => {                                         # FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {                                                           # FB1606
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'video' => {
                'audio album' => {                                                # FB1606
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {                                                # FB1619
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB2616
                },
                '' => {                                                           # FB1619
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'cloud streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4671
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4671
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4671
                },
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4682
                },
            },
        },
        'cloud streaming (music video)' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4562
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4571
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4571
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4571
                },
            },
        },
    },
    'itunes radio streaming retail sales' => {
        service   => Client::Service::DSP_ITUNES,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2640
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2640
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2640
                },
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2640
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2640
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2640
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2749
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2749
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2749
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB3673
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2749
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2749
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2749
                },
            },
        },
        'radio streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
                'audio video bundle' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4682
                },
            },
        },
    },
    'jamster mst retail sales' => {
        service           => Client::Service::DSP_JAMSTER,
        'track downloads' => {
            'track' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB17209 (was FORMAT_RINGTONE)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'ringtones' => {
            'ringtone' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'jb hi-fi retail sales' => {
        service           => Client::Service::DSP_JBHIFIMUSIC,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB416
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
            },
        },
    },
    'junodigital retail sales' => {
        service           => Client::Service::DSP_JUNO,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'lastfm ad supported stream retail sales' => {
        service   => Client::Service::DSP_LASTFM,
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {    #FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'lastfm subscription stream retail sales' => {
        service   => Client::Service::DSP_LASTFM,
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {    #FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'media net download retail sales' => {
        service           => Client::Service::DSP_MEDIANET,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'media net subscription stream retail sales' => {
        service => Client::Service::DSP_MEDIANET,
        ''      => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'streams' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'media net free trial interactive stream retail sales' => {
        service                      => Client::Service::DSP_MEDIANET,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  #FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               #FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    #FB4674
                },
            },
        },
        '' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB5426
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5426
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5426
                },
            },
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  #FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               #FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    #FB4682
                },
            },
        },
    },
    'media net interactive stream retail sales' => {
        service                      => Client::Service::DSP_MEDIANET,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  #FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               #FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    #FB4674
                },
            },
        },
        '' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  #FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               #FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    #FB4682
                },
            },
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  #FB4682
                    format       => RPS::File::Sale::FORMAT_STREAM,               #FB4682
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    #FB4682
                },
            },
        },
    },
    'mixandburn retail sales' => {
        service           => Client::Service::DSP_MIXANDBURN,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB1538
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB1538
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB1538
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'mobile streams retail sales' => {
        service     => Client::Service::DSP_INGROOVES,    # FB3635
        'ringtones' => {
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
            },
        },
    },
    'musicload retail sales' => {
        service           => Client::Service::DSP_MUSICLOAD,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'music airport retail sales' => {
        service     => Client::Service::DSP_MUSICAIRPORT,
        'ringbacks' => {
            'ringback' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5361
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB5361
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5361
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5361
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB5361
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5361
                },
            },
        },
    },
    'musiwave download retail sales' => {
        service           => Client::Service::DSP_MUSIWAVE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {    # FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'musiwave subscription stream retail sales' => {
        service   => Client::Service::DSP_MUSIWAVE,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'musiwave retail sales' => {
        service           => Client::Service::DSP_MUSIWAVE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'musiwave ad supported stream retail sales' => {
        service   => Client::Service::DSP_MUSIWAVE,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'musiwave ad supported interactive stream retail sales' => {
        service                      => Client::Service::DSP_MUSIWAVE,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
    },
    'musiwave stream retail sales' => {
        service => Client::Service::DSP_MUSIWAVE,
        'track' => {
            format       => RPS::File::Sale::FORMAT_STREAM,
            product_type => RPS::File::Sale::TYPE_TRACK,
            media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
        },
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'musiwave interactive stream retail sales' => {
        service                      => Client::Service::DSP_MUSIWAVE,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
    },
    'myspace ad supported stream retail sales' => {
        service   => Client::Service::DSP_MYSPACE,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB719
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB719
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB719
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'myxer download retail sales' => {
        service           => Client::Service::DSP_MYXER,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'ringtones' => {
            'ringtone' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'napster download retail sales' => {
        service           => Client::Service::DSP_NAPSTER,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'napster subscription client retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        ''      => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5426
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5426
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5426
                },
            },
        },
    },
    'napster subscription portable retail sales' => {
        service => Client::Service::DSP_NAPSTER,
        ''      => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5426
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5426
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5426
                },
            },
        },
    },
    'napster subscription stream retail sales' => {
        service   => Client::Service::DSP_NAPSTER,
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'napster tethered download retail sales' => {
        service             => Client::Service::DSP_NAPSTER,
        'tethered download' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'nmusic retail sales' => {
        service           => Client::Service::DSP_NMUSIC,
        'track downloads' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4204
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB4204
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4204
                },
            },
        },
    },
    'nmusic stream retail sales' => {
        service   => Client::Service::DSP_NMUSIC,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4191
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4191
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4191
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4204
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB4204
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4204
                },
            },
        },
    },
    'nokia retail sales' => {
        service           => Client::Service::DSP_NOKIA,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'nokia stream retail sales' => {
        service   => Client::Service::DSP_NOKIA,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'video' => {
                'music video' => {    # FB1926
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'orange retail sales' => {
        service           => Client::Service::DSP_ORANGE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'pocket group mst retail sales' => {
        service           => Client::Service::DSP_POCKETGROUP,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            },
        },
    },
    'puretracks download retail sales' => {
        service           => Client::Service::DSP_PURETRACKS,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'puretracks subscription retail sales' => {
        service           => Client::Service::DSP_PURETRACKS,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB249
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB249
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB249
                },
            },
        },
    },
    'rdio retail sales' => {
        service           => Client::Service::DSP_RDIO,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB716 (changed from STREAM to DOWNLOAD)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB716
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB716
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB716
                },
            },
        },
    },
    'rdio download retail sales' => {
        service           => Client::Service::DSP_RDIO,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'rdio stream retail sales' => {
        service   => Client::Service::DSP_RDIO,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
    },
    'rdio interactive stream retail sales' => {
        service => Client::Service::DSP_RDIO,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4190
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4190
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4190
                },
            },
        },
    },
    'real networks international retail sales' => {
        service           => Client::Service::DSP_REAL,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'realnetworks retail sales' => {
        service           => Client::Service::DSP_REAL,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'rhapsody burn retail sales' => {
        service => Client::Service::DSP_REAL,
        ''      => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            },
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'rhapsody retail sales' => {
        service           => Client::Service::DSP_REAL,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'rhapsody download retail sales' => {
        service           => Client::Service::DSP_REAL,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4764
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4764
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4764
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4764
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4764
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4764
                },
            },
        },
    },
    'rhapsody stream retail sales' => {
        service   => Client::Service::DSP_REAL,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'rhapsody non-interactive stream retail sales' => {
        service                          => Client::Service::DSP_REAL,
        'non-interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
        '' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4672
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4672
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4672
                },
            },
        },
    },
    'rhapsody interactive stream retail sales' => {
        service                      => Client::Service::DSP_REAL,
        'interactive stream (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674
                },
            },
        },
        '' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4671
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4671
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4671
                },
            },
        },
    },
    'rhapsody subscription stream retail sales' => {
        service   => Client::Service::DSP_REAL,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            },
        },
    },
    'satelliterecords retail sales' => {
        service           => Client::Service::DSP_SATELLITE,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2814
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2814
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2814
                },
            },
        },
    },
    'sendme mobile mst subscription stream retail sales' => {
        service   => Client::Service::DSP_SENDME,
        'streams' => {
            'ringtone' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_RINGTONE,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'simfy on-demand retail sales' => {
        service           => Client::Service::DSP_SIMFY,
        'track downloads' => {
            'track' => {
                'audio album' => {    # FB1914
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'simfy on-demand stream retail sales' => {
        service   => Client::Service::DSP_SIMFY,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
    },
    'simfy pre-programmed retail sales' => {
        service           => Client::Service::DSP_SIMFY,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    'simfy pre-programmed stream retail sales' => {
        service   => Client::Service::DSP_SIMFY,
        'streams' => {
            'track' => {
                'audio album' => {                                                # FB2469
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'simfy stream retail sales' => {
        service   => Client::Service::DSP_SIMFY,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
    },
    'simfy retail sales' => {
        service           => Client::Service::DSP_SIMFY,
        'track downloads' => {
            'track' => {
                'audio album' => {                                                # FB1922
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'slacker ad supported radio retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'slacker ad supported pre-programmed stream retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5361
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5361
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5361
                },
            },
        },
    },
    'slacker ad supported stream retail sales' => {
        service   => Client::Service::DSP_SLACKERINC,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'slacker subscription radio retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'slacker subscription stream retail sales' => {
        service   => Client::Service::DSP_SLACKERINC,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'slacker subscription - premium pre-programmed stream retail sales' => {
        service => Client::Service::DSP_SLACKERINC,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5361
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5361
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB5361
                },
            },
        },
    },
    'spotify download retail sales' => {
        service           => Client::Service::DSP_SPOTIFY,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB17209 (was FORMAT_DOWNLOAD)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_TETHERED,             # FB17209 (was FORMAT_DOWNLOAD)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'spotify stream retail sales' => {
        service   => Client::Service::DSP_SPOTIFY,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674 & FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674 & FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674 & FB4562
                },
            },
        },
    },
    'spotify interactive stream retail sales' => {
        service => Client::Service::DSP_SPOTIFY,
        ''      => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4190
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4190
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4190
                },
            },
        },
    },
    'starzik retail sales' => {
        service           => Client::Service::DSP_STARZIK,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB416
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB416
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB416
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB416
                },
            },
        },
    },
    'telstra (big pond) retail sales' => {
        service           => Client::Service::DSP_TELSTRA_BIGPOND,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track download' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'thumbplay mst retail sales' => {
        service     => Client::Service::DSP_THUMBPLAY,
        'ringtones' => {
            'ringtone' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2104
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB2104
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2104
                },
            },
        },
    },
    't mobile ing mst download retail sales' => {
        service           => Client::Service::DSP_TMOBILE,
        'track downloads' => {
            'track' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3264
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3455
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3264
                },
            },
        },
    },
    't mobile ing rbt download retail sales' => {
        service           => Client::Service::DSP_TMOBILE,
        'track downloads' => {
            'track' => {
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3264
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3455
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3264
                },
            },
        },
    },
    'touchtunes retail sales' => {
        service           => Client::Service::DSP_TOUCHTUNES,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'trackitdown retail sales' => {
        service           => Client::Service::DSP_TRACKITDOWN,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'turntablefm stream retail sales' => {
        service   => Client::Service::DSP_TURNTABLE_FM_INC,
        'streams' => {
            'video' => {
                'music video' => {    # FB2377
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB2397
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB2397
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2397
                },
            },
        },
    },
    'vervelife retail sales' => {
        service           => Client::Service::DSP_VERVELIFE,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB3565
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3565
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3565
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'vevo interactive stream retail sales' => {
        service => Client::Service::DSP_VEVO,
        ''      => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB5361
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB5361
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB5361
                },
            },
        },
    },
    'vevo retail sales' => {
        service           => Client::Service::DSP_VEVO,
        'track downloads' => {
            'track' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'vevo stream retail sales' => {
        service   => Client::Service::DSP_VEVO,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB718
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB3673
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB3673
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3673
                },
            },
            'video' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
        'streaming (track)' => {
            'track' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4562
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4572
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4572
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4572
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4671
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4671
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4671
                },
            },
        },
    },
    'vidzone retail sales' => {
        service           => Client::Service::DSP_VIDZONEDIGITAL,
        'track downloads' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'videos' => {
            'video' => {
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
            },
        },
    },
    'virgin mega retail sales' => {
        service           => Client::Service::DSP_VIRGINMEGA,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'wasabeat retail sales' => {
        service           => Client::Service::DSP_WASABEAT,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB2950
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB2950
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB2950
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'we7 ad supported stream retail sales' => {
        service   => Client::Service::DSP_WE7,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'wirelessdeveloper agency download retail sales' => {
        service           => Client::Service::DSP_WDA,
        'track downloads' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'yandex retail sales' => {
        service           => Client::Service::DSP_YANDEX_LLC,
        'track downloads' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB242 (was FORMAT_STREAM)
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB242
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'master service tone/ ringback tone' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4204
                    format       => RPS::File::Sale::FORMAT_RINGTONE,             # FB4204
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4204
                },
            },
        },
    },
    'youtube interactive stream retail sales' => {
        service => Client::Service::DSP_YOUTUBE,
        ''      => {
            'video' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
    },
    'youtube stream retail sales' => {
        service   => Client::Service::DSP_YOUTUBE,
        'streams' => {
            'video' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            },
        },
        'streaming (music video)' => {
            'video' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4674 & FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4674 & FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4674 & FB4562
                },
                'music video' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4562
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4562
                    media        => RPS::DB::Item::MediaType::kMediaTypeVideo,    # FB4562
                },
            },
        },
    },
    'zunior retail sales' => {
        service           => Client::Service::DSP_ZUNIOR,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB3635
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB3635
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB3635
                },
            },
        },
    },
    'zvooq download retail sales' => {
        service           => Client::Service::DSP_ZVOOQ,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,                  # FB4385
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4385
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4385
                },
            },
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4190
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,             # FB4190
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4190
                },
            },
        },
    },
    'zvooq stream retail sales' => {
        service   => Client::Service::DSP_ZVOOQ,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB4190
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB4190
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB4190
                },
            },
        },
    },
    '24-7 retail sales' => {
        service           => Client::Service::DSP_247,
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        },
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        },
    },
    '24-7 download retail sales' => {
        service           => Client::Service::DSP_247,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        },
        'streams' => {
            'track' => {
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        },
    },
    '24-7 subscription download retail sales' => {
        service           => Client::Service::DSP_247,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                 # FB718
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,            # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio    # FB718,
                },
            }
        },
    },
    '24-7 stream retail sales' => {
        service   => Client::Service::DSP_247,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
                '' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,
                },
            }
        },
    },
    '24-7 subscription stream retail sales' => {
        service   => Client::Service::DSP_247,
        'streams' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,                  # FB718
                    format       => RPS::File::Sale::FORMAT_STREAM,               # FB718
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio,    # FB718
                },
            }
        },
    },

    # FB1019
    'stompy retail sales' => {
        service           => Client::Service::DSP_STOMPY,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_STREAM,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio
                },
            }
        },
    },

    # FB2917
    'whatpeopleplay download retail sales' => {
        service           => Client::Service::DSP_WHATPEOPLEPLAY,
        'track downloads' => {
            'track' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_TRACK,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio
                },
            }
        },
        'album downloads' => {
            'album' => {
                'audio album' => {
                    product_type => RPS::File::Sale::TYPE_ALBUM,
                    format       => RPS::File::Sale::FORMAT_DOWNLOAD,
                    media        => RPS::DB::Item::MediaType::kMediaTypeAudio
                },
            }
        },
    },
);

my %countries = (
    'US Virgin Islands'                    => 'Virgin Islands, U.S.',
    'British Virgin Islands'               => 'Virgin Islands, British',
    'European Economic and Monetary Union' => 'European Union',
    'Kyrgyz Republic'                      => 'Kyrgyzstan',
    'Micronesia,Federated States of'       => 'Micronesia, Federated States of',
);

sub _getServiceFormat {
    my ( $self, $retailer, $salesType, $assetType, $productType ) = @_;

    # 'retailer' is a servicename; if it has a 3-character country
    # code attached to it then remove the country code (FB16728)
    #
    $retailer = $1 if ( $retailer =~ m/(.*) ([A-Z]{3})$/ );

    if ( $retailer =~ /^soundexchange/i ) {
        return $self->handleError( "Cannot process $retailer", RPS::DB::Item::SaleImportError::kErrorNonqualifying );
    }

    $retailer    = lc $retailer;
    $salesType   = lc $salesType;
    $assetType   = lc $assetType;
    $productType = lc $productType;

    my $_serviceID   = $gServiceFormatMap{$retailer}{service};
    my $_formatID    = $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{format};
    my $_productType = $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{product_type};
    my $_mediaType   = $gServiceFormatMap{$retailer}{$salesType}{$assetType}{$productType}{media};

    if ( !$_productType ) {
        my $path     = "retailer($retailer)/salesType($salesType)/asset($assetType)/productType($productType)";
        my $filename = $self->filename;
        print STDERR "INGroovesBase2013:_getServiceFormat: didn't find $path in gServiceFormatMap for file $filename\n";

        #        print STDERR "##### ". Dumper( \%{$gServiceFormatMap{$retailer}} ) . "\n";
    }

    return ( $_serviceID, $_formatID, $_productType, $_mediaType );
}

sub _getAlternateCountryName {
    my ( $self, $name ) = @_;
    return ( exists $countries{$name} ) ? $countries{$name} : undef;
}

sub _getDateBegin {
    my $self   = shift;
    my $period = $self->SUPER::_getDateBegin;

    if ( $period =~ /^P(\d\d) (\d\d)/i )    # PMM YY (Jan 13)
    {
        my ( $month, $year ) = ( $1, $2 );
        return '20' . $year . '-' . $month . '-01';
    }

    if ($period) {
        return $period;
    }

    return $self->handleError( "Date not set", RPS::DB::Item::SaleImportError::kErrorNonqualifying );
}

sub _getDateEnd {
    my $self = shift;

    return $self->_getDateBegin;
}

###
1;    # Play nicely.
###
