async def offline_intervals(self, cd_ids: Union[str, Sequence[str]]) -> dict:
        """
        Return default non-revocation intervals for input cred def ids, based on content of revocation cache,
        for augmentation into specification for Verifier.build_proof_req_json. Note that the close() call
        to set the anchor off-line extends all revocation cache registry delta entries to its time of execution:
        in this case, the intervals will all be single timestamps rather than (to, fro) pairs.

        Raise CacheIndex if proof request cites credential definition without corresponding
        content in cred def cache or revocation cache.

        :param cd_ids: credential definition identifier or sequence thereof
        :return: dict mapping revocable cred def ids to interval specifications to augment into cd_id2spec
            parameter for Verifier.build_proof_req_json(), and non-revocable cred def ids to empty dict; e.g.,

        ::

            {
                'Vx4E82R17q...:3:CL:16:tag': {
                    'interval': (1528111730, 1528115832)
                },
                'R17v42T4pk...:3:CL:19:tag': {},
                'Z9ccax812j...:3:CL:27:tag': {
                    'interval': (1528112408, 1528116008)
                },
                '9cHbp54C8n...:3:CL:37:tag': {
                    'interval': 1528116426
                },
                '6caBcmLi33...:tag:CL:41:tag': {},
                ...
            }
        """

        LOGGER.debug('HolderProver.offline_intervals >>> cd_ids: %s', cd_ids)

        rv = {}
        for cd_id in [cd_ids] if isinstance(cd_ids, str) else cd_ids:
            if not ok_cred_def_id(cd_id):
                LOGGER.debug('HolderProver.offline_intervals <!< Bad cred def id %s', cd_id)
                raise BadIdentifier('Bad cred def id {}'.format(cd_id))

            try:
                cred_def = json.loads(await self.get_cred_def(cd_id))
            except ClosedPool:
                LOGGER.debug('HolderProver.offline_intervals <!< no such cred def %s in cred def cache', cd_id)
                raise CacheIndex('No cached delta for non-revoc interval on {}'.format(cd_id))

            rv[cd_id] = {}
            if 'revocation' in cred_def['value']:
                with REVO_CACHE.lock:
                    (fro, to) = REVO_CACHE.dflt_interval(cd_id)
                    if not (fro and to):
                        LOGGER.debug(
                            'HolderProver.offline_intervals <!< no cached delta for non-revoc interval on %s',
                            cd_id)
                        raise CacheIndex('No cached delta for non-revoc interval on {}'.format(cd_id))

                    rv[cd_id]['interval'] = to if fro == to else (fro, to)

        LOGGER.debug('HolderProver.offline_intervals <<< %s', rv)
        return rv