from typing import TypeVar, Generic, List
from copy import deepcopy
from random import Random
T = TypeVar('T')


class Dealer(Generic[T]):
    cards: List[T]
    random: Random

    def __init__(self):
        self.reset()

    def get_full_deck(self) ->List[T]:
        raise NotImplementedError()

    def draw_card(self):
        return self.cards.pop(self.random.randint(0, len(self.cards) - 1))

    def reset(self, seed=None):
        self.random = Random()
        self.random.seed(seed)
        self.cards = deepcopy(self.get_full_deck())

4e4e154938743f30ff51b523962f5a84a9fc43bc
<mask token>


class Dealer(Generic[T]):
    cards: List[T]
    random: Random

    def __init__(self):
        self.reset()

    def get_full_deck(self) ->List[T]:
        raise NotImplementedError()
    <mask token>

    def reset(self, seed=None):
        self.random = Random()
        self.random.seed(seed)
        self.cards = deepcopy(self.get_full_deck())

<mask token>


class Dealer(Generic[T]):
    cards: List[T]
    random: Random

    def __init__(self):
        self.reset()

    def get_full_deck(self) ->List[T]:
        raise NotImplementedError()

    def draw_card(self):
        return self.cards.pop(self.random.randint(0, len(self.cards) - 1))

    def reset(self, seed=None):
        self.random = Random()
        self.random.seed(seed)
        self.cards = deepcopy(self.get_full_deck())

<mask token>
T = TypeVar('T')


class Dealer(Generic[T]):
    cards: List[T]
    random: Random

    def __init__(self):
        self.reset()

    def get_full_deck(self) ->List[T]:
        raise NotImplementedError()

    def draw_card(self):
        return self.cards.pop(self.random.randint(0, len(self.cards) - 1))

    def reset(self, seed=None):
        self.random = Random()
        self.random.seed(seed)
        self.cards = deepcopy(self.get_full_deck())

from typing import TypeVar, Generic, List
from copy import deepcopy
from random import Random
T = TypeVar('T')


class Dealer(Generic[T]):
    cards: List[T]
    random: Random

    def __init__(self):
        self.reset()

    def get_full_deck(self) ->List[T]:
        raise NotImplementedError()

    def draw_card(self):
        return self.cards.pop(self.random.randint(0, len(self.cards) - 1))

    def reset(self, seed=None):
        self.random = Random()
        self.random.seed(seed)
        self.cards = deepcopy(self.get_full_deck())
