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.
###
