def METHOD_NAME(args, pacu_main):
    session = pacu_main.get_active_session()
    args = parser.parse_args(args)
    print = pacu_main.print
    input = pacu_main.input
    fetch_data = pacu_main.fetch_data
    get_regions = pacu_main.get_regions
    data = {'detectors': [], 'ip_sets': []}
    if args.targets:
        detectors = []
        regions = []
        targets = args.targets.split(',')
        for target in targets:
            id, region = target.split('@')
            detectors.append({'Id': id, 'Region': region})
            regions.append(region)
        regions = list(set(regions))
    else:
        regions = get_regions('GuardDuty')
        if fetch_data(['GuardDuty', 'Detectors'], module_info['prerequisite_modules'][0], '--guard-duty') is False:
            print('Pre-req module failed.')
            return
        detectors = copy.deepcopy(session.GuardDuty['Detectors'])
    for region in regions:
        client = pacu_main.get_boto3_client('guardduty', region)
        for detector in detectors:
            if detector['Region'] == region:
                print(' ({}) Detector {}:'.format(region, detector['Id']))
                data['detectors'].append(detector)
                try:
                    response = client.create_ip_set(
                        Activate=True,
                        DetectorId=detector['Id'],
                        Format='TXT',
                        Location=args.path,
                        Name=''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(10))
                    )
                    ip_set_id = response['IpSetId']
                    data['ip_sets'].append(ip_set_id)
                    print('    Created IPSet: {}'.format(ip_set_id))
                except ClientError as error:
                    if 'an attempt to create resources beyond the current AWS account limits' in str(error):
                        print('    Error: Existing IPSet found')
                        print('    WARNING: Replacing an existing IPSet could have unintended bad consequences on the target environment. Proceed at your own risk.\n')
                        remove = input('Try to replace the IPSet? (y/n) ')
                        if remove.strip() == 'y':
                            try:
                                response = client.list_ip_sets(
                                    DetectorId=detector['Id']
                                )
                                # There is a max of one IPSet per detector
                                existing_ip_set_id = response['IpSetIds'][0]
                                client.update_ip_set(
                                    Activate=True,
                                    DetectorId=detector['Id'],
                                    Location=args.path,
                                    IpSetId=existing_ip_set_id
                                )
                                print('      Replaced IPSet {}...\n'.format(existing_ip_set_id))
                                data['ip_sets'].append(existing_ip_set_id)
                            except ClientError as error:
                                print('      Error: {}'.format(str(error)))
                    else:
                        print('      Error: {}'.format(str(error)))
    return data